Compare commits
21 Commits
main
...
dev-luannv
Author | SHA1 | Date | |
---|---|---|---|
020432d5ac | |||
3f99958fe3 | |||
898df6743a | |||
dd559629ab | |||
1453e75f9a | |||
7227d5d56c | |||
85fc9a62af | |||
a87a8262f4 | |||
481434a144 | |||
524023b3e1 | |||
cb2d4e2e91 | |||
dca6673a11 | |||
15aa03b1c1 | |||
bbd037dcb4 | |||
0ad898769d | |||
bcf4015cae | |||
dd9739bf74 | |||
ab702c4495 | |||
edab77d0c6 | |||
e2f7ab5113 | |||
eedbf94d56 |
1
.gitignore
vendored
@ -88,3 +88,4 @@ sw.*
|
||||
|
||||
# Vim swap files
|
||||
*.swp
|
||||
.history
|
||||
|
20
assets/css/Oxanium.css
Normal file
@ -0,0 +1,20 @@
|
||||
@font-face {
|
||||
font-family: 'Oxanium';
|
||||
font-weight: 700;
|
||||
src: local('Oxanium Bold'),
|
||||
url('../font/Oxanium/Oxanium-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Oxanium';
|
||||
font-weight: 500;
|
||||
src: local('Oxanium Medium'),
|
||||
url('../font/Oxanium/Oxanium-Medium.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Oxanium';
|
||||
font-weight: 300;
|
||||
src: local('Oxanium Light'),
|
||||
url('../font/Oxanium/Oxanium-Light.ttf') format('truetype');
|
||||
}
|
BIN
assets/font/Oxanium/Oxanium-Bold.ttf
Normal file
BIN
assets/font/Oxanium/Oxanium-ExtraBold.ttf
Normal file
BIN
assets/font/Oxanium/Oxanium-ExtraLight.ttf
Normal file
BIN
assets/font/Oxanium/Oxanium-Light.ttf
Normal file
BIN
assets/font/Oxanium/Oxanium-Medium.ttf
Normal file
BIN
assets/font/Oxanium/Oxanium-Regular.ttf
Normal file
BIN
assets/font/Oxanium/Oxanium-SemiBold.ttf
Normal file
BIN
assets/images/arrow_datepicker.png
Normal file
After Width: | Height: | Size: 177 B |
BIN
assets/images/arrow_datepicker_dm.png
Normal file
After Width: | Height: | Size: 183 B |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
assets/images/logo_dm_rm.png
Normal file
After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 3.8 KiB |
5
assets/images/logo_lm.svg
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
assets/images/logo_lm_rm.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
assets/scss/common.zip
Normal file
@ -1,40 +1,54 @@
|
||||
.v-btn {
|
||||
background-color: #144985;
|
||||
background-color: #1677ff;
|
||||
|
||||
&:not(.v-btn--round) {
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
&-radius {
|
||||
&__20 {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
|
||||
&__50per {
|
||||
border-radius: 50% !important;
|
||||
}
|
||||
}
|
||||
|
||||
&__full {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&__round {
|
||||
min-width: 100px !important;
|
||||
padding: 8px 25px !important;
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
|
||||
&__excel {
|
||||
background-color: #47535c !important;
|
||||
}
|
||||
|
||||
&-bg {
|
||||
&__transparent {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
&__blue {
|
||||
background-color: $--color-primary__blue;
|
||||
}
|
||||
|
||||
&__white-blue {
|
||||
background-color: $--color-white;
|
||||
color: $--color-primary__blue;
|
||||
}
|
||||
}
|
||||
|
||||
&__transparent {
|
||||
border: 0;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
&.v-btn--icon.v-btn--tile {
|
||||
border-radius: 4px;
|
||||
}
|
||||
@ -42,16 +56,18 @@
|
||||
|
||||
@each $theme in dark, light {
|
||||
@include theme($theme);
|
||||
|
||||
.v-application.#{$theme}-mode {
|
||||
.v-btn-bg__w-g5 {
|
||||
background-color: $--theme-color-w-g5;
|
||||
|
||||
i {
|
||||
color: $--theme-color-g5-w;
|
||||
}
|
||||
}
|
||||
|
||||
.v-btn {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-btn-backgroundColor"
|
||||
);
|
||||
@ -59,8 +75,7 @@
|
||||
|
||||
&.v-btn--disabled {
|
||||
opacity: 0.4;
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-btn-backgroundColor"
|
||||
) !important;
|
||||
@ -71,5 +86,76 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.basic-button {
|
||||
color: map-deep-get($config, #{$theme}, "basic-button-color");
|
||||
background: map-deep-get($config, #{$theme}, "basic-button-background");
|
||||
}
|
||||
|
||||
.search-button {
|
||||
color: map-deep-get($config, #{$theme}, "search-btn-color");
|
||||
}
|
||||
|
||||
.v-dialog {
|
||||
.ant-btn-icon-only {
|
||||
color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"icon-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
.ant-btn {
|
||||
|
||||
&.ant-btn-outlined {
|
||||
color:map-deep-get($config, #{$theme}, "ant-btn-default-color");
|
||||
border:1px solid map-deep-get($config, #{$theme}, "ant-btn-default-border-outlined");
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
&.ant-btn-primary {
|
||||
background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
|
||||
border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
|
||||
color:map-deep-get($config, #{$theme}, "ant-btn-primary-color");
|
||||
}
|
||||
|
||||
&.ant-btn-default {
|
||||
background:map-deep-get($config, #{$theme}, "ant-btn-default-bg");
|
||||
color:map-deep-get($config, #{$theme}, "ant-btn-default-color");
|
||||
}
|
||||
|
||||
&.ant-btn-danger {
|
||||
&.ant-btn-background-ghost {
|
||||
color:map-deep-get($config, #{$theme}, "ant-btn-danger-color");
|
||||
border-color:map-deep-get($config, #{$theme}, "ant-btn-danger-border");
|
||||
background: map-deep-get($config, #{$theme}, "ant-btn-danger-bg") !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-application {
|
||||
.ant-btn {
|
||||
border-radius: 6px;
|
||||
&.ant-btn-lg {
|
||||
border-radius: 8px;
|
||||
}
|
||||
&.ant-btn-default {
|
||||
border:none !important
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.v-dialog {
|
||||
.ant-btn-icon-only {
|
||||
border: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background:none;
|
||||
}
|
||||
}
|
@ -3,13 +3,43 @@
|
||||
}
|
||||
|
||||
@each $theme in dark, light {
|
||||
|
||||
// @include theme($theme);
|
||||
.v-application.#{$theme}-mode {
|
||||
.v-card {
|
||||
color: map-deep-get($config, #{$theme}, "card-default-color");
|
||||
background-color: map-deep-get($config, #{$theme}, "cardBackground");
|
||||
|
||||
.v-card__subtitle {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: map-deep-get($config, #{$theme}, "card-subtitle");
|
||||
}
|
||||
|
||||
.v-card__title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
line-height: 28px;
|
||||
color: map-deep-get($config, #{$theme}, "card-title-color") !important;
|
||||
}
|
||||
|
||||
.card-text-info {
|
||||
font-family: "Oxanium", sans-serif;
|
||||
font-weight: 500;
|
||||
font-size: 24px;
|
||||
line-height: 24px;
|
||||
letter-spacing: 0;
|
||||
color: map-deep-get($config, #{$theme}, "card-text-info-color");
|
||||
}
|
||||
|
||||
.card-text-title {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
letter-spacing: 0;
|
||||
color: map-deep-get($config, #{$theme}, "card-text-title-color");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -11,9 +11,10 @@
|
||||
width: 100%;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
&-content-area {
|
||||
width: 100%;
|
||||
border: 0;
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
// &-body-container {
|
||||
@ -33,6 +34,7 @@
|
||||
}
|
||||
|
||||
&-rside-area {
|
||||
|
||||
.tui-grid-header-area,
|
||||
.tui-grid-summary-area {
|
||||
margin-right: $scrollbar-width;
|
||||
@ -40,27 +42,41 @@
|
||||
}
|
||||
|
||||
&-border-line-top,
|
||||
&-border-line-bottom,
|
||||
&-border-line-right {
|
||||
&-border-line-bottom {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
&-cell {
|
||||
border-width: 1px !important;
|
||||
}
|
||||
|
||||
&-cell-header {
|
||||
border-top: 0;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
&-cell-header,
|
||||
&-cell-content,
|
||||
&-cell.tui-grid-cell-summary {
|
||||
font-family: "Spoqa Han Sans Neo";
|
||||
// font-family: "Spoqa Han Sans Neo";
|
||||
font-size: 0.875rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.25rem;
|
||||
letter-spacing: 0.0178571429em;
|
||||
}
|
||||
|
||||
&-cell-content {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tui-grid-table{
|
||||
.tui-grid-cell-header,
|
||||
.tui-grid-cell-has-input .tui-grid-cell-content {
|
||||
padding: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.treeGrid {
|
||||
.tui-grid {
|
||||
&-header-area {
|
||||
@ -73,22 +89,58 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.tui-grid-scrollbar-right-top{
|
||||
z-index:5;
|
||||
|
||||
.tui-grid-scrollbar-right-top {
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
@each $theme in dark, light {
|
||||
@include theme($theme);
|
||||
|
||||
.v-application.#{$theme}-mode {
|
||||
.tui-grid {
|
||||
&-table {
|
||||
border: 1px solid;
|
||||
border-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"scrollbar-track"
|
||||
);
|
||||
|
||||
.tui-grid-cell {
|
||||
border-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-borderColor-darkmode"
|
||||
);
|
||||
border-style: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-borderStyle-darkmode"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
&-border-line-right{
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
&-body-container{
|
||||
border-right: 1px solid;
|
||||
border-right-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-borderColor"
|
||||
);
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
&-container,
|
||||
&-summary-area {
|
||||
font-family: Inter;
|
||||
// color: #000000E0;
|
||||
|
||||
& ::-webkit-scrollbar {
|
||||
width: $scrollbar-width !important;
|
||||
height: $scrollbar-width !important;
|
||||
-webkit-appearance: initial;
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"scrollbar-track"
|
||||
) !important;
|
||||
@ -96,8 +148,7 @@
|
||||
}
|
||||
|
||||
& ::-webkit-scrollbar-track {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"scrollbar-track"
|
||||
) !important;
|
||||
@ -109,6 +160,16 @@
|
||||
background-color: map-deep-get($config, #{$theme}, "scrollbar-thumb");
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.tui-grid-cell {
|
||||
|
||||
&.tui-grid-cell-summary {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-rside-area {
|
||||
@ -121,26 +182,28 @@
|
||||
}
|
||||
|
||||
&-scrollbar-right-top {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"tui-grid-header-backgroundColor"
|
||||
);
|
||||
border-left-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"tui-grid-border-horziontal-color"
|
||||
);
|
||||
border-right-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"tui-grid-border-horziontal-color"
|
||||
);
|
||||
border-bottom-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"tui-grid-border-vertical-color"
|
||||
);
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
border: none;
|
||||
// background-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "tui-grid-header-backgroundColor"
|
||||
// );
|
||||
// border-left-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "tui-grid-border-horziontal-color"
|
||||
// );
|
||||
// border-right-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "tui-grid-border-horziontal-color"
|
||||
// );
|
||||
// border-bottom-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "tui-grid-border-vertical-color"
|
||||
// );
|
||||
}
|
||||
|
||||
&-scrollbar-right-bottom {
|
||||
@ -162,25 +225,63 @@
|
||||
border-color: transparent !important;
|
||||
}
|
||||
|
||||
&-body-area {
|
||||
overflow: auto !important;
|
||||
}
|
||||
// &-body-area {
|
||||
// overflow: auto !important;
|
||||
// }
|
||||
|
||||
&-container,
|
||||
&-layer-state,
|
||||
&-body-area,
|
||||
&-summary-area,
|
||||
&-cell {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-backgroundColor"
|
||||
);
|
||||
border-color: map-deep-get(
|
||||
$config,
|
||||
border-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-cell {
|
||||
&:last-child {
|
||||
padding-right: 1px;
|
||||
border-right: 1px solid ;
|
||||
border-right-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-borderColor"
|
||||
);
|
||||
.tui-grid-cell-content {
|
||||
border-right: 1px solid ;
|
||||
border-right-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-borderColor"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-cell-summary {
|
||||
@ -189,17 +290,27 @@
|
||||
|
||||
&-header-area,
|
||||
&-cell-header {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
// font-family: inherit;
|
||||
font-weight: 600;
|
||||
font-style: Semi Bold;
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-header-backgroundColor"
|
||||
);
|
||||
border-color: map-deep-get(
|
||||
$config,
|
||||
border-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-border-vertical-color"
|
||||
);
|
||||
color: map-deep-get($config, #{$theme}, "activate");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-header-color"
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
&-header-area {
|
||||
background-color: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
&-row-odd,
|
||||
@ -209,9 +320,8 @@
|
||||
}
|
||||
|
||||
&:hover {
|
||||
> .tui-grid-cell {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
>.tui-grid-cell {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-hover-backgroundColor"
|
||||
);
|
||||
@ -221,33 +331,33 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&-cell {
|
||||
&.row-insert {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-insert-color"
|
||||
);
|
||||
}
|
||||
|
||||
&.row-modify {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-modify-color"
|
||||
);
|
||||
}
|
||||
|
||||
&.row-removed {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-removed-color"
|
||||
);
|
||||
}
|
||||
|
||||
&.row-disabled {
|
||||
color: map-deep-get(
|
||||
$config,
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-disabled-color"
|
||||
);
|
||||
@ -256,9 +366,9 @@
|
||||
color: map-deep-get($config, #{$theme}, "tui-grid-cell-disabled-color");
|
||||
}
|
||||
}
|
||||
|
||||
&.row-selected {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-selected-color"
|
||||
);
|
||||
@ -284,15 +394,14 @@
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
.tui-grid-tree-depth
|
||||
{
|
||||
.tui-grid-tree-depth {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
position: relative;
|
||||
left: 0 !important;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
&-btn-tree {
|
||||
@ -303,6 +412,7 @@
|
||||
margin-right: 6px;
|
||||
top: 0;
|
||||
left: 0 !important;
|
||||
|
||||
i {
|
||||
margin-top: 0;
|
||||
}
|
||||
@ -311,15 +421,19 @@
|
||||
&-tree-icon {
|
||||
margin-top: 0;
|
||||
top: 0;
|
||||
|
||||
i {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-left: 0;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 0;
|
||||
@if $theme == dark {
|
||||
|
||||
@if $theme ==dark {
|
||||
background-image: url("data:image/svg+xml,%3Csvg id='ico_tree_item' xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cdefs%3E%3Cstyle%3E .cls-1, .cls-4 %7B fill: none; %7D .cls-1 %7B stroke: %23fff; opacity: 0.3; %7D .cls-2 %7B fill: %23fff; %7D .cls-3 %7B stroke: none; %7D %3C/style%3E%3C/defs%3E%3Cg id='사각형_703' data-name='사각형 703' class='cls-1'%3E%3Crect class='cls-3' width='16' height='16' rx='3'/%3E%3Crect class='cls-4' x='0.5' y='0.5' width='15' height='15' rx='2.5'/%3E%3C/g%3E%3Crect id='사각형_1384' data-name='사각형 1384' class='cls-2' width='8' height='1' rx='0.5' transform='translate(4 4.5)'/%3E%3Crect id='사각형_1386' data-name='사각형 1386' class='cls-2' width='8' height='1' rx='0.5' transform='translate(4 7.5)'/%3E%3Crect id='사각형_1387' data-name='사각형 1387' class='cls-2' width='8' height='1' rx='0.5' transform='translate(4 10.5)'/%3E%3C/svg%3E%0A");
|
||||
} @else {
|
||||
}
|
||||
|
||||
@else {
|
||||
background-image: url("data:image/svg+xml,%3Csvg id='ico_tree_item' xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cdefs%3E%3Cstyle%3E .cls-2%7Bfill:%23a4aac3%7D %3C/style%3E%3C/defs%3E%3Cg id='사각형_703' data-name='사각형 703' style='stroke:%23a4aac3;fill:none'%3E%3Crect width='16' height='16' rx='3' style='stroke:none'/%3E%3Crect x='.5' y='.5' width='15' height='15' rx='2.5' style='fill:none'/%3E%3C/g%3E%3Crect id='사각형_1384' data-name='사각형 1384' class='cls-2' width='8' height='1' rx='.5' transform='translate(4 4.5)'/%3E%3Crect id='사각형_1386' data-name='사각형 1386' class='cls-2' width='8' height='1' rx='.5' transform='translate(4 7.5)'/%3E%3Crect id='사각형_1387' data-name='사각형 1387' class='cls-2' width='8' height='1' rx='.5' transform='translate(4 10.5)'/%3E%3C/svg%3E%0A");
|
||||
}
|
||||
}
|
||||
@ -331,10 +445,13 @@
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-position: 0 0;
|
||||
@if $theme == dark {
|
||||
background-image: url("data:image/svg+xml,%3Csvg id='btn_tree_item_close' xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cdefs%3E%3Cstyle%3E .cls-1 %7B fill: %230d0f17; stroke: %23fff; opacity: 0.3; %7D .cls-2 %7B fill: %23fff; %7D .cls-3 %7B stroke: none; %7D .cls-4 %7B fill: none; %7D %3C/style%3E%3C/defs%3E%3Cg id='사각형_703' data-name='사각형 703' class='cls-1'%3E%3Crect class='cls-3' width='16' height='16' rx='3'/%3E%3Crect class='cls-4' x='0.5' y='0.5' width='15' height='15' rx='2.5'/%3E%3C/g%3E%3Crect id='사각형_1384' data-name='사각형 1384' class='cls-2' width='8' height='2' rx='1' transform='translate(4 7)'/%3E%3C/svg%3E%0A");
|
||||
} @else {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cg data-name='사각형 703' style='fill:%23f1f3f9;stroke:%23a4aac3'%3E%3Crect width='16' height='16' rx='3' style='stroke:none'/%3E%3Crect x='.5' y='.5' width='15' height='15' rx='2.5' style='fill:none'/%3E%3C/g%3E%3Crect data-name='사각형 1384' width='8' height='2' rx='1' transform='translate(4 7)' style='fill:%23a4aac3'/%3E%3C/svg%3E ");
|
||||
|
||||
@if $theme ==dark {
|
||||
background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Crect%20width%3D%2216%22%20height%3D%2216%22%20rx%3D%224%22%20fill%3D%22%23212224%22/%3E%3Crect%20x%3D%220.5%22%20y%3D%220.5%22%20width%3D%2215%22%20height%3D%2215%22%20rx%3D%223.5%22%20stroke%3D%22white%22%20stroke-opacity%3D%220.06%22/%3E%3Cpath%20d%3D%22M12.5998%208H2.99979%22%20stroke%3D%22white%22%20stroke-opacity%3D%220.85%22/%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
@else {
|
||||
background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Crect%20width%3D%2216%22%20height%3D%2216%22%20rx%3D%224%22%20fill%3D%22white%22/%3E%3Crect%20x%3D%220.5%22%20y%3D%220.5%22%20width%3D%2215%22%20height%3D%2215%22%20rx%3D%223.5%22%20stroke%3D%22black%22%20stroke-opacity%3D%220.06%22/%3E%3Cpath%20d%3D%22M12.5997%208H2.99973%22%20stroke%3D%22black%22%20stroke-opacity%3D%220.88%22/%3E%3C/svg%3E");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -346,10 +463,13 @@
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-position: 0 0;
|
||||
@if $theme == dark {
|
||||
background-image: url("data:image/svg+xml,%3Csvg id='btn_tree_item_open' xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cdefs%3E%3Cstyle%3E .cls-2%7Bfill:%23fff%7D %3C/style%3E%3C/defs%3E%3Cg id='사각형_703' data-name='사각형 703' style='fill:%230d0f17;stroke:%23fff;opacity:.3'%3E%3Crect width='16' height='16' rx='3' style='stroke:none'/%3E%3Crect x='.5' y='.5' width='15' height='15' rx='2.5' style='fill:none'/%3E%3C/g%3E%3Crect id='사각형_1384' data-name='사각형 1384' class='cls-2' width='8' height='2' rx='1' transform='translate(4 7)'/%3E%3Crect id='사각형_1385' data-name='사각형 1385' class='cls-2' width='2' height='8' rx='1' transform='translate(7 4)'/%3E%3C/svg%3E%0A");
|
||||
} @else {
|
||||
background-image: url("data:image/svg+xml,%3Csvg id='btn_tree_item_open' xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cdefs%3E%3Cstyle%3E .cls-2%7Bfill:%23a4aac3%7D %3C/style%3E%3C/defs%3E%3Cg id='사각형_703' data-name='사각형 703' style='fill:%23f1f3f9;stroke:%23a4aac3'%3E%3Crect width='16' height='16' rx='3' style='stroke:none'/%3E%3Crect x='.5' y='.5' width='15' height='15' rx='2.5' style='fill:none'/%3E%3C/g%3E%3Crect id='사각형_1384' data-name='사각형 1384' class='cls-2' width='8' height='2' rx='1' transform='translate(4 7)'/%3E%3Crect id='사각형_1385' data-name='사각형 1385' class='cls-2' width='2' height='8' rx='1' transform='translate(7 4)'/%3E%3C/svg%3E ");
|
||||
|
||||
@if $theme ==dark {
|
||||
background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Crect%20width%3D%2216%22%20height%3D%2216%22%20rx%3D%224%22%20fill%3D%22%23212224%22/%3E%3Crect%20x%3D%220.5%22%20y%3D%220.5%22%20width%3D%2215%22%20height%3D%2215%22%20rx%3D%223.5%22%20stroke%3D%22white%22%20stroke-opacity%3D%220.06%22/%3E%3Cpath%20d%3D%22M7.7998%203.00073V12.6007%22%20stroke%3D%22white%22%20stroke-opacity%3D%220.85%22/%3E%3Cpath%20d%3D%22M12.5999%207.80078L2.99985%207.80078%22%20stroke%3D%22white%22%20stroke-opacity%3D%220.85%22/%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
@else {
|
||||
background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Crect%20width%3D%2216%22%20height%3D%2216%22%20rx%3D%224%22%20fill%3D%22white%22/%3E%3Crect%20x%3D%220.5%22%20y%3D%220.5%22%20width%3D%2215%22%20height%3D%2215%22%20rx%3D%223.5%22%20stroke%3D%22black%22%20stroke-opacity%3D%220.06%22/%3E%3Cpath%20d%3D%22M7.7998%203.00073V12.6007%22%20stroke%3D%22black%22%20stroke-opacity%3D%220.88%22/%3E%3Cpath%20d%3D%22M12.5997%207.80078L2.99973%207.80078%22%20stroke%3D%22black%22%20stroke-opacity%3D%220.88%22/%3E%3C/svg%3E");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -373,4 +493,4 @@
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +1,82 @@
|
||||
.v-select__custom {
|
||||
&.v-text-field.v-text-field--solo:not(.v-text-field--solo-flat)
|
||||
> .v-input__control
|
||||
> .v-input__slot {
|
||||
&.v-text-field.v-text-field--solo:not(.v-text-field--solo-flat)>.v-input__control>.v-input__slot {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
&.v-text-field.v-text-field--solo .v-input__control {
|
||||
min-height: 36px;
|
||||
height: 36px;
|
||||
min-height: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
&.v-input input {
|
||||
min-height: 36px;
|
||||
height: 36px;
|
||||
min-height: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.v-input--selection-controls {
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.v-input__slot {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
height: 36px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
&.v-text-field .v-input__control {
|
||||
border-color: #d9d9d9;
|
||||
}
|
||||
|
||||
&.select-large {
|
||||
|
||||
.v-input__slot,
|
||||
.v-input__control {
|
||||
height: 40px !important;
|
||||
// border: solid 1px #D9D9D9;
|
||||
border-radius: 8px !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
legend {
|
||||
width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__custom {
|
||||
.v-input__slot {
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__slot {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
&.input-large {
|
||||
border-radius: 8px !important;
|
||||
|
||||
input {
|
||||
max-height: 40px;
|
||||
height: 40px;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
&.v-text-field .v-input__control {
|
||||
border-color: #d9d9d9;
|
||||
}
|
||||
|
||||
&.surface-name {
|
||||
fieldset {
|
||||
max-width: 345px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-text-field .v-input__append-inner,
|
||||
@ -45,20 +87,21 @@
|
||||
|
||||
|
||||
.v-select__widget {
|
||||
&.v-text-field.v-text-field--solo:not(.v-text-field--solo-flat)
|
||||
> .v-input__control
|
||||
> .v-input__slot {
|
||||
&.v-text-field.v-text-field--solo:not(.v-text-field--solo-flat)>.v-input__control>.v-input__slot {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
&.v-text-field.v-text-field--solo .v-input__control {
|
||||
min-height: 30px !important;
|
||||
height: 30px !important;
|
||||
}
|
||||
|
||||
&.v-input input {
|
||||
min-height: 30px !important;
|
||||
height: 30px !important;
|
||||
}
|
||||
&.v-text-field--outlined > .v-input__control > .v-input__slot {
|
||||
|
||||
&.v-text-field--outlined>.v-input__control>.v-input__slot {
|
||||
align-items: stretch;
|
||||
min-height: 30px;
|
||||
}
|
||||
@ -67,6 +110,7 @@
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.v-input__slot {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
@ -79,20 +123,23 @@
|
||||
width: 110px;
|
||||
height: 30px;
|
||||
flex: 0 0 auto;
|
||||
|
||||
&.v-text-field.v-text-field--solo .v-input__control {
|
||||
min-height: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.v-text-field > .v-input__control > .v-input__slot:after,
|
||||
.v-text-field > .v-input__control > .v-input__slot:before {
|
||||
|
||||
.v-text-field>.v-input__control>.v-input__slot:after,
|
||||
.v-text-field>.v-input__control>.v-input__slot:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.v-input__slot {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.v-input {
|
||||
margin-top: 0 !important;
|
||||
padding-top: 0 !important;
|
||||
@ -104,25 +151,127 @@
|
||||
}
|
||||
}
|
||||
|
||||
.v-main {
|
||||
|
||||
.ant-input,
|
||||
.ant-input-affix-wrapper>input,
|
||||
.ant-select-selection {
|
||||
border-radius: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-radio {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-left: 28px;
|
||||
margin: 10px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.custom-radio input[type="radio"] {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
/* Custom radio appearance */
|
||||
.radio-mark {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
background-color: white;
|
||||
border: 2px solid #ccc;
|
||||
border-radius: 50%;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
/* Show selected state */
|
||||
.custom-radio input[type="radio"]:checked~.radio-mark {
|
||||
border-color: #1677ff;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.custom-radio input[type="radio"]:checked~.radio-mark::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
height: 11px;
|
||||
width: 11px;
|
||||
border-radius: 50%;
|
||||
background-color: #1677ff;
|
||||
}
|
||||
|
||||
/* Light mode: use Vuetify default */
|
||||
.checkbox-light .v-icon {
|
||||
color: #D9D9D9 !important;
|
||||
}
|
||||
|
||||
/* Dark mode: override tick color to black */
|
||||
.checkbox-dark .v-icon {
|
||||
color: #424242 !important;
|
||||
}
|
||||
|
||||
@each $theme in dark, light {
|
||||
@include theme($theme);
|
||||
|
||||
.v-application.#{$theme}-mode {
|
||||
|
||||
.v-input-popup__custom {
|
||||
.v-input__slot {
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
border: 1px solid map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-popup-password-border"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
.v-textarea {
|
||||
.v-input__slot{
|
||||
border: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-textarea-border"
|
||||
);
|
||||
fieldset {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-textarea-bg"
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-input {
|
||||
border-radius: 4px;
|
||||
border-radius: 6px;
|
||||
border-color: #d9d9d9;
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-backgroundColor"
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
&:not(.v-input--radio-group, .v-input--checkbox) {
|
||||
.v-input__slot {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-backgroundColor"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__slot {
|
||||
fieldset {
|
||||
color: map-deep-get(
|
||||
$config,
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-fieldset-color"
|
||||
) !important;
|
||||
@ -130,8 +279,7 @@
|
||||
|
||||
&:hover {
|
||||
fieldset {
|
||||
color: map-deep-get(
|
||||
$config,
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-fieldset-hover-color"
|
||||
) !important;
|
||||
@ -144,15 +292,14 @@
|
||||
}
|
||||
|
||||
&--is-readonly {
|
||||
border-color: map-deep-get(
|
||||
$config,
|
||||
border-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-readonly-border-color"
|
||||
);
|
||||
|
||||
&:not(.v-input--radio-group, .v-input--checkbox) {
|
||||
.v-input__slot {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-readonly-backgroundColor"
|
||||
) !important;
|
||||
@ -161,20 +308,20 @@
|
||||
}
|
||||
|
||||
&--is-disabled {
|
||||
border-color: map-deep-get(
|
||||
$config,
|
||||
border-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-readonly-border-color"
|
||||
);
|
||||
|
||||
&:not(.v-input--radio-group, .v-input--checkbox) {
|
||||
.v-input__slot {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-disabled-backgroundColor"
|
||||
) !important;
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
color: map-deep-get($config, #{$theme}, "v-input-disabled-color");
|
||||
}
|
||||
@ -184,22 +331,23 @@
|
||||
.v-select {
|
||||
.v-label {
|
||||
color: map-deep-get($config, #{$theme}, "v-select-label-color");
|
||||
position: static !important;
|
||||
}
|
||||
|
||||
&.v-input--is-disabled {
|
||||
.v-label {
|
||||
color: map-deep-get($config, #{$theme}, "v-input-disabled-color");
|
||||
}
|
||||
|
||||
.v-icon.v-icon--disabled {
|
||||
color: map-deep-get(
|
||||
$config,
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-disabled-color"
|
||||
) !important;
|
||||
}
|
||||
|
||||
.v-select__selection--disabled {
|
||||
color: map-deep-get(
|
||||
$config,
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-disabled-color"
|
||||
) !important;
|
||||
@ -211,6 +359,7 @@
|
||||
.v-label {
|
||||
color: map-deep-get($config, #{$theme}, "non-activate");
|
||||
}
|
||||
|
||||
&.v-item--active {
|
||||
.v-label {
|
||||
color: map-deep-get($config, #{$theme}, "activate");
|
||||
@ -241,17 +390,19 @@
|
||||
|
||||
.v-input--checkbox {
|
||||
.v-icon {
|
||||
@if $theme == dark {
|
||||
@if $theme ==dark {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
} @else {
|
||||
}
|
||||
|
||||
@else {
|
||||
color: #aaaaaa;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-textarea{
|
||||
textarea{
|
||||
.v-textarea {
|
||||
textarea {
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,20 +1,20 @@
|
||||
// .v-tabs {
|
||||
// height: 38px;
|
||||
// flex: 0;
|
||||
// & + .v-tabs-items {
|
||||
// height: calc(100% - 38px) !important;
|
||||
// width: 100%;
|
||||
// background-color: transparent !important;
|
||||
// }
|
||||
// &-bar {
|
||||
// height: 38px;
|
||||
// background-color: transparent !important;
|
||||
// border-bottom: 1px solid $--color-hover_d;
|
||||
// }
|
||||
// .v-tab {
|
||||
// margin: 0 !important;
|
||||
// }
|
||||
// }
|
||||
.v-tabs {
|
||||
|
||||
.v-tab {
|
||||
padding: 16px 0;
|
||||
font-size: 14px;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
transform: translateY(1px);
|
||||
letter-spacing: 0;
|
||||
|
||||
+.v-tab {
|
||||
margin-left: 32px;
|
||||
}
|
||||
|
||||
min-width:auto;
|
||||
}
|
||||
}
|
||||
|
||||
@each $theme in dark, light {
|
||||
.v-application.#{$theme}-mode {
|
||||
@ -22,67 +22,112 @@
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
|
||||
.v-tabs-bar{
|
||||
background-color: rgba(0, 0, 0, 0)
|
||||
}
|
||||
|
||||
.v-slide-group__content {
|
||||
border-bottom: 1px solid map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-tabs-items-border-color"
|
||||
);
|
||||
}
|
||||
|
||||
.v-slide-group__wrapper {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"card-default-backgroundColor"
|
||||
);
|
||||
overflow: visible !important;
|
||||
contain: initial !important;
|
||||
}
|
||||
|
||||
.v-tab {
|
||||
border: 1px solid transparent;
|
||||
border-radius: 6px 6px 0 0;
|
||||
border-bottom-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"v-tabs-active-border-color"
|
||||
);
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"v-tabs-backgroundColor"
|
||||
);
|
||||
padding: 16px 0;
|
||||
font-size: 14px;
|
||||
// border-radius: 6px 6px 0 0;
|
||||
// border-bottom-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "v-tabs-active-border-color"
|
||||
// );
|
||||
// background-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "v-tabs-backgroundColor"
|
||||
// );
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
transform: translateY(1px);
|
||||
letter-spacing: 0;
|
||||
+ .v-tab {
|
||||
margin-left: 4px;
|
||||
margin-left: 32px;
|
||||
}
|
||||
&::before {
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"v-tabs-hover-color"
|
||||
) !important;
|
||||
}
|
||||
|
||||
&:not(.v-tab--active){
|
||||
color: map-deep-get($config, #{$theme}, "router-tab-item-color") !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.v-tab--active {
|
||||
border-top-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"v-tabs-active-border-color"
|
||||
);
|
||||
border-right-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"v-tabs-active-border-color"
|
||||
);
|
||||
border-left-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"v-tabs-active-border-color"
|
||||
);
|
||||
border-bottom-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"v-tabs-active-backgroundColor"
|
||||
);
|
||||
// border-top-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "v-tabs-active-border-color"
|
||||
// );
|
||||
// border-right-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "v-tabs-active-border-color"
|
||||
// );
|
||||
// border-left-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "v-tabs-active-border-color"
|
||||
// );
|
||||
// border-bottom-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
// "v-tabs-active-backgroundColor"
|
||||
// );
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
"v-tabs-active-backgroundColor"
|
||||
);
|
||||
}
|
||||
|
||||
.v-tabs-slider {
|
||||
border-bottom: 1px solid;
|
||||
border-bottom-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-tabs-active-border-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
.v-tabs-items {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-top: 1px
|
||||
solid
|
||||
map-deep-get($config, #{$theme}, "v-tabs-active-border-color");
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"card-default-backgroundColor"
|
||||
);
|
||||
// border-top: 1px
|
||||
// solid
|
||||
// map-deep-get($config, #{$theme}, "v-tabs-active-border-color");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
.txt {
|
||||
&__bar {
|
||||
display: flex;
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
@ -11,6 +12,7 @@
|
||||
position: relative;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
&.log {
|
||||
&:before {
|
||||
background-color: $--color-primary__green;
|
||||
@ -44,15 +46,23 @@
|
||||
}
|
||||
|
||||
.custom-title-4 {
|
||||
font-size: 1.125rem !important;
|
||||
font-size: 1.25rem !important;
|
||||
font-weight: 700 !important;
|
||||
line-height: 1.25 !important;
|
||||
}
|
||||
|
||||
.custom-title-4-new {
|
||||
font-size: 1.25rem !important;
|
||||
font-weight: 600 !important;
|
||||
line-height: 1.25 !important;
|
||||
}
|
||||
|
||||
.custom-title-6 {
|
||||
font-size: 1.0rem !important;
|
||||
font-weight: 700 !important;
|
||||
line-height: 1.25 !important;
|
||||
}
|
||||
|
||||
.custom-title-8 {
|
||||
font-size: 0.75rem !important;
|
||||
font-weight: 700 !important;
|
||||
@ -94,5 +104,24 @@
|
||||
.text-color--sub {
|
||||
color: map-deep-get($config, #{$theme}, "text-subcolor");
|
||||
}
|
||||
|
||||
.h1-title {
|
||||
font-weight: 600;
|
||||
font-size: 24px;
|
||||
line-height: 32px;
|
||||
letter-spacing: 0;
|
||||
color: map-deep-get($config, #{$theme}, "h1-title");
|
||||
}
|
||||
|
||||
.v-dialog {
|
||||
.custom-title-4 {
|
||||
font-size: 16px !important;
|
||||
font-weight: 600 !important;
|
||||
color: map-deep-get($config, #{$theme}, "card-title-color");
|
||||
line-height: 24px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
77
assets/scss/datepicker.scss
Normal file
@ -0,0 +1,77 @@
|
||||
@each $theme in dark, light {
|
||||
|
||||
// @include theme($theme);
|
||||
.v-application.#{$theme}-mode {
|
||||
|
||||
.search-box-label {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.datepicker-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
border-radius: 6px;
|
||||
border: solid 1px;
|
||||
height: 40px;
|
||||
// border-color: #424242;
|
||||
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
||||
|
||||
|
||||
.v-input {
|
||||
|
||||
// ----------------------
|
||||
&.v-input--is-readonly {
|
||||
border-color: rgba(0, 0, 0, 0);
|
||||
flex-grow: 1;
|
||||
|
||||
&:not(.v-input--radio-group) {
|
||||
&:not(.v-input--checkbox) {
|
||||
::v-deep {
|
||||
.v-input__slot {
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
|
||||
fieldset {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container,
|
||||
#endpicker-container {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__custom {
|
||||
flex: 0 0 auto;
|
||||
|
||||
&.half {
|
||||
width: calc(50% - 20px);
|
||||
}
|
||||
|
||||
&.large {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
&.datepicker-timeselect {
|
||||
border: solid 1px map-deep-get($config, #{$theme}, "tui-datepicker-border-color") !important;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -8,7 +8,7 @@ $--color-gray_C: #cccccc !important;
|
||||
$--color-gray_9: #95a0a9 !important;
|
||||
$--color-gray_7: #767d83 !important;
|
||||
$--color-gray_999: #999 !important;
|
||||
$--color-gray_555: #555 !important;
|
||||
$--color-gray_555: #555;
|
||||
$--color-gray_aaa: #aaa !important;
|
||||
$--color-hover_d: #47535c !important;
|
||||
$--color-hover_l: #f0f5fc !important;
|
||||
@ -25,96 +25,98 @@ $--theme-color-g7-g9: "";
|
||||
$--theme-color-g9-g7: "";
|
||||
|
||||
$scrollbar-width: 11px; // 스크롤 바
|
||||
$column-spacer: 20px; // 검색 영역 열 간격
|
||||
$column-spacer: 16px; // 검색 영역 열 간격
|
||||
$row-spacer: 14px; // 검색 영역 행 간격
|
||||
|
||||
$color: (
|
||||
"black": (
|
||||
"0": #000,
|
||||
"1": #111
|
||||
),
|
||||
"white": (
|
||||
"0": #fff
|
||||
),
|
||||
"week": (
|
||||
"sun": #fb5a83,
|
||||
"sat": #2d8cf6
|
||||
)
|
||||
"black": ("0": #000,
|
||||
"1": #111),
|
||||
"white": ("0": #fff),
|
||||
"week": ("sun": #fb5a83,
|
||||
"sat": #2d8cf6)
|
||||
);
|
||||
|
||||
$config: (
|
||||
dark: (
|
||||
w-g5: $--color-white,
|
||||
dark: (w-g5: $--color-white,
|
||||
g5-w: $--color-gray_555,
|
||||
gc-g9: $--color-gray_C,
|
||||
g5-gc: $--color-gray_555,
|
||||
g7-g9: $--color-gray_7,
|
||||
g9-g7: $--color-gray_9,
|
||||
pageBackground: #23272b,
|
||||
cardBackground: #242940,
|
||||
cardBackground: #212224,
|
||||
hover: #47535c,
|
||||
btnClose: #24282c,
|
||||
scrollbar-track: #2f334a,
|
||||
scrollbar-thumb: #575b72,
|
||||
card-default-color: #fff,
|
||||
card-default-color: #FFFFFFA6,
|
||||
card-title-color: #FFFFFFD9, // #111,
|
||||
card-subtitle: rgba(255, 255, 255, 0.6),
|
||||
card-text-info-color: #1668DC,
|
||||
card-text-title-color: #FFFFFFA6,
|
||||
activate: #fff,
|
||||
non-activate: rgba(255, 255, 255, 0.6),
|
||||
text-subcolor: rgba(255, 255, 255, 0.6),
|
||||
border-color: rgba(255, 255, 255, 0.1),
|
||||
router-header: #1d2133,
|
||||
router-tab-item: #2d3355,
|
||||
router-tab-item-active: #18579e,
|
||||
router-tab-item-color: #fff,
|
||||
router-tab-item-active-color: #fff,
|
||||
router-tab-item-icon-color: rgba(255, 255, 255, 0.5),
|
||||
router-tab-item-icon-active-color: #fff,
|
||||
router-tab-item-hover-color: #3896ff,
|
||||
router-header: #212224,
|
||||
router-container: #141415,
|
||||
container-fluid: #141415,
|
||||
router-tab-item: transparent,
|
||||
router-tab-item-active: transparent,
|
||||
router-tab-item-color: #FFFFFFD9,
|
||||
router-tab-item-active-color: #1668DC,
|
||||
router-tab-item-icon-color: #FFFFFFD9,
|
||||
router-tab-item-icon-active-color: #1668DC,
|
||||
router-tab-item-hover-color: #1668DC,
|
||||
router-tab-slot-end-button-backgroundColor: #144985,
|
||||
v-btn-backgroundColor: #144985,
|
||||
v-box: #383f5d,
|
||||
v-box: #212224,
|
||||
v-banner-border-color: rgba(255, 255, 255, 0.1),
|
||||
v-treeview-node-root-backgroundColor: #18579e,
|
||||
v-treeview-node-root-label-color: #fff,
|
||||
v-treeview-node-root-label-active-color: #fff,
|
||||
v-treeview-node-root-icon-color: #fff,
|
||||
v-treeview-node-root-icon-active-color: #fff,
|
||||
v-treeview-node-subroot-backgroundColor: #2d3355,
|
||||
v-treeview-node-root-backgroundColor: #212224,
|
||||
v-treeview-node-root-label-color: #FFFFFFD9,
|
||||
v-treeview-node-root-label-active-color: #FFFFFFD9,
|
||||
v-treeview-node-root-icon-color: #FFFFFFD9,
|
||||
v-treeview-node-root-icon-active-color: #FFFFFFD9,
|
||||
// v-treeview-node-subroot-backgroundColor: #FFFFFF0A,
|
||||
v-treeview-node-subroot-backgroundColor: transparent,
|
||||
v-treeview-node-label-color: rgba(255, 255, 255, 0.6),
|
||||
v-treeview-node-label-active-color: #fff,
|
||||
v-treeview-node-label-active-color: #1668DC,
|
||||
v-treeview-leaf-active-backgroundColor: rgba(45, 51, 85, 0.5),
|
||||
v-treeview-leaf-active-color: #3896ff,
|
||||
v-treeview-icon-color: rgba(255, 255, 255, 0.6),
|
||||
v-treeview-icon-active-color: #fff,
|
||||
v-input-backgroundColor: rgba(13, 15, 23, 0.3),
|
||||
v-input-fieldset-color: rgba(255, 255, 255, 0.32),
|
||||
v-treeview-node-label-children-color: #fff,
|
||||
v-input-backgroundColor: transparent,
|
||||
v-input-color: rgba(255, 255, 255, 0.25),
|
||||
v-input-fieldset-color: #424242,
|
||||
v-input-fieldset-hover-color: rgba(255, 255, 255, 1),
|
||||
v-input-icon-color: #fff,
|
||||
v-input-readonly-border-color: rgba(255, 255, 255, 0.3),
|
||||
v-input-readonly-backgroundColor: rgba(57, 64, 94, 0.3),
|
||||
v-input-disabled-backgroundColor: rgba(57, 64, 94, 0.3),
|
||||
v-input-disabled-color: rgba(255, 255, 255, 0.2),
|
||||
v-select-label-color: #fff,
|
||||
v-input-readonly-border-color:#424242,
|
||||
v-input-readonly-backgroundColor: rgba(255, 255, 255, 0.08),
|
||||
v-input-disabled-backgroundColor:rgba(255, 255, 255, 0.08),
|
||||
v-input-disabled-color: rgba(255, 255, 255, 0.5),
|
||||
v-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,
|
||||
tui-grid-header-backgroundColor: #383f5d,
|
||||
tui-grid-border-horziontal-color: #383f5d,
|
||||
tui-grid-border-vertical-color: rgba(255, 255, 255, 0.1),
|
||||
tui-grid-cell-backgroundColor: #242940,
|
||||
tui-grid-header-backgroundColor: #2a2b2d,
|
||||
tui-grid-header-color: #FFFFFFD9,
|
||||
tui-grid-border-horziontal-color: #212224,
|
||||
tui-grid-border-vertical-color: #212224,
|
||||
tui-grid-cell-backgroundColor: #212224,
|
||||
tui-grid-cell-color: #fff,
|
||||
tui-grid-cell-insert-color: #13636c,
|
||||
tui-grid-cell-selected-color: #1a4e87,
|
||||
tui-grid-cell-selected-color: #0A224F,
|
||||
tui-grid-cell-modify-color: #13636c,
|
||||
tui-grid-cell-removed-color: #f6637b,
|
||||
tui-grid-cell-disabled-color: rgb(170, 170, 170),
|
||||
tui-grid-cell-hover-backgroundColor: #31375b,
|
||||
v-tabs-items-border-color: rgba(255, 255, 255, 0.7),
|
||||
tui-grid-cell-hover-backgroundColor: #2d4571,
|
||||
v-tabs-items-border-color: #FFFFFF0F,
|
||||
v-tabs-backgroundColor: rgba(57, 64, 94, 0.5),
|
||||
v-tabs-active-backgroundColor: #242940,
|
||||
v-tabs-active-backgroundColor: transparent,
|
||||
v-tabs-active-border-color: rgba(255, 255, 255, 0.7),
|
||||
v-dialog-card-text-color: #fff,
|
||||
tui-datepicker-backgroundColor: #0d0f17,
|
||||
@ -122,11 +124,54 @@ $config: (
|
||||
tui-datepicker-selectable-hover-color: #2d3355,
|
||||
tui-datepicker-selected-color: #1a4e87,
|
||||
tui-datepicker-calendar-color: #fff,
|
||||
tui-editor-contents-color: #111,
|
||||
admin-menu-expanded-list-backgroundColor: #144985
|
||||
tui-editor-contents-color: rgba(0, 0, 0, 0.88),
|
||||
tui-grid-cell-borderStyle: solid,
|
||||
tui-grid-cell-borderColor: #FFFFFF0f,
|
||||
admin-menu-expanded-list-backgroundColor: #144985,
|
||||
h1-title: #1668DC,
|
||||
v-btn-save: transparent,
|
||||
v-btn-add-text: #212224,
|
||||
header-backgroud: #131629,
|
||||
v-btn-header-background: #212224,
|
||||
v-btn-header-border: #424242,
|
||||
v-btn-header-text: #fff,
|
||||
v-icon-orange:#D87A16,
|
||||
v-icon-blue:#1668DC,
|
||||
v-btn-excel-dowload-title: #FFFFFFD9,
|
||||
v-btn-excel-dowload-bg: #00000026,
|
||||
basic-button-color: #FFFFFFD9,
|
||||
basic-button-background: #212224,
|
||||
search-btn-color: #212224,
|
||||
card-default-backgroundColor: rgba(155, 155, 155, 0),
|
||||
v-icon-chevron-down: rgba(255, 255, 255, 0.45),
|
||||
v-icon-search: rgba(255, 255, 255, 0.45),
|
||||
icon-color: rgba(255, 255, 255, 0.45),
|
||||
menu-bg-color:rgba(33, 34, 36, 1),
|
||||
arow-line-btn-bg-color: #111A2C,
|
||||
arow-line-color: #1668DC,
|
||||
search-btn-background: #1668DC,
|
||||
v-btn-color-default: #FFFFFFD9,
|
||||
v-btn-bg-default: #FFFFFF2E,
|
||||
v-input-popup-password-border: #424242,
|
||||
v-input-textarea-border: #424242,
|
||||
v-input-textarea-bg: #212224,
|
||||
v-input-textarea-color: #FFFFFFD9,
|
||||
v-treeview-node-label-active-bg: #111A2C,
|
||||
v-treeview-node-label-active-border: #1668DC,
|
||||
v-treeview-leaf-subchildren-backgroundColor: #2a2b2d,
|
||||
ant-btn-primary-bg: #1668DC,
|
||||
ant-btn-primary-color: #212224,
|
||||
ant-btn-danger-bg:#D32029,
|
||||
ant-btn-danger-border:#D32029,
|
||||
ant-btn-danger-color:#212224,
|
||||
ant-btn-default-border:#FFFFFF2E,
|
||||
ant-btn-default-bg:#FFFFFF2E,
|
||||
ant-btn-default-color:#FFFFFFD9,
|
||||
ant-btn-default-border-outlined:#424242,
|
||||
btn-header-select-bg: #1F1F1F,
|
||||
btn-header-select-color:#FFFFFFD9,
|
||||
),
|
||||
light: (
|
||||
w-g5: $--color-gray_555,
|
||||
light: (w-g5: $--color-gray_555,
|
||||
g5-w: $--color-white,
|
||||
gc-g9: $--color-gray_999,
|
||||
g5-gc: $--color-gray_C,
|
||||
@ -137,67 +182,78 @@ $config: (
|
||||
cardBackground: #fefefe,
|
||||
hover: #f0f5fc,
|
||||
btnClose: #f1f0f8,
|
||||
scrollbar-track: #e9e9e9,
|
||||
scrollbar-track: rgba(0, 0, 0, 0), // #e9e9e9,
|
||||
scrollbar-thumb: #bbbbbb,
|
||||
card-default-color: #111,
|
||||
card-subtitle: #555,
|
||||
card-default-color: #00000073, // #111,
|
||||
card-subtitle: #1677ff,
|
||||
card-text-info-color: #1677FF,
|
||||
card-text-title-color: #00000073,
|
||||
card-title-color: #000000E0, // #111,
|
||||
activate: #111,
|
||||
non-activate: #555,
|
||||
text-subcolor: #999,
|
||||
border-color: #ddd,
|
||||
router-header: #fff,
|
||||
router-tab-item: #e1e7f3,
|
||||
router-tab-item-active: #4777d9,
|
||||
router-tab-item-color: #111,
|
||||
router-tab-item-active-color: #fff,
|
||||
router-tab-item-icon-color: #838aa6,
|
||||
router-tab-item-icon-active-color: #fff,
|
||||
router-tab-item-hover-color: #366dbe,
|
||||
router-container: #f8f8f8,
|
||||
container-fluid: #f8f8f8,
|
||||
router-tab-item: #fff,
|
||||
router-tab-item-active: #fff,
|
||||
router-tab-item-color: #000000E0,
|
||||
router-tab-item-active-color: #1677ff,
|
||||
router-tab-item-icon-color: #000000E0,
|
||||
router-tab-item-icon-active-color: #1677ff,
|
||||
router-tab-item-hover-color: #1677ff,
|
||||
router-tab-slot-end-button-backgroundColor: #3f4d7d,
|
||||
v-btn-backgroundColor: #4777d9,
|
||||
v-box: #f0f3fa,
|
||||
v-btn-backgroundColor: #1677ff,
|
||||
// v-btn-backgroundColor: #fff,
|
||||
v-box: #FFFFFF,
|
||||
v-banner-border-color: #ddd,
|
||||
v-treeview-node-root-backgroundColor: #4777d9,
|
||||
v-treeview-node-root-label-color: #111,
|
||||
v-treeview-node-root-label-active-color: #fff,
|
||||
v-treeview-node-root-icon-color: #555,
|
||||
v-treeview-node-root-icon-active-color: #fff,
|
||||
v-treeview-node-subroot-backgroundColor: #e1e7f3,
|
||||
v-treeview-node-root-backgroundColor: #FFFFFF,
|
||||
v-treeview-node-root-label-color: #000000E0,
|
||||
v-treeview-node-root-label-active-color: #000000E0,
|
||||
v-treeview-node-root-icon-color: #000000E0,
|
||||
v-treeview-node-root-icon-active-color: #000000E0,
|
||||
// v-treeview-node-subroot-backgroundColor: #00000005,
|
||||
v-treeview-node-subroot-backgroundColor: transparent,
|
||||
v-treeview-node-label-color: #555,
|
||||
v-treeview-node-label-active-color: #111,
|
||||
v-treeview-node-label-active-color: #002C8C,
|
||||
v-treeview-node-label-children-color: #616885,
|
||||
v-treeview-leaf-active-backgroundColor: #edf1f7,
|
||||
v-treeview-leaf-active-color: #366dbe,
|
||||
v-treeview-icon-color: #a4aac3,
|
||||
v-treeview-icon-active-color: #616885,
|
||||
v-input-backgroundColor: #ffffff,
|
||||
v-input-fieldset-color: #b4b8c9,
|
||||
v-input-fieldset-hover-color: #b4b8c9,
|
||||
v-input-icon-color: #555,
|
||||
v-input-readonly-border-color: #b4b8c9,
|
||||
v-input-readonly-backgroundColor: #f5f5f5,
|
||||
v-input-disabled-backgroundColor: #eee,
|
||||
v-input-disabled-color: #bbb,
|
||||
v-select-label-color: #111,
|
||||
v-input-color: rgba(0, 0, 0, 0.25),
|
||||
v-input-fieldset-color: #d9d9d9,
|
||||
v-input-fieldset-hover-color: #1890ff,
|
||||
v-input-icon-color: #d9d9d9,
|
||||
v-input-readonly-border-color: #424242,
|
||||
v-input-readonly-backgroundColor: rgba(0, 0, 0, 0.04),
|
||||
v-input-disabled-backgroundColor: rgba(0, 0, 0, 0.04),
|
||||
v-input-disabled-color: rgba(0, 0, 0, 0.25),
|
||||
v-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,
|
||||
tui-grid-header-backgroundColor: #e0e0e0,
|
||||
tui-grid-header-backgroundColor: #fafafa, //#e0e0e0,
|
||||
tui-grid-header-color: rgba(0, 0, 0, 0.88),
|
||||
tui-grid-border-horziontal-color: #e0e0e0,
|
||||
tui-grid-border-vertical-color: #d4d4d4,
|
||||
tui-grid-border-vertical-color: rgba(0, 0, 0, 0.06), //#d4d4d4,
|
||||
tui-grid-cell-backgroundColor: #fff,
|
||||
tui-grid-cell-color: #555,
|
||||
tui-grid-cell-color: #000000E0,
|
||||
tui-grid-cell-insert-color: #13636c,
|
||||
tui-grid-cell-selected-color: #ecf2fa,
|
||||
tui-grid-cell-selected-color: #E6F4FF,
|
||||
tui-grid-cell-modify-color: #e6f5f7,
|
||||
tui-grid-cell-removed-color: #fddde1,
|
||||
tui-grid-cell-hover-backgroundColor: #f5f5f5,
|
||||
v-tabs-items-border-color: #989db1,
|
||||
v-tabs-items-border-color: #0000000F,
|
||||
v-tabs-backgroundColor: #ddd,
|
||||
v-tabs-active-backgroundColor: #fff,
|
||||
v-tabs-active-border-color: #989db1,
|
||||
v-tabs-active-backgroundColor: rgba(0, 0, 0, 0), // #fff,
|
||||
v-tabs-active-border-color: #1677FF,
|
||||
v-tabs-hover-color: #1677FF,
|
||||
v-dialog-card-text-color: #111,
|
||||
tui-datepicker-backgroundColor: #fff,
|
||||
tui-datepicker-border-color: #b4b8c9,
|
||||
@ -205,6 +261,48 @@ $config: (
|
||||
tui-datepicker-selected-color: #4777d9,
|
||||
tui-datepicker-calendar-color: #111,
|
||||
tui-editor-contents-color: #111,
|
||||
admin-menu-expanded-list-backgroundColor: #3f4d7d
|
||||
)
|
||||
);
|
||||
tui-grid-cell-borderStyle: solid,
|
||||
tui-grid-cell-borderColor: #0000000F,
|
||||
admin-menu-expanded-list-backgroundColor: #3f4d7d,
|
||||
h1-title: #002C8C,
|
||||
header-backgroud: #F0F5FF,
|
||||
v-btn-header-background: #FFF,
|
||||
v-btn-header-border: #D9D9D9,
|
||||
v-btn-header-text: #000000,
|
||||
v-icon-orange:#FA8C16,
|
||||
v-icon-blue:#1677FF,
|
||||
v-btn-excel-dowload-title: #000000E0,
|
||||
v-btn-excel-dowload-bg: #00000026,
|
||||
basic-button-color: #000000E0,
|
||||
basic-button-background: #FFFFFF,
|
||||
search-btn-color: #ffffff,
|
||||
card-default-backgroundColor: rgba(155, 155, 155, 0),
|
||||
v-icon-chevron-down:rgba(0, 0, 0, 0.45),
|
||||
v-icon-search:rgba(0, 0, 0, 0.45),
|
||||
icon-color: rgba(0, 0, 0, 0.45),
|
||||
menu-bg-color: #fff,
|
||||
arow-line-btn-bg-color: #E6F4FF,
|
||||
arow-line-color: #1677FF,
|
||||
search-btn-background: #1677FF,
|
||||
v-btn-bg-default: #00000026,
|
||||
v-btn-color-default: #000000E0,
|
||||
v-input-popup-password-border: #D9D9D9,
|
||||
v-input-textarea-border: #D9D9D9,
|
||||
v-input-textarea-bg: #FFFFFF,
|
||||
v-input-textarea-color: #000000E0,
|
||||
v-treeview-node-label-active-bg: #E6F4FF,
|
||||
v-treeview-node-label-active-border: #1677FF,
|
||||
v-treeview-leaf-subchildren-backgroundColor: #fafafa,
|
||||
ant-btn-primary-bg: #1677FF,
|
||||
ant-btn-primary-color: #FFF,
|
||||
ant-btn-danger-bg:#FFF,
|
||||
ant-btn-danger-border:#F5222D,
|
||||
ant-btn-danger-color:#F5222D,
|
||||
ant-btn-default-border:#00000026,
|
||||
ant-btn-default-bg:#00000026,
|
||||
ant-btn-default-color:#000000E0,
|
||||
ant-btn-default-border-outlined:#D9D9D9,
|
||||
btn-header-select-color:#1F1F1F,
|
||||
btn-header-select-bg:#FFFFFF,
|
||||
),
|
||||
);
|
BIN
assets/scss/var.zip
Normal file
@ -21,8 +21,8 @@ $material-light: (
|
||||
$treeview-node-padding: 10px;
|
||||
$treeview-node-height: 40px;
|
||||
|
||||
$banner-start-padding: 10px;
|
||||
$banner-end-padding: 10px;
|
||||
$banner-start-padding: 0px;
|
||||
$banner-end-padding: 0px;
|
||||
$banner-y-padding: 12px;
|
||||
|
||||
$card-border-radius: 10px;
|
||||
@ -33,12 +33,12 @@ $card-subtitle-padding: 20px;
|
||||
|
||||
$timeline-dot-small-size: 10px;
|
||||
|
||||
$data-table-regular-row-height: 36px;
|
||||
$data-table-regular-row-height: 32px;
|
||||
|
||||
$input-font-size: 14px;
|
||||
$input-max-height: 36px;
|
||||
$text-field-filled-full-width-outlined-slot-min-height: 36px;
|
||||
$text-field-solo-control-min-height: 36px;
|
||||
$input-max-height: 32px;
|
||||
$text-field-filled-full-width-outlined-slot-min-height: 32px;
|
||||
$text-field-solo-control-min-height: 32px;
|
||||
$text-field-line-height: 1.285;
|
||||
$text-field-enclosed-prepend-append-margin-top: 0;
|
||||
$text-field-enclosed-details-padding: 0 8px;
|
||||
@ -50,7 +50,7 @@ $tabs-item-padding: 12px;
|
||||
|
||||
$list-border-radius: 4px;
|
||||
$list-padding: 0;
|
||||
$list-item-min-height: 36px;
|
||||
$list-item-min-height: 32px;
|
||||
$list-item-padding: 0;
|
||||
$list-item-title-font-size: 0.875rem; // 14px;
|
||||
$list-item-content-padding: 10px 7px;
|
||||
$list-item-content-padding: 10px 7px;
|
@ -170,7 +170,7 @@ export default {
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
<style lang="scss" scoped>
|
||||
.btn-pager {
|
||||
margin: 4px;
|
||||
input {
|
||||
@ -200,9 +200,9 @@ export default {
|
||||
// .grey--text {
|
||||
// margin-left: 16px;
|
||||
// }
|
||||
.mr-4 {
|
||||
margin-left: 14px;
|
||||
}
|
||||
// .mr-4 {
|
||||
// margin-left: 14px;
|
||||
// }
|
||||
.v-btn__content {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
@ -1,19 +1,23 @@
|
||||
<template>
|
||||
<v-menu offset-y nudge-bottom="8" :left="true">
|
||||
<v-menu offset-y nudge-bottom="8" :right="true">
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
depressed
|
||||
:ripple="false"
|
||||
:class="{ miniVariant }"
|
||||
:style="btnStyle"
|
||||
>
|
||||
<v-icon size="32" :class="{ 'mr-2': !miniVariant }"
|
||||
icon
|
||||
fab
|
||||
small
|
||||
>
|
||||
<!-- depressed
|
||||
:ripple="false" -->
|
||||
<!-- :style="btnStyle" -->
|
||||
|
||||
<v-icon size="32" color="#fff"
|
||||
>$icoAdminMenu</v-icon
|
||||
>
|
||||
<span class="body-1 mr-1">{{ userNm }}</span>
|
||||
<v-icon>mdi-chevron-down</v-icon>
|
||||
<!-- <span class="body-1 mr-1">{{ userNm }}</span> -->
|
||||
<!-- <v-icon>mdi-chevron-down</v-icon> -->
|
||||
</v-btn>
|
||||
<!-- <AlertPopup
|
||||
ref="alertPop"
|
||||
@ -23,7 +27,7 @@
|
||||
/> -->
|
||||
</template>
|
||||
|
||||
<v-list class="pa-2">
|
||||
<v-list class="pa-2 btn-close-menu-list" >
|
||||
<!-- <v-list-item class="mb-1">-->
|
||||
<!-- <div class="d-flex align-center">-->
|
||||
<!-- <v-avatar class="mr-1" size="20">-->
|
||||
@ -155,12 +159,15 @@ export default {
|
||||
min-width: auto !important;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 20px !important;
|
||||
margin-bottom: 12px;
|
||||
padding: 0 !important;
|
||||
// margin-bottom: 12px;
|
||||
|
||||
&,
|
||||
&:before {
|
||||
background-color: transparent !important;
|
||||
// background-color: transparent !important;
|
||||
}
|
||||
&.v-btn--fab{
|
||||
height: auto;
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
|
@ -170,9 +170,11 @@ export default {
|
||||
month : month,
|
||||
day : day
|
||||
}
|
||||
this.$refs['planPop'].blocId = this.pageData.blocMstrList[
|
||||
this.pageData.blocId
|
||||
].blocId;
|
||||
// BEGIN TEST UI
|
||||
// this.$refs['planPop'].blocId = this.pageData.blocMstrList[
|
||||
// this.pageData.blocId
|
||||
// ].blocId;
|
||||
// END TEST UI
|
||||
this.$refs['planPop'].dialog = true;
|
||||
},
|
||||
updatePlan(val) {
|
||||
|
@ -59,7 +59,6 @@ export default {
|
||||
computed: {
|
||||
...mapState({
|
||||
isDarkMode: 'isDarkMode',
|
||||
|
||||
chartOption(state) {
|
||||
var dark_Col = [
|
||||
'#01AE6A',
|
||||
@ -352,10 +351,14 @@ export default {
|
||||
tmpChrtOp.color = light_Col;
|
||||
}
|
||||
}
|
||||
console.log('ops11:',tmpChrtOp)
|
||||
return tmpChrtOp;
|
||||
},
|
||||
}),
|
||||
},
|
||||
created() {
|
||||
console.log('wd data:',this.widgetData)
|
||||
},
|
||||
methods: {
|
||||
onClick(event, instance, ECharts) {
|
||||
console.log('onClick : ', event);
|
||||
|
@ -1,102 +1,111 @@
|
||||
<template>
|
||||
<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="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-checkbox
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
|
||||
<v-checkbox
|
||||
v-model="chkValue"
|
||||
:disabled="disabledFlag"
|
||||
:readonly="readonly || false"
|
||||
:required="required || false"
|
||||
:false-value="false"
|
||||
:color="isDarkMode ? '#fff' : '#4777d9'"
|
||||
:color="isDarkMode ? '#fff' : '#1890ff'"
|
||||
@change="modifyValue"
|
||||
></v-checkbox>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations } from 'vuex';
|
||||
import { mapState, mapMutations } from "vuex";
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
isDarkMode: {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
isDarkMode: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
default: true
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chkValue: false,
|
||||
testData: false,
|
||||
disabledFlag: false,
|
||||
};
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chkValue: false,
|
||||
testData: false,
|
||||
disabledFlag: false,
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: state => state.pageData,
|
||||
myBindingDara(state) {
|
||||
return state.pageData[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
myBindingDara: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.chkValue = val;
|
||||
},
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.chkValue = this.searchParam[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
modifyValue(e) {
|
||||
return this.setPageData({ [this.valueNm]: e });
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: (state) => state.pageData,
|
||||
myBindingDara(state) {
|
||||
return state.pageData[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
myBindingDara: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.chkValue = val;
|
||||
},
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.chkValue = this.searchParam[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: "setPageData" }),
|
||||
modifyValue(e) {
|
||||
return this.setPageData({ [this.valueNm]: e });
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -1,144 +1,141 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="location == 'front'" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="icon" x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="textCols" @click="modifyValue">
|
||||
<v-checkbox
|
||||
v-model="chkValue"
|
||||
:disabled="disabledFlag"
|
||||
:readonly="readonly || false"
|
||||
:required="required || false"
|
||||
:false-value="false"
|
||||
:color="isDarkMode ? '#fff' : '#4777d9'"
|
||||
@change="modifyValue"
|
||||
|
||||
></v-checkbox>
|
||||
</v-col>
|
||||
<v-col v-if="location == 'rear'" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="icon" x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="location == 'front'" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="icon" x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="textCols" @click="modifyValue">
|
||||
<v-checkbox
|
||||
v-model="chkValue"
|
||||
:disabled="disabledFlag"
|
||||
:readonly="readonly || false"
|
||||
:required="required || false"
|
||||
:false-value="false"
|
||||
:color="isDarkMode ? '#fff' : '#4777d9'"
|
||||
@change="modifyValue"
|
||||
></v-checkbox>
|
||||
</v-col>
|
||||
<v-col v-if="location == 'rear'" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="icon" x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations } from 'vuex';
|
||||
import { mapState, mapMutations } from "vuex";
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
isDarkMode: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
icon: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
location: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: 'front'
|
||||
},
|
||||
disabledCheckOption: {
|
||||
type: String,
|
||||
require: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chkValue: false,
|
||||
testData: false,
|
||||
disabledFlag: false,
|
||||
};
|
||||
},
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
isDarkMode: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
icon: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
location: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "front",
|
||||
},
|
||||
disabledCheckOption: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chkValue: false,
|
||||
testData: false,
|
||||
disabledFlag: false,
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: state => state.pageData,
|
||||
myBindingData(state) {
|
||||
return state.pageData[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
bindingDisabledCheckOption(state) {
|
||||
if(state.pageData[this.parentPrgmId][this.disabledCheckOption]!=undefined){
|
||||
return state.pageData[this.parentPrgmId][this.disabledCheckOption];
|
||||
}
|
||||
|
||||
}
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
myBindingData: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.chkValue = val;
|
||||
},
|
||||
},
|
||||
bindingDisabledCheckOption(val) {
|
||||
this.disabledFlag = val;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.chkValue = this.searchParam[this.parentPrgmId][this.valueNm];
|
||||
if(this.searchParam[this.parentPrgmId][this.disabledCheckOption]!=undefined){
|
||||
this.disabledFlag = this.searchParam[this.parentPrgmId][this.disabledCheckOption]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
modifyValue(e) {
|
||||
if(this.disabledFlag==true&&e.target != undefined){
|
||||
alert('기간이 한 시간 이내일 경우만 선택할 수 있습니다.')
|
||||
}else{
|
||||
if(e.target == undefined){
|
||||
return this.setPageData({ [this.valueNm]: e });
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: (state) => state.pageData,
|
||||
myBindingData(state) {
|
||||
return state.pageData[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
bindingDisabledCheckOption(state) {
|
||||
if (state.pageData[this.parentPrgmId][this.disabledCheckOption] != undefined) {
|
||||
return state.pageData[this.parentPrgmId][this.disabledCheckOption];
|
||||
}
|
||||
},
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
myBindingData: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.chkValue = val;
|
||||
},
|
||||
},
|
||||
bindingDisabledCheckOption(val) {
|
||||
this.disabledFlag = val;
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.chkValue = this.searchParam[this.parentPrgmId][this.valueNm];
|
||||
if (this.searchParam[this.parentPrgmId][this.disabledCheckOption] != undefined) {
|
||||
this.disabledFlag = this.searchParam[this.parentPrgmId][this.disabledCheckOption];
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: "setPageData" }),
|
||||
modifyValue(e) {
|
||||
if (this.disabledFlag == true && e.target != undefined) {
|
||||
alert("기간이 한 시간 이내일 경우만 선택할 수 있습니다.");
|
||||
} else {
|
||||
if (e.target == undefined) {
|
||||
return this.setPageData({ [this.valueNm]: e });
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
84
components/common/ColumnChart.vue
Normal file
@ -0,0 +1,84 @@
|
||||
<template>
|
||||
<v-chart class="chart" :option="option" autoresize style="width: 400px; height: 300px;" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { use } from 'echarts/core';
|
||||
import { CanvasRenderer } from 'echarts/renderers';
|
||||
import { PieChart } from 'echarts/charts';
|
||||
import {
|
||||
TitleComponent,
|
||||
TooltipComponent,
|
||||
LegendComponent,
|
||||
} from 'echarts/components';
|
||||
import VChart, { THEME_KEY } from 'vue-echarts';
|
||||
import { ref } from 'vue';
|
||||
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
|
||||
|
||||
use([
|
||||
CanvasRenderer,
|
||||
PieChart,
|
||||
TitleComponent,
|
||||
TooltipComponent,
|
||||
LegendComponent,
|
||||
]);
|
||||
|
||||
export default defineComponent({
|
||||
name: 'ColumnChart',
|
||||
components: {
|
||||
VChart,
|
||||
},
|
||||
provide: {
|
||||
[THEME_KEY]: 'dark',
|
||||
},
|
||||
setup() {
|
||||
const option = ref({
|
||||
title: {
|
||||
text: 'Traffic Sources',
|
||||
left: 'center',
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{a} <br/>{b} : {c} ({d}%)',
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left',
|
||||
data: ['Direct', 'Email', 'Ad Networks', 'Video Ads', 'Search Engines'],
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Traffic Sources',
|
||||
type: 'pie',
|
||||
radius: '55%',
|
||||
center: ['50%', '60%'],
|
||||
data: [
|
||||
{ value: 335, name: 'Direct' },
|
||||
{ value: 310, name: 'Email' },
|
||||
{ value: 234, name: 'Ad Networks' },
|
||||
{ value: 135, name: 'Video Ads' },
|
||||
{ value: 1548, name: 'Search Engines' },
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
return { option };
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.chart {
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
@ -2,14 +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="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
<v-icon v-if="iconShow" 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" >
|
||||
<v-text-field
|
||||
id="startpicker"
|
||||
ref="startpicker"
|
||||
@ -19,16 +19,18 @@
|
||||
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"
|
||||
v-if="isRange"
|
||||
id="endpicker"
|
||||
ref="endpicker"
|
||||
v-model="toDtValue"
|
||||
@ -45,6 +47,9 @@
|
||||
</template>
|
||||
</v-text-field>
|
||||
</div>
|
||||
<!-- test -->
|
||||
<!-- <a-button @click="onOpenDatepicker()">Open</a-button> -->
|
||||
<!-- end test -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -70,18 +75,23 @@ export default {
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
default: 12,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 8,
|
||||
default: 12,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
isRangeOption:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
@ -103,6 +113,7 @@ export default {
|
||||
searchParam(state) {
|
||||
return state.pageData[this.parentPrgmId];
|
||||
},
|
||||
isDarkMode: "isDarkMode",
|
||||
}),
|
||||
myCmCycle() {
|
||||
return this.searchParam.cmCycle;
|
||||
@ -194,6 +205,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() {
|
||||
@ -259,8 +276,10 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
const startContainer = document.getElementById('startpicker-container');
|
||||
// const startContainer = document.getElementById('datepicker-container');
|
||||
const startTarget = document.getElementById('startpicker');
|
||||
const endContainer = document.getElementById('endpicker-container');
|
||||
// const endContainer = document.getElementById('datepicker-container');
|
||||
const endTarget = document.getElementById('endpicker');
|
||||
|
||||
// datepicker 생성
|
||||
@ -304,6 +323,10 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
onOpenDatepicker() {
|
||||
this.startDatepickerInstance.open();
|
||||
this.endDatepickerInstance.open();
|
||||
},
|
||||
getStartDt() {
|
||||
const dt = this.startDatepickerInstance.getDate();
|
||||
this.setPageData({
|
||||
@ -401,34 +424,8 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.datepicker-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
@import "@/assets/scss/datepicker.scss";
|
||||
|
||||
.v-input {
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container,
|
||||
#endpicker-container {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__custom {
|
||||
flex: 0 0 auto;
|
||||
&.half {
|
||||
width: calc(50% - 20px);
|
||||
}
|
||||
}
|
||||
::v-deep {
|
||||
.tui-timepicker-row {
|
||||
display: flex;
|
||||
|
@ -2,9 +2,15 @@
|
||||
<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="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
<!-- <v-icon x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
> -->
|
||||
<v-icon
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>
|
||||
$icoBulletPoint
|
||||
</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
@ -19,14 +25,17 @@
|
||||
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-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">~</div> -->
|
||||
<div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">
|
||||
<img :src="arrowIcon" alt="">
|
||||
</div>
|
||||
<v-text-field
|
||||
v-show="isRange"
|
||||
id="endpicker"
|
||||
@ -104,6 +113,7 @@ export default {
|
||||
return state.pageData[this.parentPrgmId];
|
||||
},
|
||||
}),
|
||||
isDarkMode: "isDarkMode",
|
||||
myCmCycle() {
|
||||
return this.searchParam.cmCycle;
|
||||
},
|
||||
@ -194,6 +204,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() {
|
||||
@ -401,34 +417,8 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.datepicker-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
@import "@/assets/scss/datepicker.scss";
|
||||
|
||||
.v-input {
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container,
|
||||
#endpicker-container {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: -260px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__custom {
|
||||
flex: 0 0 auto;
|
||||
&.half {
|
||||
width: calc(50% - 20px);
|
||||
}
|
||||
}
|
||||
::v-deep {
|
||||
.tui-timepicker-row {
|
||||
display: flex;
|
||||
|
@ -355,34 +355,8 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.datepicker-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
@import "@/assets/scss/datepicker.scss";
|
||||
|
||||
.v-input {
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container,
|
||||
#endpicker-container {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__custom {
|
||||
flex: 0 0 auto;
|
||||
&.half {
|
||||
width: calc(50% - 20px);
|
||||
}
|
||||
}
|
||||
::v-deep {
|
||||
.tui-timepicker-row {
|
||||
display: flex;
|
||||
|
@ -107,13 +107,16 @@ 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() {
|
||||
@ -160,7 +163,7 @@ export default {
|
||||
},
|
||||
created() {},
|
||||
async mounted() {
|
||||
// console.log(this.dataPath);
|
||||
console.log('--------------DEBUG----gridData: ', this.gridData);
|
||||
if (this.gridName) {
|
||||
this.gridInstance = this.$refs['tuigrid' + this.gridName];
|
||||
|
||||
@ -700,6 +703,11 @@ 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'] {
|
||||
|
47
components/common/MockChart.vue
Normal file
@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<client-only>
|
||||
<VChart
|
||||
:option="chartOption"
|
||||
ref="chart"
|
||||
style="width:400px; height:300px;"
|
||||
/>
|
||||
</client-only>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import Echarts from 'vue-echarts';
|
||||
// import 'echarts'
|
||||
|
||||
export default {
|
||||
// name: 'Vchart',
|
||||
// components: {
|
||||
// 'v-charts': Echarts,
|
||||
// },
|
||||
data() {
|
||||
return {
|
||||
chartOption: {
|
||||
series: [
|
||||
{
|
||||
type: 'gauge',
|
||||
progress: {
|
||||
show:true
|
||||
},
|
||||
detail: {
|
||||
valueAnimation: true,
|
||||
formatter: '{value}%'
|
||||
},
|
||||
data:[{
|
||||
value: 65,
|
||||
name: 'Progress'
|
||||
}]
|
||||
}
|
||||
]
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
console.log('test chart:')
|
||||
},
|
||||
|
||||
};
|
||||
</script>
|
27
components/common/PageTitle.vue
Normal file
@ -0,0 +1,27 @@
|
||||
<template>
|
||||
<h1 class="h1-title">
|
||||
<v-avatar size="12" :style="{ backgroundColor: 'currentColor' }"></v-avatar>
|
||||
{{ text ? text : menuNm}}
|
||||
</h1>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from 'vuex';
|
||||
|
||||
export default {
|
||||
name: "PageTitle",
|
||||
props: {
|
||||
text: {
|
||||
type: String,
|
||||
required: false,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
menuNm: state => state.activeMenuInfo.menuNm,
|
||||
}),
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
@ -313,34 +313,8 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.datepicker-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
@import "@/assets/scss/datepicker.scss";
|
||||
|
||||
.v-input {
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container,
|
||||
#endpicker-container {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__custom {
|
||||
flex: 0 0 auto;
|
||||
&.half {
|
||||
width: calc(50% - 20px);
|
||||
}
|
||||
}
|
||||
::v-deep {
|
||||
.tui-timepicker-row {
|
||||
display: flex;
|
||||
|
@ -1,9 +1,11 @@
|
||||
<template>
|
||||
<v-switch
|
||||
class="theme-switch"
|
||||
v-model="mode"
|
||||
@change="themeChange"
|
||||
></v-switch>
|
||||
<a-button
|
||||
class="btn-header"
|
||||
:color="mode ? 'dark' : 'light'"
|
||||
@click="themeChange"
|
||||
icon="bulb"
|
||||
>
|
||||
</a-button>
|
||||
</template>
|
||||
<script>
|
||||
import { mapState, mapMutations } from 'vuex';
|
||||
@ -26,8 +28,11 @@ export default {
|
||||
setThemeChange: 'setThemeChange',
|
||||
}),
|
||||
themeChange() {
|
||||
this.mode = !this.mode;
|
||||
this.$vuetify.theme.isDark = this.mode;
|
||||
this.setThemeChange(this.mode);
|
||||
console.log(this.mode)
|
||||
console.log(this.$vuetify.theme.isDark)
|
||||
},
|
||||
},
|
||||
};
|
||||
@ -41,6 +46,7 @@ export default {
|
||||
.v-input__control,
|
||||
.v-input__slot {
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
}
|
||||
.v-input--selection-controls__input {
|
||||
width: 100%;
|
||||
@ -68,20 +74,23 @@ export default {
|
||||
background-color: #f2f2f2;
|
||||
top: 2px;
|
||||
left: 0;
|
||||
background-image: url(../../assets/images/icon/ico-theme-light.png);
|
||||
// background-image: url(../../assets/images/icon/ico-theme-light.png);
|
||||
content: "light";
|
||||
background-size: 18px 18px;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
&.v-input--is-label-active {
|
||||
::v-deep {
|
||||
.v-input--switch__track {
|
||||
background-color: #383f5d;
|
||||
}
|
||||
.v-input--switch__thumb {
|
||||
transform: translate(38px, 0);
|
||||
background-image: url(../../assets/images/icon/ico-theme-dark.png);
|
||||
// transform: translate(38px, 0);
|
||||
// background-image: url(../../assets/images/icon/ico-theme-dark.png);
|
||||
content: 'dark';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,13 @@
|
||||
<template>
|
||||
<div class="d-flex flex-column justify-center align-center">
|
||||
<v-btn icon tile :ripple="false" @click="btnActionsFnc('addLeftToRight')">
|
||||
<!--<v-btn icon tile :ripple="false" @click="btnActionsFnc('addLeftToRight')">
|
||||
<v-icon>mdi-chevron-right</v-icon>
|
||||
</v-btn>
|
||||
<v-btn
|
||||
</v-btn> -->
|
||||
<a-button type="default" @click="btnActionsFnc('addLeftToRight')">
|
||||
<RightOutlines/>
|
||||
</a-button>
|
||||
|
||||
<!--<v-btn
|
||||
icon
|
||||
tile
|
||||
:ripple="false"
|
||||
@ -11,7 +15,10 @@
|
||||
@click="btnActionsFnc('removeRightToLeft')"
|
||||
>
|
||||
<v-icon>mdi-chevron-left</v-icon>
|
||||
</v-btn>
|
||||
</v-btn> -->
|
||||
<a-button class="mt-2" type="default" @click="btnActionsFnc('removeRightToLeft')">
|
||||
<LeftOutlines/>
|
||||
</a-button>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -1,6 +1,11 @@
|
||||
<template>
|
||||
<v-btn :ripple="false" @click="btnActionsFnc('add')">추가</v-btn>
|
||||
<!-- <v-btn :ripple="false" @click="btnActionsFnc('add')">추가</v-btn> -->
|
||||
<a-button type="primary" @click="btnActionsFnc('add')" class="v-btn-add-text" icon="plus">
|
||||
추가
|
||||
</a-button>
|
||||
</template>
|
||||
<style>
|
||||
</style>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
|
@ -1,5 +1,14 @@
|
||||
<template>
|
||||
<v-btn :ripple="false" @click="downloadExcelFile">액셀</v-btn>
|
||||
<!--<v-btn :ripple="false" @click="downloadExcelFile">액셀</v-btn>-->
|
||||
<a-button
|
||||
@click="downloadExcelFile"
|
||||
v-bind="$attrs"
|
||||
type="default"
|
||||
class="btn-default"
|
||||
icon="file-excel"
|
||||
:size="size"
|
||||
>액셀</a-button>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -33,6 +42,11 @@ export default {
|
||||
require: false,
|
||||
default: null,
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "middle", // small, middle, large
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -134,3 +148,5 @@ export default {
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
</style>
|
||||
|
@ -1,9 +1,10 @@
|
||||
<template>
|
||||
<div id="btnExeclUpload">
|
||||
<v-btn class="v-btn__round v-btn__excel" @click="uploadExcelFile">
|
||||
<!-- <v-btn class="v-btn__round v-btn__excel" @click="uploadExcelFile">
|
||||
<v-icon>mdi-file-excel</v-icon>
|
||||
엑셀 로드
|
||||
</v-btn>
|
||||
</v-btn> -->
|
||||
<a-button class="v-btn__round v-btn__excel" type="default" @click="uploadExcelFile">엑셀 로드</a-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<v-btn :ripple="false" @click="btnActionsFnc('remove')">삭제</v-btn>
|
||||
<!--<v-btn :ripple="false" @click="btnActionsFnc('remove')">삭제</v-btn>-->
|
||||
<a-button type="danger" @click="btnActionsFnc('remove')" ghost danger icon="delete">삭제</a-button>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
|
@ -1,16 +1,25 @@
|
||||
<template>
|
||||
<v-btn :ripple="false" @click="btnActionsFnc('save')">저장</v-btn>
|
||||
<!--<v-btn :ripple="false" @click="btnActionsFnc('save')">저장</v-btn>-->
|
||||
<!-- style="color: #1890ff; border-color: #1890ff" -->
|
||||
<a-button
|
||||
type="default"
|
||||
class="btn-default"
|
||||
@click="btnActionsFnc('save')"
|
||||
icon="save"
|
||||
>
|
||||
저장</a-button
|
||||
>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
myGrid: {
|
||||
require: true,
|
||||
},
|
||||
btnActionsFnc: {
|
||||
type: Function,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
props: {
|
||||
myGrid: {
|
||||
require: true,
|
||||
},
|
||||
btnActionsFnc: {
|
||||
type: Function,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
@ -1,10 +1,18 @@
|
||||
<template>
|
||||
<v-btn :ripple="false" @click="getSearch('prev')">조회</v-btn>
|
||||
<a-button icon="search" type="primary" @click="getSearch('prev')" class="search-button" :size="size">조회</a-button>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapMutations } from 'vuex';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
size: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "middle", // small, middle, large
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
getSearch() {
|
||||
@ -14,4 +22,6 @@ export default {
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss" scoped></style>
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<v-btn :ripple="false" @click="setTotal()">전체</v-btn>
|
||||
<!-- <v-btn :ripple="false" @click="setTotal()">전체</v-btn> -->
|
||||
<a-button type="default" @click="setTotal()">전체</a-button>
|
||||
|
||||
</template>
|
||||
<script>
|
||||
import { mapMutations } from 'vuex';
|
||||
|
@ -1,22 +1,22 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="d-flex" style="gap:8px">
|
||||
<component
|
||||
:is="buttonAuth.add ? 'BtnAddRow' : null"
|
||||
:btnActionsFnc="btnActionsFnc"
|
||||
/>
|
||||
<component
|
||||
:is="buttonAuth.remove ? 'BtnRemoveRow' : null"
|
||||
:btnActionsFnc="btnActionsFnc"
|
||||
/>
|
||||
<component
|
||||
:is="buttonAuth.save ? 'BtnSave' : null"
|
||||
:btnActionsFnc="btnActionsFnc"
|
||||
/>
|
||||
<component
|
||||
:is="buttonAuth.excel ? 'BtnExcelDownload' : null"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:gridName="bindingData"
|
||||
/>
|
||||
<component
|
||||
:is="buttonAuth.save ? 'BtnSave' : null"
|
||||
:btnActionsFnc="btnActionsFnc"
|
||||
/>
|
||||
<component
|
||||
:is="buttonAuth.remove ? 'BtnRemoveRow' : null"
|
||||
:btnActionsFnc="btnActionsFnc"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
34
components/common/card/AntCard.vue
Normal file
@ -0,0 +1,34 @@
|
||||
<template>
|
||||
<div class="custom-card">
|
||||
<a-card
|
||||
:class="['themed-card', cardClass]"
|
||||
:title="title"
|
||||
bordered
|
||||
ref="cardRef"
|
||||
@click="$emit('click')"
|
||||
>
|
||||
<slot />
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'AntCard',
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
cardClass: {
|
||||
type: [String, Array, Object],
|
||||
default: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.custom-card {
|
||||
border-top: 4px solid #1890ff;
|
||||
border-radius: 4px;
|
||||
}
|
||||
</style>
|
143
components/common/chartoptions/GaugeChart.js
Normal file
@ -0,0 +1,143 @@
|
||||
// Gauge chart options
|
||||
export default function getGaugeChartOption({ title, value, min = 0, max = 160, unit = '%', isDarkMode = false, backgroundRadius = 97 }) {
|
||||
const colorRanges = isDarkMode
|
||||
? [
|
||||
[0.375, '#49AA19'], // Dark Green
|
||||
// [0.5, '#B8860B'], // Dark Yellow
|
||||
[0.625, '#D89614'], // Dark Orange
|
||||
[1, '#D32029'], // Dark Red
|
||||
]
|
||||
: [
|
||||
[0.375, '#52C41A'], // Light Green
|
||||
// [0.5, '#FFD700'], // Light Yellow
|
||||
[0.625, '#FAAD14'], // Light Orange
|
||||
[1, '#F5222D'], // Light Red
|
||||
];
|
||||
// Old color range
|
||||
// const gaugeColors = [
|
||||
// [0, "#ed1c24"],
|
||||
// [0.6, "#ed1c24"],
|
||||
// [0.8, "#f7931e"],
|
||||
// [1.0, "#009245"],
|
||||
// ];
|
||||
// const gaugeColors2 = [
|
||||
// [0, "#009245"],
|
||||
// [0.6, "#009245"],
|
||||
// [0.8, "#f7931e"],
|
||||
// [1.0, "#ed1c24"],
|
||||
// ];
|
||||
return {
|
||||
grid: {
|
||||
// top: '-10%',
|
||||
bottom: 0,
|
||||
},
|
||||
title: {},
|
||||
graphic: [
|
||||
{
|
||||
type: "circle",
|
||||
left: "center",
|
||||
top: "center",
|
||||
shape: {
|
||||
r: backgroundRadius, // radius of the background circle
|
||||
},
|
||||
style: {
|
||||
fill: isDarkMode ? "#141415" : "#F5F5F5", // Light grey color
|
||||
opacity: 0.3, // Semi-transparent
|
||||
},
|
||||
z: 0, // make sure it's behind the gauge
|
||||
},
|
||||
],
|
||||
|
||||
series: [
|
||||
{
|
||||
type: "gauge",
|
||||
radius: "90%",
|
||||
startAngle: 225,
|
||||
endAngle: -45,
|
||||
min: min,
|
||||
max: max,
|
||||
// progress: {
|
||||
// show: true,
|
||||
// width: 15,
|
||||
// },
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
width: 12,
|
||||
// color: [
|
||||
// [0.375, "#3CB371"], // Green (0–60)
|
||||
// [0.5, "#FFD700"], // Yellow (60–80)
|
||||
// [0.625, "#FFA500"], // Orange (80–100)
|
||||
// [1, "#FF4500"], // Red (100–160)
|
||||
// ],
|
||||
color: colorRanges
|
||||
},
|
||||
},
|
||||
axisTick: {
|
||||
distance: -12,
|
||||
length: 5,
|
||||
lineStyle: {
|
||||
color: "#000000",
|
||||
width: 1,
|
||||
},
|
||||
},
|
||||
splitLine: {
|
||||
distance: -12,
|
||||
length: 8,
|
||||
lineStyle: {
|
||||
color: "#000000",
|
||||
width: 2,
|
||||
},
|
||||
},
|
||||
axisLabel: {
|
||||
color: isDarkMode ? "#fff" : "#333333",
|
||||
distance: 23,
|
||||
fontSize: 9,
|
||||
},
|
||||
pointer: {
|
||||
show: true,
|
||||
length: "70%",
|
||||
width: 6,
|
||||
itemStyle: {
|
||||
color: "#FA8C16", // Set your desired pointer color here
|
||||
},
|
||||
},
|
||||
title: {
|
||||
show: false,
|
||||
offsetCenter: [0, "40%"],
|
||||
fontSize: 18,
|
||||
},
|
||||
detail: {
|
||||
valueAnimation: true,
|
||||
fontWeight: 500, // or "normal", "lighter", "bolder", or a number like 600
|
||||
fontFamily: "Oxanium, sans-serif", // or any custom font
|
||||
fontSize: 30,
|
||||
lineHeight: 25,
|
||||
offsetCenter: [0, "60%"],
|
||||
color: isDarkMode ? "#fff" : "#333333",
|
||||
formatter: function (value) {
|
||||
return `{valueStyle|${value}}\n{percentStyle|${unit}}`;
|
||||
},
|
||||
rich: {
|
||||
// valueStyle: {
|
||||
// fontSize: 25,
|
||||
// fontWeight: "bold",
|
||||
// },
|
||||
percentStyle: {
|
||||
fontSize: 10,
|
||||
color: isDarkMode ? "#fff" : "#333333",
|
||||
// fontWeight: "normal",
|
||||
},
|
||||
},
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: 16,
|
||||
name: "에너지사용효율", // "Energy Usage Efficiency"
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
|
78
components/common/chartoptions/LineChart.js
Normal file
@ -0,0 +1,78 @@
|
||||
|
||||
export default function getLineChartOption({
|
||||
xAxisData = [],
|
||||
seriesData = [],
|
||||
legendData = [],
|
||||
isDarkMode = false,
|
||||
}) {
|
||||
|
||||
// const defaultColors = isDarkMode
|
||||
// ? ['#D32029', '#31B47B', '#D89614'] : ['#F5222D', '#31B47B', '#FAAD14'];
|
||||
|
||||
const defaultColors = isDarkMode
|
||||
? ['#31B47B', '#D89614', '#D32029'] : ['#31B47B', '#FAAD14', '#F5222D'];
|
||||
|
||||
const styledSeries = seriesData.map((item, index) => {
|
||||
const color = item.color || defaultColors[index % defaultColors.length];
|
||||
return {
|
||||
...item,
|
||||
itemStyle: {
|
||||
color,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '5%',
|
||||
top: '25%',
|
||||
containLabel: true,
|
||||
},
|
||||
|
||||
legend: {
|
||||
data: legendData,
|
||||
icon: 'circle',
|
||||
top: '0%',
|
||||
right: '5%',
|
||||
orient: 'horizontal',
|
||||
textStyle: {
|
||||
color: isDarkMode ? '#676A7B' : '#676A7B',
|
||||
},
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
splitLine: {
|
||||
show: false,
|
||||
},
|
||||
data: xAxisData,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: isDarkMode ? '#AAAAAA' : '#333333',
|
||||
},
|
||||
},
|
||||
axisLabel: {
|
||||
color: isDarkMode ? '#676A7B' : '#676A7B',
|
||||
},
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
position: 'left',
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: isDarkMode ? '#AAAAAA' : '#333333',
|
||||
},
|
||||
},
|
||||
axisLabel: {
|
||||
color: isDarkMode ? '#676A7B' : '#676A7B',
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
color: isDarkMode ? '#444444' : '#EEEEEE',
|
||||
},
|
||||
},
|
||||
},
|
||||
series: styledSeries,
|
||||
};
|
||||
}
|
119
components/common/checkbox/CheckBox.vue
Normal file
@ -0,0 +1,119 @@
|
||||
<template>
|
||||
<v-row class="search-box" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<!-- <v-checkbox
|
||||
v-model="chkValue"
|
||||
:disabled="disabledFlag"
|
||||
:readonly="readonly || false"
|
||||
:required="required || false"
|
||||
:false-value="false"
|
||||
:color="isDarkMode ? '#fff' : '#4777d9'"
|
||||
@change="modifyValue"
|
||||
></v-checkbox> -->
|
||||
<a-checkbox
|
||||
v-model:checked="chkValue"
|
||||
:disabled="disabledFlag"
|
||||
:readonly="readonly || false"
|
||||
:required="required || false"
|
||||
@change="modifyValue"
|
||||
>
|
||||
</a-checkbox>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations } from "vuex";
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
isDarkMode: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chkValue: false,
|
||||
testData: false,
|
||||
disabledFlag: false,
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: (state) => state.pageData,
|
||||
myBindingDara(state) {
|
||||
return state.pageData[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
myBindingDara: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.chkValue = val;
|
||||
},
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.chkValue = this.searchParam[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: "setPageData" }),
|
||||
modifyValue(e) {
|
||||
return this.setPageData({ [this.valueNm]: e });
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
146
components/common/checkbox/CheckBoxLabelChange.vue
Normal file
@ -0,0 +1,146 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="location == 'front'" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="icon" x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="textCols" @click="modifyValue">
|
||||
<v-checkbox
|
||||
v-model="chkValue"
|
||||
:disabled="disabledFlag"
|
||||
:readonly="readonly || false"
|
||||
:required="required || false"
|
||||
:false-value="false"
|
||||
@change="modifyValue"
|
||||
:class="isDarkMode ? 'checkbox-dark' : 'checkbox-light'"
|
||||
></v-checkbox>
|
||||
</v-col>
|
||||
<v-col
|
||||
style="margin-left: 5px; margin-top: 5px"
|
||||
v-if="location == 'rear'"
|
||||
:cols="labelCols"
|
||||
>
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="icon" x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations } from "vuex";
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
isDarkMode: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
icon: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
location: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "front",
|
||||
},
|
||||
disabledCheckOption: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chkValue: false,
|
||||
testData: false,
|
||||
disabledFlag: false,
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: (state) => state.pageData,
|
||||
myBindingData(state) {
|
||||
return state.pageData[this.parentPrgmId][this.valueNm];
|
||||
},
|
||||
bindingDisabledCheckOption(state) {
|
||||
if (state.pageData[this.parentPrgmId][this.disabledCheckOption] != undefined) {
|
||||
return state.pageData[this.parentPrgmId][this.disabledCheckOption];
|
||||
}
|
||||
},
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
myBindingData: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.chkValue = val;
|
||||
},
|
||||
},
|
||||
bindingDisabledCheckOption(val) {
|
||||
this.disabledFlag = val;
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.chkValue = this.searchParam[this.parentPrgmId][this.valueNm];
|
||||
if (this.searchParam[this.parentPrgmId][this.disabledCheckOption] != undefined) {
|
||||
this.disabledFlag = this.searchParam[this.parentPrgmId][this.disabledCheckOption];
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: "setPageData" }),
|
||||
modifyValue(e) {
|
||||
if (this.disabledFlag == true && e.target != undefined) {
|
||||
alert("기간이 한 시간 이내일 경우만 선택할 수 있습니다.");
|
||||
} else {
|
||||
if (e.target == undefined) {
|
||||
return this.setPageData({ [this.valueNm]: e });
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
@ -1,25 +1,24 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="item.label" cols="4">
|
||||
<v-row class="search-box" align="center" >
|
||||
<v-col v-if="item.label" cols="4" >
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
v-if="item.iconShow"
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="item.label ? 7 : ''">
|
||||
<v-col :cols="item.label ? 7 : ''" >
|
||||
<v-checkbox
|
||||
v-model="chkValue"
|
||||
style= "height: 36px; align-items: center;"
|
||||
:disabled="disabledFlag"
|
||||
:readonly="item.readonly || false"
|
||||
:required="item.required || false"
|
||||
:false-value="false"
|
||||
:color="isDarkMode ? '#fff' : '#4777d9'"
|
||||
:color="isDarkMode ? '#fff' : '#1890ff'"
|
||||
@change="modifyValue"
|
||||
></v-checkbox>
|
||||
</v-col>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<v-row no-gutters>
|
||||
<v-row class="form-row">
|
||||
<template v-for="(item, index) in detailList">
|
||||
<v-col
|
||||
v-if="!item.showValue"
|
||||
@ -44,6 +44,7 @@ import EgrpPysclQtyPop from '../modal/EgrpPysclQtyPop';
|
||||
import EqpmCalcPop from '../modal/EqpmCalcPop';
|
||||
import EqpmBaseInfoPop from '../modal/EqpmBaseInfoPop';
|
||||
import InputTextReg from './InputTextReg';
|
||||
import CustomInput from '../../form/CustomInput.vue';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
@ -87,7 +88,8 @@ export default {
|
||||
EgrpPysclQtyPop,
|
||||
EqpmCalcPop,
|
||||
EqpmBaseInfoPop,
|
||||
InputTextReg
|
||||
InputTextReg,
|
||||
CustomInput
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
|
@ -1,18 +1,22 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="item.label" :cols="item.cols == 12 ? 2 : 4">
|
||||
<v-row class="search-box" align="center">
|
||||
<v-col v-if="item.label"
|
||||
:cols="item.labelCols !== undefined ? item.labelCols : item.cols == 12 ? 2 : 4"
|
||||
class="py-0"
|
||||
>
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
v-if="item.iconShow"
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ item.label }}
|
||||
<span v-if="item.essential">*</span>
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="item.label ? 7 : ''">
|
||||
<v-col v-if="!item.hideText"
|
||||
:cols="item.textCols !== undefined ? item.textCols : item.label ? 8 : ''" class="py-0">
|
||||
<!-- v-model="InputValue" -->
|
||||
<v-text-field
|
||||
v-model="textValue"
|
||||
|
@ -1,56 +1,39 @@
|
||||
<template>
|
||||
<v-row v-if="!item.showValue" class="search-box" align="center" no-gutters>
|
||||
<v-row v-if="!item.showValue" class="search-box" align="center">
|
||||
<v-col
|
||||
v-if="item.label"
|
||||
:cols="item.labelCols !== undefined ? item.labelCols : item.cols == 12 ? 2 : 4"
|
||||
:style="item.padding ? 'padding-left:10px' : ''"
|
||||
>
|
||||
class="py-0"
|
||||
>
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
v-if="item.iconShow"
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ item.label }}
|
||||
<span v-if="item.essential">*</span>
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col
|
||||
v-if="!item.hideText"
|
||||
:cols="item.textCols !== undefined ? item.textCols : item.label ? 7 : ''"
|
||||
>
|
||||
<v-text-field
|
||||
v-model="InputValue"
|
||||
class="v-input__custom"
|
||||
outlined
|
||||
:type="item.inputType || 'text'"
|
||||
:min="item.min || ''"
|
||||
:max="item.max || ''"
|
||||
:onkeyup="item.onkeyup || ''"
|
||||
:onkeydown="item.onkeydown || ''"
|
||||
:hide-details="true"
|
||||
:disabled="
|
||||
item.disabled ||
|
||||
(item.elseDisabled &&
|
||||
myBindingData &&
|
||||
item.elseDisabled !== myBindingData.rowStat) ||
|
||||
disabledCondition ||
|
||||
false
|
||||
"
|
||||
:readonly="
|
||||
item.readonly ||
|
||||
(item.elseReadonly &&
|
||||
myBindingData &&
|
||||
item.elseReadonly !== myBindingData.rowStat) ||
|
||||
readonlyCondition ||
|
||||
false
|
||||
"
|
||||
:required="item.required || false"
|
||||
:placeholder="item.placeholder"
|
||||
@input="modifyValue($event, item.valueNm)"
|
||||
@click="onClick($event, item, item.valueNm)"
|
||||
></v-text-field>
|
||||
<v-col class="py-0" v-if="!item.hideText" :cols="item.textCols !== undefined ? item.textCols : item.label ? 8 : ''" :style="item.noText ? 'padding-top:0px' : ''">
|
||||
<v-text-field v-model="InputValue" class="v-input__custom" outlined :type="item.inputType || 'text'"
|
||||
:min="item.min || ''" :max="item.max || ''" :onkeyup="item.onkeyup || ''"
|
||||
:onkeydown="item.onkeydown || ''" :hide-details="true" :disabled="item.disabled ||
|
||||
(item.elseDisabled &&
|
||||
myBindingData &&
|
||||
item.elseDisabled !== myBindingData.rowStat) ||
|
||||
disabledCondition ||
|
||||
false
|
||||
" :readonly="item.readonly ||
|
||||
(item.elseReadonly &&
|
||||
myBindingData &&
|
||||
item.elseReadonly !== myBindingData.rowStat) ||
|
||||
readonlyCondition ||
|
||||
false
|
||||
" :required="item.required || false" :placeholder="item.placeholder" @input="modifyValue($event, item.valueNm)"
|
||||
@click="onClick($event, item, item.valueNm)"></v-text-field>
|
||||
</v-col>
|
||||
<v-col v-if="item.lengthCheckFlag" :cols="1" text-align="center">
|
||||
<label for="" class="search-box-label px-1">
|
||||
|
@ -1,28 +1,22 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="item.label" :cols="item.labelCols">
|
||||
<v-row class="search-box" align="center" >
|
||||
<v-col v-if="item.label" :cols="item.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="item.iconShow" x-small :color="item.required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
<v-icon
|
||||
v-if="item.iconShow"
|
||||
small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>
|
||||
$icoBulletPoint
|
||||
</v-icon>
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="item.label ? item.textCols : ''">
|
||||
<v-text-field
|
||||
ref="formRef"
|
||||
:value="InputValue"
|
||||
class="v-input__custom"
|
||||
:disabled="item.disabled"
|
||||
:readonly="item.readonly"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
@keyup.enter="search"
|
||||
@keydown="keydownEvent"
|
||||
@keyup="keyupEvent"
|
||||
@input="inputEvent($event, item.valueNm)"
|
||||
:placeholder="item.placeholder"
|
||||
></v-text-field>
|
||||
<v-col :cols="item.label ? item.textCols : ''" class="py-0">
|
||||
<v-text-field ref="formRef" :value="InputValue" class="v-input__custom" :disabled="item.disabled"
|
||||
:readonly="item.readonly" outlined :hide-details="true" @keyup.enter="search" @keydown="keydownEvent"
|
||||
@keyup="keyupEvent" @input="inputEvent($event, item.valueNm)" :placeholder="item.placeholder"></v-text-field>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -74,7 +68,7 @@ export default {
|
||||
},
|
||||
},
|
||||
},
|
||||
created() {},
|
||||
created() { },
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
search() {
|
||||
@ -82,22 +76,22 @@ export default {
|
||||
this.setPageData({ isFind: true });
|
||||
}
|
||||
},
|
||||
inputEvent(str,n){
|
||||
inputEvent(str, n) {
|
||||
var temp = str.match(/[^ㄱ-ㅎ|ㅏ-ㅣ|가-힣\s]*/i)[0];
|
||||
var regExp = /[^a-z]*/;
|
||||
temp = temp.match(regExp)[0];
|
||||
var regExp = /[^a-z]*/;
|
||||
temp = temp.match(regExp)[0];
|
||||
this.$refs.formRef.lazyValue = temp;
|
||||
const dt = {
|
||||
columnName : n,
|
||||
value : this.newValue(this.$refs.formRef.lazyValue)
|
||||
columnName: n,
|
||||
value: this.newValue(this.$refs.formRef.lazyValue)
|
||||
};
|
||||
this.$emit('gridEditingFinish', dt);
|
||||
},
|
||||
keydownEvent($event){
|
||||
keydownEvent($event) {
|
||||
|
||||
},
|
||||
keyupEvent($event){
|
||||
|
||||
keyupEvent($event) {
|
||||
|
||||
},
|
||||
newValue(value) {
|
||||
let returnVal = value.trim();
|
||||
|
@ -1,35 +1,31 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col
|
||||
v-if="item.label"
|
||||
cols="4"
|
||||
:style="item.padding ? 'padding-left:10px' : ''"
|
||||
>
|
||||
<v-row class="search-box" align="center">
|
||||
<v-col v-if="item.label" :cols="item.label ? (item.textCols ? item.textCols : 4) : ''"
|
||||
:style="item.padding ? 'padding-left:10px' : ''" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
v-if="item.iconShow"
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="item.label ? (item.textCols ? item.textCols : 7) : ''">
|
||||
<v-select
|
||||
v-model="selectValue"
|
||||
:items="typeof item.list != 'string' ? item.list : myListData"
|
||||
<v-col :cols="item.label ? (item.textCols ? item.textCols : 8) : ''" class="py-0">
|
||||
<v-select v-model="selectValue" :items="typeof item.list != 'string' ? item.list : myListData"
|
||||
:item-text="typeof item.list != 'string' ? 'text' : item.itemText"
|
||||
:item-value="typeof item.list != 'string' ? 'value' : item.itemValue"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
:disabled="item.disabled || false"
|
||||
:readonly="item.readonly || false"
|
||||
:required="item.required || false"
|
||||
@change="modifyValue($event, item.valueNm)"
|
||||
></v-select>
|
||||
:item-value="typeof item.list != 'string' ? 'value' : item.itemValue" outlined :hide-details="true"
|
||||
class="v-select__custom" :disabled="item.disabled || false" :readonly="item.readonly || false"
|
||||
:required="item.required || false" @change="modifyValue($event, item.valueNm)" append-icon="">
|
||||
|
||||
<template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
|
||||
|
||||
</template>
|
||||
</v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -60,21 +56,25 @@ export default {
|
||||
computed: {
|
||||
...mapState({
|
||||
myListData(state) {
|
||||
let list = [...state.pageData[this.parentPrgmId][this.item.list]];
|
||||
list.forEach((item, idx) => {
|
||||
if (item.commCdNm && item.commCdNm == '전체') {
|
||||
list.splice(idx, 1);
|
||||
}
|
||||
if (this.item.addNull && idx == 0) {
|
||||
list.unshift({
|
||||
commCd: '',
|
||||
commCdNm: '',
|
||||
commCdAbbrnm: '',
|
||||
commGrpCd: 'EM_ECC_KIND',
|
||||
});
|
||||
}
|
||||
});
|
||||
return list;
|
||||
try{
|
||||
let list = [...state.pageData[this.parentPrgmId][this.item.list]];
|
||||
list.forEach((item, idx) => {
|
||||
if (item.commCdNm && item.commCdNm == '전체') {
|
||||
list.splice(idx, 1);
|
||||
}
|
||||
if (this.item.addNull && idx == 0) {
|
||||
list.unshift({
|
||||
commCd: '',
|
||||
commCdNm: '',
|
||||
commCdAbbrnm: '',
|
||||
commGrpCd: 'EM_ECC_KIND',
|
||||
});
|
||||
}
|
||||
});
|
||||
return list;
|
||||
}catch(err) {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
myBindingData(state) {
|
||||
if (!this.bindingData) {
|
||||
@ -110,7 +110,7 @@ export default {
|
||||
},
|
||||
},
|
||||
},
|
||||
created() {},
|
||||
created() { },
|
||||
methods: {
|
||||
...mapMutations({ setGridDataEdit: 'setGridDataEdit' }),
|
||||
modifyValue(v, n) {
|
||||
|
@ -4,13 +4,13 @@
|
||||
v-if="item.label"
|
||||
:cols="item.cols == 12 ? 2 : 4"
|
||||
:style="item.padding ? 'padding-left:10px' : ''"
|
||||
class="py-0"
|
||||
>
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ item.label }}
|
||||
<span v-if="item.essential">*</span>
|
||||
@ -41,6 +41,7 @@
|
||||
:required="item.required || false"
|
||||
:maxlength="item.maxlength"
|
||||
@input="modifyValue($event, item.valueNm)"
|
||||
outlined
|
||||
></v-textarea>
|
||||
</v-col>
|
||||
<v-col v-if="item.lengthCheckFlag" :cols="1" text-align="center">
|
||||
|
@ -1,9 +1,12 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-row class="search-box" align="end" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow" x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
@ -12,6 +15,7 @@
|
||||
<v-text-field
|
||||
v-model="InputValue"
|
||||
class="v-input__custom"
|
||||
:class="customClass"
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
outlined
|
||||
@ -21,6 +25,9 @@
|
||||
@keyup="keyupEvent"
|
||||
:placeholder="placeholder"
|
||||
></v-text-field>
|
||||
<!-- <a-input v-model:value="InputValue" class="v-input__custom" :disabled="disabled" :readonly="readonly"
|
||||
:placeholder="placeholder" @pressEnter="search" @keydown="keydownEvent" @keyup="keyupEvent" :size="size" /> -->
|
||||
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -58,12 +65,12 @@ export default {
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
default: 12,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
default: 12,
|
||||
},
|
||||
searchOption: {
|
||||
type: Boolean,
|
||||
@ -74,19 +81,28 @@ export default {
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
iconShow:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:true
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
replaceList:{
|
||||
type:Array,
|
||||
require:false,
|
||||
default:null
|
||||
replaceList: {
|
||||
type: Array,
|
||||
require: false,
|
||||
default: null
|
||||
},
|
||||
placeholder:{
|
||||
type:String,
|
||||
require:false
|
||||
placeholder: {
|
||||
type: String,
|
||||
require: false
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "middle",
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@ -103,8 +119,8 @@ export default {
|
||||
},
|
||||
set(value) {
|
||||
if (!this.diffModel) {
|
||||
if(this.replaceList){
|
||||
for(var i=0; i<this.replaceList; i++){
|
||||
if (this.replaceList) {
|
||||
for (var i = 0; i < this.replaceList; i++) {
|
||||
value.replaceAll(this.replaceList[i]);
|
||||
}
|
||||
}
|
||||
@ -113,7 +129,7 @@ export default {
|
||||
},
|
||||
},
|
||||
},
|
||||
created() {},
|
||||
created() { },
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
search() {
|
||||
@ -121,11 +137,11 @@ export default {
|
||||
this.setPageData({ isFind: true });
|
||||
}
|
||||
},
|
||||
keydownEvent($event){
|
||||
keydownEvent($event) {
|
||||
},
|
||||
keyupEvent($event){
|
||||
if(this.replaceList){
|
||||
for(var i=0; i<this.replaceList.length; i++){
|
||||
keyupEvent($event) {
|
||||
if (this.replaceList) {
|
||||
for (var i = 0; i < this.replaceList.length; i++) {
|
||||
this.InputValue = this.InputValue.replaceAll(this.replaceList[i], '');
|
||||
}
|
||||
}
|
||||
|
@ -2,8 +2,11 @@
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow" x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="item.label" :cols="item.cols == 12 ? 2 : 4">
|
||||
<v-col v-if="item.label" :cols="item.labelCols !== undefined ? item.labelCols : item.cols == 12 ? 2 : 4">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
@ -28,10 +28,14 @@
|
||||
></v-text-field>
|
||||
</template>
|
||||
<template v-else>
|
||||
<v-btn :ripple="false" @click="dialog = !dialog">
|
||||
<!-- <v-icon>mdi-content-save</v-icon> -->
|
||||
<!-- <v-icon>mdi-content-save</v-icon> -->
|
||||
<!-- <v-btn :ripple="false" @click="dialog = !dialog">
|
||||
<span>비밀번호 {{ isPassword }}</span>
|
||||
</v-btn>
|
||||
</v-btn> -->
|
||||
<a-button :ripple="false" @click="dialog = !dialog" class="ant-btn-outlined">
|
||||
<!-- <v-icon>mdi-content-save</v-icon> -->
|
||||
비밀번호 {{ isPassword }}
|
||||
</a-button>
|
||||
</template>
|
||||
</v-col>
|
||||
|
||||
@ -48,7 +52,7 @@
|
||||
</label>
|
||||
<v-text-field
|
||||
v-model.trim="firstPswd"
|
||||
class="v-input__custom"
|
||||
class="v-input-popup__custom"
|
||||
type="password"
|
||||
:readonly="!isFocused"
|
||||
@focus="isFocused = true"
|
||||
@ -61,7 +65,7 @@
|
||||
</label>
|
||||
<v-text-field
|
||||
v-model.trim="secondPswd"
|
||||
class="v-input__custom"
|
||||
class="v-input-popup__custom"
|
||||
type="password"
|
||||
:readonly="!isFocused"
|
||||
@focus="isFocused = true"
|
||||
@ -72,8 +76,15 @@
|
||||
<v-divider></v-divider>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="primary" dark @click="setUpdate()">확인</v-btn>
|
||||
<v-btn color="primary" dark @click="close()">닫기</v-btn>
|
||||
<!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> -->
|
||||
<div>
|
||||
<a-button @click="close()" class="btn-default">삭제</a-button>
|
||||
<a-button type="primary" @click="setUpdate()" class="v-btn-add-text">
|
||||
확인
|
||||
</a-button>
|
||||
</div>
|
||||
<!-- <v-btn color="primary" dark @click="close()">닫기</v-btn> -->
|
||||
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -135,8 +146,10 @@ export default {
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
console.log(value)
|
||||
},
|
||||
set(value) {
|
||||
console.log(value)
|
||||
return value;
|
||||
},
|
||||
},
|
||||
|
@ -1,119 +1,84 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col :cols="option.labelCols">
|
||||
<v-row class="search-box" align="center">
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</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>
|
||||
<v-col :cols="option.textCols">
|
||||
<v-text-field
|
||||
:readonly="item.readonly || false"
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@click="dialogOpenCloseEvent(dialog)"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:required="item.required || false"
|
||||
:disabled="item.disabled || false"
|
||||
></v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="option.textCols" class="py-0">
|
||||
<v-text-field :readonly="item.readonly || false" v-model="selectValue" append-icon=""
|
||||
class="v-input__custom" @click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true"
|
||||
:required="item.required || false" :disabled="item.disabled || false"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
<v-dialog v-model="dialog" scrollable width="540px">
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
<v-dialog v-model="dialog" scrollable width="800px">
|
||||
<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="12">
|
||||
<component
|
||||
:is="'SelectBox'"
|
||||
ref="SelectBox1"
|
||||
:labelCols="2"
|
||||
:textCols="6"
|
||||
:disabled="option.eqpmGrpDisableFlag"
|
||||
:propsValue="selectValue01"
|
||||
:itemList="selectValueList01"
|
||||
:label="'설비그룹'"
|
||||
@update:propsValue="selectValue01 = $event"
|
||||
:readonly="
|
||||
item.selectBoxReadonly != undefined
|
||||
? item.selectBoxReadonly
|
||||
: false
|
||||
"
|
||||
/>
|
||||
<div class="px-6 py-4 pt-0">
|
||||
<v-row align="center">
|
||||
<v-col :cols="5">
|
||||
<component :is="'SelectBox'" ref="SelectBox1" :labelCols="12" :textCols="12"
|
||||
:disabled="option.eqpmGrpDisableFlag" :propsValue="selectValue01" :iconShow="true"
|
||||
:itemList="selectValueList01" :label="'설비그룹'"
|
||||
@update:propsValue="selectValue01 = $event" :readonly="item.selectBoxReadonly != undefined
|
||||
? item.selectBoxReadonly
|
||||
: false
|
||||
" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="2">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon x-small color="primary" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
물리량명
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<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>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col cols="4" class="text-right">
|
||||
<v-btn :ripple="false" @click="search()">
|
||||
조회
|
||||
</v-btn>
|
||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||
<v-col :cols="7">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="12">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon small :class="['mr-1 icon-blue']">$icoBulletPoint</v-icon>
|
||||
물리량명
|
||||
</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>
|
||||
|
||||
</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()"
|
||||
class="search-button">조회</a-button>
|
||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||
초기화
|
||||
</v-btn> -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<div :style="'height: 429px;'">
|
||||
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
|
||||
<div ref="modalGridParent" class="h100 w100">
|
||||
<component
|
||||
:is="loadGrid && dialog ? 'Grid' : null"
|
||||
:gridName="grid_01"
|
||||
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@dblClick="setUpdate($event)"
|
||||
/>
|
||||
|
||||
<div :style="'height: calc(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>
|
||||
<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-btn
|
||||
v-if="item.closeBtnFg || false"
|
||||
:ripple="false"
|
||||
@click="deleteBtnAction($event)"
|
||||
>삭제</v-btn
|
||||
>
|
||||
<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>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -165,7 +130,7 @@ export default {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
eqpmGrpDisableFlag:{
|
||||
eqpmGrpDisableFlag: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
@ -185,7 +150,23 @@ export default {
|
||||
return {
|
||||
dialog: false,
|
||||
|
||||
loadGrid: 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 },
|
||||
]
|
||||
}
|
||||
},
|
||||
grid_01: 'grid_01',
|
||||
myModalKey: 'egrpPysclQtyPop',
|
||||
modalDataKey: 'pyscModalData',
|
||||
@ -300,7 +281,7 @@ export default {
|
||||
await this.setSelectValueList01();
|
||||
this.init();
|
||||
},
|
||||
mounted() {},
|
||||
mounted() { },
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
@ -317,39 +298,46 @@ export default {
|
||||
},
|
||||
async setSelectValueList01() {
|
||||
// form으로 popup 사용할 때 인자로 eqpmKindId, eqpmGrpId 보내줘야한다.
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmGrpCodeList',
|
||||
resKey: 'eqpmGrpCodeLists',
|
||||
sendParam: {
|
||||
eqpmKindId:
|
||||
this.item.eqpmKindId != undefined
|
||||
? this.item.eqpmKindId
|
||||
: this.searchParam.eqpmKindId,
|
||||
},
|
||||
// form을 통해 popup을 사용할 경우 -> this.item.eqpmKindId 사용
|
||||
// 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
||||
});
|
||||
if (res.length > 0) {
|
||||
this.selectValueList01 = await res.map(obj => {
|
||||
return {
|
||||
text: obj.eqpmGrpNm,
|
||||
value: obj.eqpmGrpId,
|
||||
};
|
||||
});
|
||||
// form을 통해 popup을 사용할 경우 -> this.item.eqpmGrpId 사용
|
||||
// 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
||||
// console.log('this.item.eqpmGrpId : ', this.item.eqpmGrpId);
|
||||
// console.log('this.searchParam.eqpmGrpId : ', this.searchParam.eqpmGrpId);
|
||||
this.selectValue01 =
|
||||
this.item.eqpmGrpId != undefined
|
||||
? this.item.eqpmGrpId
|
||||
: this.searchParam.eqpmGrpId != undefined
|
||||
? this.searchParam.eqpmGrpId
|
||||
: this.selectValueList01[0].value;
|
||||
} else {
|
||||
this.selectValueList01 = [];
|
||||
this.selectValue01 = null;
|
||||
}
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmGrpCodeList',
|
||||
// resKey: 'eqpmGrpCodeLists',
|
||||
// sendParam: {
|
||||
// eqpmKindId:
|
||||
// this.item.eqpmKindId != undefined
|
||||
// ? this.item.eqpmKindId
|
||||
// : this.searchParam.eqpmKindId,
|
||||
// },
|
||||
// // form을 통해 popup을 사용할 경우 -> this.item.eqpmKindId 사용
|
||||
// // 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
||||
// });
|
||||
// if (res.length > 0) {
|
||||
// this.selectValueList01 = await res.map(obj => {
|
||||
// return {
|
||||
// text: obj.eqpmGrpNm,
|
||||
// value: obj.eqpmGrpId,
|
||||
// };
|
||||
// });
|
||||
// // form을 통해 popup을 사용할 경우 -> this.item.eqpmGrpId 사용
|
||||
// // 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
||||
// // console.log('this.item.eqpmGrpId : ', this.item.eqpmGrpId);
|
||||
// // console.log('this.searchParam.eqpmGrpId : ', this.searchParam.eqpmGrpId);
|
||||
// this.selectValue01 =
|
||||
// this.item.eqpmGrpId != undefined
|
||||
// ? this.item.eqpmGrpId
|
||||
// : this.searchParam.eqpmGrpId != undefined
|
||||
// ? this.searchParam.eqpmGrpId
|
||||
// : this.selectValueList01[0].value;
|
||||
// } else {
|
||||
// this.selectValueList01 = [];
|
||||
// this.selectValue01 = null;
|
||||
// }
|
||||
|
||||
this.selectValueList01 = [
|
||||
{ label: '냉동기고온', value: '냉동기고온' },
|
||||
{ label: '냉동기저온', value: '냉동기저온' },
|
||||
{ label: '공조기', value: '공조기' },
|
||||
{ label: '보일러', value: '보일러' }
|
||||
];
|
||||
},
|
||||
search() {
|
||||
this.getGridData();
|
||||
@ -359,6 +347,7 @@ export default {
|
||||
this.getGridData();
|
||||
},
|
||||
gridInit() {
|
||||
// const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
@ -370,7 +359,7 @@ export default {
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: Object.assign(
|
||||
// Utility.defaultGridOption(this.$refs.modalGridParent.offsetHeight - 60, myOptions),
|
||||
Utility.defaultGridOption(400, myOptions),
|
||||
// Utility.defaultGridOption(100, myOptions),
|
||||
myOptions,
|
||||
),
|
||||
});
|
||||
@ -399,44 +388,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,
|
||||
@ -491,10 +480,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) {
|
||||
@ -562,33 +551,12 @@ var egrpPysclQtyPop = {
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid-cell.tui-grid-cell-has-tree
|
||||
.tui-grid-tree-extra-content
|
||||
+ .tui-grid-cell-content:before {
|
||||
.tui-grid-cell.tui-grid-cell-has-tree .tui-grid-tree-extra-content+.tui-grid-cell-content:before {
|
||||
content: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ant-btn-icon-only {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<!-- <v-col v-if="label" cols="2"> -->
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-col v-if="label" :cols="item.labelCols">
|
||||
<!-- <label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
@ -10,9 +10,14 @@
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
{{ item.label }}
|
||||
</label> -->
|
||||
<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>
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-col :cols="label ? item.textCols : ''">
|
||||
<!-- <v-col :cols="label ? 9 : ''"> -->
|
||||
<!-- :value="textfield" -->
|
||||
<v-text-field
|
||||
@ -644,8 +649,7 @@ const myColumns = [
|
||||
// 전력량 요금(원/kWh)
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// @import '@/assets/scss/common.scss';
|
||||
<style lang="scss" scoped>
|
||||
@import '@/assets/scss/var.scss';
|
||||
@each $theme in dark, light {
|
||||
.v-application.#{$theme}-mode {
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters >
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<!-- <v-col v-if="label" cols="2"> -->
|
||||
<!-- <v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
@ -27,18 +27,15 @@
|
||||
</v-col> -->
|
||||
|
||||
<!-- <v-row justify="center"> -->
|
||||
<v-dialog
|
||||
ref="popModal"
|
||||
v-model="dialog"
|
||||
width="1400"
|
||||
overlay-color="#000"
|
||||
overlay-opacity="0.8"
|
||||
scrollable
|
||||
>
|
||||
<v-dialog ref="popModal" v-model="dialog" width="1200" overlay-color="#000" overlay-opacity="0.8" scrollable>
|
||||
<!-- <template v-slot:activator="{ on, attrs }">
|
||||
<v-btn color="primary" dark v-bind="attrs" v-on="on">공정/설비</v-btn>
|
||||
</template> -->
|
||||
<v-card style="height: 100%">
|
||||
<v-card-title class="px-5 py-4 d-flex align-center justify-space-between">
|
||||
<span class="custom-title-4">가이드 알람이력</span>
|
||||
<a-button icon="close" type="text" @click="closePop()"></a-button>
|
||||
</v-card-title>
|
||||
<!-- <v-card-title
|
||||
class="v-card__title d-flex align-center justify-space-between"
|
||||
>
|
||||
@ -50,105 +47,66 @@
|
||||
<!-- <v-card-actions> -->
|
||||
<div class="pa-5">
|
||||
<!-- <v-text-field label="위치정보 선택"></v-text-field> -->
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="4">
|
||||
<div class="d-flex align-center justify-space-between pb-5">
|
||||
<v-card-title class="pa-0">가이드 알람이력</v-card-title>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="8" class="text-right">
|
||||
<v-btn icon tile :ripple="false" @click="closePop()">
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<!-- <v-row align="center" no-gutters>
|
||||
<v-col :cols="4">
|
||||
<div class="d-flex align-center justify-space-between pb-5">
|
||||
<v-card-title class="pa-0">가이드 알람이력</v-card-title>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="8" class="text-right">
|
||||
<v-btn icon tile :ripple="false" @click="closePop()">
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn>
|
||||
</v-col>
|
||||
</v-row> -->
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="1">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
설비
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<v-text-field
|
||||
v-if="dialog"
|
||||
v-model="InputValue['eqpmId']"
|
||||
class="v-input__custom"
|
||||
:readonly="true"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
>
|
||||
</v-text-field>
|
||||
<v-col :cols="12">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
설비
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<v-text-field
|
||||
v-if="dialog"
|
||||
v-model="InputValue['eqpmNm']"
|
||||
class="v-input__custom"
|
||||
:readonly="true"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
>
|
||||
</v-text-field>
|
||||
<v-col :cols="6" class="pr-2 py-0">
|
||||
<v-text-field v-if="dialog" v-model="InputValue['eqpmId']" class="v-input__custom"
|
||||
:readonly="true" outlined :hide-details="true">
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<v-col :cols="6" class="pl-2 py-0">
|
||||
<v-text-field v-if="dialog" v-model="InputValue['eqpmNm']" class="v-input__custom"
|
||||
:readonly="true" outlined :hide-details="true">
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
가이드지표
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<v-text-field
|
||||
v-if="dialog"
|
||||
v-model="InputValue['gdIdxId']"
|
||||
class="v-input__custom"
|
||||
:readonly="true"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
>
|
||||
</v-text-field>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters class="mt-4">
|
||||
<v-col :cols="12">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
가이드지표
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<v-text-field
|
||||
v-if="dialog"
|
||||
v-model="InputValue['gdIdxNm']"
|
||||
class="v-input__custom"
|
||||
:readonly="true"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
>
|
||||
</v-text-field>
|
||||
<v-col :cols="6" class="pr-2 py-0">
|
||||
<v-text-field v-if="dialog" v-model="InputValue['gdIdxId']" class="v-input__custom"
|
||||
:readonly="true" outlined :hide-details="true">
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="pl-2 py-0">
|
||||
<v-text-field v-if="dialog" v-model="InputValue['gdIdxNm']" class="v-input__custom"
|
||||
:readonly="true" outlined :hide-details="true">
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4">◇ 설비 가이드 정보</v-card-title>
|
||||
<v-card-title class="py-0 px-2 custom-title-4">설비 가이드 정보</v-card-title>
|
||||
</div>
|
||||
<div class="px-5" style="height:calc(100% - 76px)">
|
||||
<div ref="modalGridParent" class="w100 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid? 'Grid' : null"
|
||||
:dataPath="searchParam.modalData.eqpmDetlPop"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div id="gridParent" ref="gridParent" style="height: 500px">
|
||||
<div class="px-5" style="height:calc(100% - 76px)">
|
||||
<div ref="modalGridParent" class="w100 h100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null"
|
||||
:dataPath="searchParam.modalData.eqpmDetlPop" :gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div id="gridParent" ref="gridParent" style="height: 500px">
|
||||
<component
|
||||
:ref="'gridName' + parentPrgmId"
|
||||
:is="loadGrid && dialog ? 'Grid' : null"
|
||||
@ -160,11 +118,10 @@
|
||||
@dblClick="setUpdate()"
|
||||
/>
|
||||
</div> -->
|
||||
|
||||
<v-divider></v-divider>
|
||||
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="primary" dark @click="closePop()">확인</v-btn>
|
||||
<a-button color="primary" type="primary" @click="closePop()">확인</a-button>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -223,19 +180,19 @@ export default {
|
||||
components: {
|
||||
Grid,
|
||||
selectCodeList,
|
||||
dateUtility,
|
||||
dateUtility,
|
||||
InputText
|
||||
// Tree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
labelPrepend: true,
|
||||
modalDataKey:'modalData',
|
||||
modalDataKey: 'modalData',
|
||||
myModalKey: 'eqpmDetlPop',
|
||||
gridName: 'eqpmDetlGrid',
|
||||
loadGrid: false,
|
||||
setGrid:false,
|
||||
popCheck:false,
|
||||
loadGrid: false,
|
||||
setGrid: false,
|
||||
popCheck: false,
|
||||
dialog: false,
|
||||
activeRowData: {},
|
||||
checkedRowDataList: [],
|
||||
@ -258,32 +215,32 @@ export default {
|
||||
}
|
||||
},
|
||||
}),
|
||||
InputValue: {
|
||||
InputValue: {
|
||||
get() {
|
||||
return this.myBindingData;
|
||||
}
|
||||
},
|
||||
chkDialog(){
|
||||
chkDialog() {
|
||||
return this.dialog
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
async chkDialog(val){
|
||||
if(!val){
|
||||
this.closePop();
|
||||
}else{
|
||||
// await this.getRowGridData();
|
||||
|
||||
}
|
||||
async chkDialog(val) {
|
||||
if (!val) {
|
||||
this.closePop();
|
||||
} else {
|
||||
// await this.getRowGridData();
|
||||
|
||||
}
|
||||
},
|
||||
async popCheck(val){
|
||||
if(val){
|
||||
await this.getRowGridData();
|
||||
this.dialog= true;
|
||||
}else{
|
||||
this.dialog=false;
|
||||
}
|
||||
}
|
||||
async popCheck(val) {
|
||||
if (val) {
|
||||
await this.getRowGridData();
|
||||
this.dialog = true;
|
||||
} else {
|
||||
this.dialog = false;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
beforeCreate() {
|
||||
@ -297,7 +254,7 @@ export default {
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
setModalGridData: 'setModalGridData',
|
||||
setModalGridData: 'setModalGridData',
|
||||
setModalGridColumn: 'setModalGridColumn',
|
||||
setModalGridOption: 'setModalGridOption',
|
||||
}),
|
||||
@ -306,28 +263,32 @@ export default {
|
||||
}),
|
||||
init() {
|
||||
|
||||
this.gridInit();
|
||||
this.gridInit();
|
||||
},
|
||||
closePop(){
|
||||
this.popCheck= false;
|
||||
closePop() {
|
||||
this.popCheck = false;
|
||||
},
|
||||
search() {
|
||||
// this.getData();
|
||||
},
|
||||
gridInit(){
|
||||
// const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
gridInit() {
|
||||
// const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
|
||||
const myOptions = {
|
||||
rowHeaders: ['rowNum'],
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
minWidth:100
|
||||
},
|
||||
setScroll: true,
|
||||
};
|
||||
const myOptions = {
|
||||
rowHeaders: ['rowNum'],
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
minWidth: 100
|
||||
},
|
||||
// setScroll: true,
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
};
|
||||
|
||||
|
||||
this.setModalGridOption({
|
||||
this.setModalGridOption({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridName,
|
||||
modalDataKey: this.modalDataKey,
|
||||
@ -338,55 +299,55 @@ export default {
|
||||
),
|
||||
});
|
||||
|
||||
const myColumns= [
|
||||
{
|
||||
header : '발생일',
|
||||
name : 'totDttmDay',
|
||||
align:'center'
|
||||
},
|
||||
{
|
||||
header : '발생시간대',
|
||||
name : 'totDttmTime',
|
||||
align:'center'
|
||||
},
|
||||
{
|
||||
header : '가이드지표명',
|
||||
minWidth:200,
|
||||
name : 'gdIdxNm',
|
||||
},
|
||||
{
|
||||
header : '주의',
|
||||
width:100,
|
||||
name : 'careStndVal',
|
||||
align:'center'
|
||||
},
|
||||
{
|
||||
header : '경고',
|
||||
width:100,
|
||||
name : 'warnStndVal',
|
||||
align:'center'
|
||||
},
|
||||
{
|
||||
header : '가이드값',
|
||||
width:100,
|
||||
name : 'totVal',
|
||||
align:'center'
|
||||
},
|
||||
{
|
||||
header : '알람내용',
|
||||
minWidth:300,
|
||||
width:'auto',
|
||||
name : 'alrmMsg',
|
||||
},
|
||||
{
|
||||
header : '알람종류',
|
||||
name : 'alrmKind',
|
||||
hidden:true
|
||||
},
|
||||
const myColumns = [
|
||||
{
|
||||
header: '발생일',
|
||||
name: 'totDttmDay',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '발생시간대',
|
||||
name: 'totDttmTime',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '가이드지표명',
|
||||
minWidth: 200,
|
||||
name: 'gdIdxNm',
|
||||
},
|
||||
{
|
||||
header: '주의',
|
||||
width: 100,
|
||||
name: 'careStndVal',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '경고',
|
||||
width: 100,
|
||||
name: 'warnStndVal',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '가이드값',
|
||||
width: 100,
|
||||
name: 'totVal',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '알람내용',
|
||||
minWidth: 300,
|
||||
width: 'auto',
|
||||
name: 'alrmMsg',
|
||||
},
|
||||
{
|
||||
header: '알람종류',
|
||||
name: 'alrmKind',
|
||||
hidden: true
|
||||
},
|
||||
|
||||
]
|
||||
]
|
||||
|
||||
this.setModalGridColumn({
|
||||
this.setModalGridColumn({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridName,
|
||||
modalDataKey: this.modalDataKey,
|
||||
@ -394,59 +355,57 @@ export default {
|
||||
});
|
||||
|
||||
|
||||
// this.getRowGridData();
|
||||
},
|
||||
async getRowGridData(){
|
||||
this.loadGrid =false;
|
||||
var res = await this.postApiReturn({
|
||||
this.getRowGridData();
|
||||
},
|
||||
async getRowGridData() {
|
||||
this.loadGrid = false;
|
||||
var res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmDetailPop',
|
||||
resKey: 'eqpmDetlPopData',
|
||||
sendParam: {
|
||||
gdIdxId : this.myBindingData.gdIdxId,
|
||||
eqpmId : this.myBindingData.eqpmId,
|
||||
fromDt : this.myBindingData.fromDt,
|
||||
toDt : this.myBindingData.toDt
|
||||
gdIdxId: this.myBindingData.gdIdxId,
|
||||
eqpmId: this.myBindingData.eqpmId,
|
||||
fromDt: this.myBindingData.fromDt,
|
||||
toDt: this.myBindingData.toDt
|
||||
},
|
||||
});
|
||||
const dayjs = require('dayjs');
|
||||
var newRes = res.map(item=>
|
||||
item = {
|
||||
...item,
|
||||
totDttmDay : Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
|
||||
totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH'),
|
||||
}
|
||||
);
|
||||
const dayjs = require('dayjs');
|
||||
var newRes = res.map(item =>
|
||||
item = {
|
||||
...item,
|
||||
totDttmDay: Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
|
||||
totDttmTime: Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1, 'h').format('HH'),
|
||||
}
|
||||
);
|
||||
|
||||
this.setModalGridData({
|
||||
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridName,
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: newRes,
|
||||
});
|
||||
|
||||
|
||||
this.loadGrid=true;
|
||||
|
||||
this.setGrid = true;
|
||||
}
|
||||
this.loadGrid = true;
|
||||
|
||||
this.setGrid = true;
|
||||
}
|
||||
},
|
||||
};
|
||||
var eqpmDetlPop ={
|
||||
eqpmDetlGrid:{
|
||||
data:[],
|
||||
column:[],
|
||||
option:{}
|
||||
}
|
||||
var eqpmDetlPop = {
|
||||
eqpmDetlGrid: {
|
||||
data: [],
|
||||
column: [],
|
||||
option: {}
|
||||
}
|
||||
}
|
||||
|
||||
// 전력량 요금(원/kWh)
|
||||
</script>
|
||||
<style lang="scss">
|
||||
<style lang="scss" scoped>
|
||||
// @import '@/assets/scss/common/grid.scss';
|
||||
.tui-grid-scrollbar-left-bottom {
|
||||
display: none !important;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
115
components/common/modal/EnrgEffcEqpmDetailPop_bk.vue
Normal file
@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- Detail Modal -->
|
||||
<a-modal v-model="showDetailModal" title="가이드 알람이력" width="1200px" :footer="null"
|
||||
:style="{ borderRadius: '8px', overflow: 'hidden' }" :bodyStyle="{ paddingTop: '0px' }">
|
||||
<!-- Top Input Fields -->
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 16px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">설비</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="12">
|
||||
<a-input value="설비명" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-input value="가이드지표" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 16px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">가이드지표</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="12">
|
||||
<a-input value="설비명" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-input value="가이드지표" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-divider />
|
||||
<!-- Table -->
|
||||
<h3 style=" margin-bottom: 16px">설비 가이드 정보</h3>
|
||||
<a-table :columns="modalTableColumns" :dataSource="modalTableData" rowKey="No" size="small" bordered
|
||||
:pagination="false" />
|
||||
|
||||
<!-- Footer Buttons -->
|
||||
<div style="text-align: right; margin-top: 16px;">
|
||||
<a-button @click="showDetailModal = false">닫기</a-button>
|
||||
<a-button type="primary" style="margin-left: 8px; color:#fff" @click="confirmModal">확인</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
showDetailModal: false,
|
||||
selectedRecord: null,
|
||||
modalTableColumns: [
|
||||
{ title: 'No.', dataIndex: 'No', key: 'No', align: 'center' },
|
||||
{ title: '발생일', dataIndex: '발생일', key: '발생일' },
|
||||
{ title: '발생시간대', dataIndex: '발생시간대', key: '발생시간대' },
|
||||
{ title: '가이드지표명', dataIndex: '가이드지표명', key: '가이드지표명' },
|
||||
{ title: '주의', dataIndex: '주의', key: '주의' },
|
||||
{ title: '경고', dataIndex: '경고', key: '경고' },
|
||||
{ title: '가이드값', dataIndex: '가이드값', key: '가이드값' },
|
||||
{ title: '알랑내용', dataIndex: '알랑내용', key: '알랑내용' },
|
||||
],
|
||||
modalTableData: [
|
||||
{
|
||||
No: 1,
|
||||
발생일: '2025-06-01',
|
||||
발생시간대: '02-03',
|
||||
가이드지표명: '냉수 출구 온도 평균 편차',
|
||||
주의: 3,
|
||||
경고: 2,
|
||||
가이드값: -1.23,
|
||||
알랑내용: '[심각]냉수3과 온도차가 7.72°C로 낮음(평균 15.44*C 대비 7.72°C 낮음) - UT_HT_CH1C',
|
||||
},
|
||||
{
|
||||
No: 2,
|
||||
발생일: '2025-06-02',
|
||||
발생시간대: '02-03',
|
||||
가이드지표명: '냉수 출구 온도 평균 편차',
|
||||
주의: 2,
|
||||
경고: 1,
|
||||
가이드값: -1.45,
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleNgCntClick(record) {
|
||||
this.selectedRecord = record;
|
||||
this.showDetailModal = true;
|
||||
},
|
||||
confirmModal() {
|
||||
this.showDetailModal = false;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.ant-modal-header {
|
||||
border-bottom: none;
|
||||
border-radius: 8px 8px 0 0;
|
||||
}
|
||||
|
||||
.ant-modal-content {
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.ant-modal-title,
|
||||
h3 {
|
||||
font-weight: 600
|
||||
}
|
||||
</style>
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters >
|
||||
<!-- <v-col v-if="label" cols="2"> -->
|
||||
<!-- <v-col v-if="label" :cols="labelCols">
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<!-- <v-col v-if="label" cols="2"> -->
|
||||
<!-- <v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
@ -12,7 +12,7 @@
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col> -->
|
||||
<!-- <v-col :cols="label ? textCols : ''">
|
||||
<!-- <v-col :cols="label ? textCols : ''">
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
@ -26,20 +26,13 @@
|
||||
></v-text-field>
|
||||
</v-col> -->
|
||||
|
||||
<!-- <v-row justify="center"> -->
|
||||
<v-dialog
|
||||
ref="popModal"
|
||||
v-model="dialog"
|
||||
width="1400"
|
||||
overlay-color="#000"
|
||||
overlay-opacity="0.8"
|
||||
scrollable
|
||||
>
|
||||
<!-- <template v-slot:activator="{ on, attrs }">
|
||||
<!-- <v-row justify="center"> -->
|
||||
<v-dialog ref="popModal" v-model="dialog" width="800" overlay-color="#000" overlay-opacity="0.8" scrollable>
|
||||
<!-- <template v-slot:activator="{ on, attrs }">
|
||||
<v-btn color="primary" dark v-bind="attrs" v-on="on">공정/설비</v-btn>
|
||||
</template> -->
|
||||
<v-card style="height: 100%">
|
||||
<!-- <v-card-title
|
||||
<v-card style="height: 100%">
|
||||
<!-- <v-card-title
|
||||
class="v-card__title d-flex align-center justify-space-between"
|
||||
>
|
||||
<span class="custom-title-4">{{ '' }}</span>
|
||||
@ -47,10 +40,13 @@
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn>
|
||||
</v-card-title> -->
|
||||
<!-- <v-card-actions> -->
|
||||
<div class="pa-5">
|
||||
<!-- <v-text-field label="위치정보 선택"></v-text-field> -->
|
||||
<v-row align="center" no-gutters>
|
||||
<!-- <v-card-actions> -->
|
||||
<!-- <v-text-field label="위치정보 선택"></v-text-field> -->
|
||||
<v-card-title class="pa-5 d-flex align-center justify-space-between">
|
||||
<span class="custom-title-4">가이드 정보</span>
|
||||
<a-button icon="close" type="text" @click="closePop()"></a-button>
|
||||
</v-card-title>
|
||||
<!-- <v-row align="center" no-gutters>
|
||||
<v-col :cols="4">
|
||||
<div class="d-flex align-center justify-space-between pb-5">
|
||||
<v-card-title class="pa-0">가이드 정보</v-card-title>
|
||||
@ -61,208 +57,92 @@
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="2">
|
||||
</v-row> -->
|
||||
<div class="px-5 pb-3">
|
||||
<v-row align="center" no-gutters>
|
||||
<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 small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
가이드지표
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<v-text-field
|
||||
v-if="dialog"
|
||||
v-model="InputValue['gdIdxId']"
|
||||
class="v-input__custom"
|
||||
:readonly="true"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
>
|
||||
<v-col :cols="6" class="pr-2">
|
||||
<v-text-field v-if="dialog" v-model="InputValue['gdIdxId']" class="v-input__custom" :readonly="true"
|
||||
outlined :hide-details="true">
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<v-text-field
|
||||
v-if="dialog"
|
||||
v-model="InputValue['gdIdxNm']"
|
||||
class="v-input__custom"
|
||||
:readonly="true"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="pl-2">
|
||||
<v-text-field v-if="dialog" v-model="InputValue['gdIdxNm']" class="v-input__custom" :readonly="true"
|
||||
outlined :hide-details="true">
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4">가이드 정보</v-card-title>
|
||||
</div>
|
||||
<div class="px-5">
|
||||
<v-row>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="계산코드"
|
||||
valueNm="calcProc"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-divider class="mt-5 mb-2"></v-divider>
|
||||
</div>
|
||||
|
||||
<div class="px-5 pb-4">
|
||||
<v-row align="center">
|
||||
<v-col :cols="6" class="py-2 pr-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="계산코드" valueNm="calcProc"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
</v-col>
|
||||
<v-col :cols="12" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="계산설명"
|
||||
valueNm="calcDesc"
|
||||
:iconShow="true"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:readonly="true"
|
||||
/>
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="계산설명" valueNm="calcDesc"
|
||||
:iconShow="true" :labelCols="12" :textCols="12" :readonly="true" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="물리량1"
|
||||
valueNm="pysclQtyId1"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
<v-col :cols="6" class="py-2 pr-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="물리량1" valueNm="pysclQtyId1"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="물리량2"
|
||||
valueNm="pysclQtyId2"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
<v-col :cols="6" class="py-2 pl-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="물리량2" valueNm="pysclQtyId2"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="물리량3"
|
||||
valueNm="pysclQtyId3"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
<v-col :cols="6" class="py-2 pr-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="물리량3" valueNm="pysclQtyId3"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="물리량4"
|
||||
valueNm="pysclQtyId4"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
<v-col :cols="6" class="py-2 pl-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="물리량4" valueNm="pysclQtyId4"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="카테고리1"
|
||||
valueNm="ctgr1"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
<v-col :cols="6" class="py-2 pr-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="카테고리1" valueNm="ctgr1"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="카테고리2"
|
||||
valueNm="ctgr2"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
<v-col :cols="6" class="py-2 pl-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="카테고리2" valueNm="ctgr2"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="주의기준값"
|
||||
valueNm="careStndVal"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
<v-col :cols="6" class="py-2 pr-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="주의기준값" valueNm="careStndVal"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="경고기준값"
|
||||
valueNm="warnStndVal"
|
||||
:iconShow="true"
|
||||
:readonly="true"
|
||||
:labelCols="4"
|
||||
:textCols="6"
|
||||
/>
|
||||
<v-col :cols="6" class="py-2 pr-2">
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="경고기준값" valueNm="warnStndVal"
|
||||
:iconShow="true" :readonly="true" :labelCols="12" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="12" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="알람메세지"
|
||||
valueNm="alrmMsg"
|
||||
:iconShow="true"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:readonly="true"
|
||||
/>
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="알람메세지" valueNm="alrmMsg"
|
||||
:iconShow="true" :labelCols="12" :textCols="12" :readonly="true" />
|
||||
</v-col>
|
||||
<v-col :cols="12" class="py-2">
|
||||
<InputText
|
||||
id="gdIdx_InputText"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
label="가이드방법"
|
||||
valueNm="gdMeth"
|
||||
:iconShow="true"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:readonly="true"
|
||||
/>
|
||||
<InputText id="gdIdx_InputText" :parentPrgmId="parentPrgmId" label="가이드방법" valueNm="gdMeth"
|
||||
:iconShow="true" :labelCols="12" :textCols="12" :readonly="true" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<div style="height:20px;"></div>
|
||||
<v-divider></v-divider>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="primary" dark @click="closePop()">확인</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</v-row>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<a-button color="primary" type="primary" @click="closePop()">확인</a-button>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -274,175 +154,175 @@ import InputText from '~/components/common/input/InputText';
|
||||
import dateUtility from '~/plugins/dateUtility';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
default: '비교대상 최대(20개)',
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '전력 계약 정보',
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '',
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '전력 계약 목록',
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
item: {
|
||||
type: Object,
|
||||
require: true,
|
||||
},
|
||||
bindingData: {
|
||||
type: String,
|
||||
require: false,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
Grid,
|
||||
selectCodeList,
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
default: '비교대상 최대(20개)',
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '전력 계약 정보',
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '',
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '전력 계약 목록',
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
item: {
|
||||
type: Object,
|
||||
require: true,
|
||||
},
|
||||
bindingData: {
|
||||
type: String,
|
||||
require: false,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
Grid,
|
||||
selectCodeList,
|
||||
dateUtility,
|
||||
InputText
|
||||
// Tree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
labelPrepend: true,
|
||||
modalDataKey:'modalData2',
|
||||
myModalKey: 'gdIdxDetPop',
|
||||
gridName: 'gdIdxDetPop',
|
||||
loadGrid: false,
|
||||
setGrid:false,
|
||||
popCheck:false,
|
||||
dialog: false,
|
||||
activeRowData: {},
|
||||
checkedRowDataList: [],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
// searchParam: state => state.pageData,
|
||||
searchParam(state) {
|
||||
return state.pageData[this.parentPrgmId];
|
||||
},
|
||||
myBindingData(state) {
|
||||
//return state.pageData[this.parentPrgmId]["rowGridSelectData"];
|
||||
if (!this.bindingData) {
|
||||
return state.pageData[this.parentPrgmId]['rowGridSelectData'];
|
||||
} else {
|
||||
return state.pageData[this.parentPrgmId][this.bindingData][
|
||||
'rowGridSelectData'
|
||||
];
|
||||
}
|
||||
},
|
||||
}),
|
||||
InputText
|
||||
// Tree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
labelPrepend: true,
|
||||
modalDataKey: 'modalData2',
|
||||
myModalKey: 'gdIdxDetPop',
|
||||
gridName: 'gdIdxDetPop',
|
||||
loadGrid: false,
|
||||
setGrid: false,
|
||||
popCheck: false,
|
||||
dialog: false,
|
||||
activeRowData: {},
|
||||
checkedRowDataList: [],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
// searchParam: state => state.pageData,
|
||||
searchParam(state) {
|
||||
return state.pageData[this.parentPrgmId];
|
||||
},
|
||||
myBindingData(state) {
|
||||
//return state.pageData[this.parentPrgmId]["rowGridSelectData"];
|
||||
if (!this.bindingData) {
|
||||
return state.pageData[this.parentPrgmId]['rowGridSelectData'];
|
||||
} else {
|
||||
return state.pageData[this.parentPrgmId][this.bindingData][
|
||||
'rowGridSelectData'
|
||||
];
|
||||
}
|
||||
},
|
||||
}),
|
||||
InputValue: {
|
||||
get() {
|
||||
return this.myBindingData;
|
||||
}
|
||||
},
|
||||
chkDialog(){
|
||||
return this.dialog
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
async chkDialog(val){
|
||||
if(!val){
|
||||
this.closePop();
|
||||
}else{
|
||||
// await this.getRowGridData();
|
||||
|
||||
get() {
|
||||
return this.myBindingData;
|
||||
}
|
||||
},
|
||||
async popCheck(val){
|
||||
if(val){
|
||||
},
|
||||
chkDialog() {
|
||||
return this.dialog
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
async chkDialog(val) {
|
||||
if (!val) {
|
||||
this.closePop();
|
||||
} else {
|
||||
// await this.getRowGridData();
|
||||
|
||||
}
|
||||
},
|
||||
async popCheck(val) {
|
||||
if (val) {
|
||||
await this.getData();
|
||||
this.dialog= true;
|
||||
}else{
|
||||
this.dialog=false;
|
||||
this.dialog = true;
|
||||
} else {
|
||||
this.dialog = false;
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeCreate() {
|
||||
this.$store.commit('setPageData', {
|
||||
modalData2: { gdIdxDetPop },
|
||||
});
|
||||
},
|
||||
created() {
|
||||
|
||||
},
|
||||
mounted(){
|
||||
},
|
||||
beforeCreate() {
|
||||
this.$store.commit('setPageData', {
|
||||
modalData2: { gdIdxDetPop },
|
||||
});
|
||||
},
|
||||
created() {
|
||||
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
setModalGridData: 'setModalGridData',
|
||||
setModalGridColumn: 'setModalGridColumn',
|
||||
setModalGridOption: 'setModalGridOption',
|
||||
}),
|
||||
...mapActions({
|
||||
postApiReturn: 'modules/list/postApiReturn',
|
||||
}),
|
||||
init() {
|
||||
|
||||
// this.gridInit();
|
||||
},
|
||||
closePop(){
|
||||
this.popCheck= false;
|
||||
},
|
||||
search() {
|
||||
// this.getData();
|
||||
},
|
||||
async getData(){
|
||||
setModalGridColumn: 'setModalGridColumn',
|
||||
setModalGridOption: 'setModalGridOption',
|
||||
}),
|
||||
...mapActions({
|
||||
postApiReturn: 'modules/list/postApiReturn',
|
||||
}),
|
||||
init() {
|
||||
|
||||
this.gridInit();
|
||||
},
|
||||
closePop() {
|
||||
this.popCheck = false;
|
||||
},
|
||||
search() {
|
||||
this.getData();
|
||||
},
|
||||
async getData() {
|
||||
var res = await this.postApiReturn({
|
||||
apiKey: 'selectEnrgEffcGdIdxDetPop',
|
||||
resKey: 'gdIdxDetPopData',
|
||||
sendParam: {
|
||||
gdIdxId : this.myBindingData.gdIdxId,
|
||||
eqpmId : this.myBindingData.eqpmId,
|
||||
},
|
||||
});
|
||||
apiKey: 'selectEnrgEffcGdIdxDetPop',
|
||||
resKey: 'gdIdxDetPopData',
|
||||
sendParam: {
|
||||
gdIdxId: this.myBindingData.gdIdxId,
|
||||
eqpmId: this.myBindingData.eqpmId,
|
||||
},
|
||||
});
|
||||
|
||||
this.setPageData({
|
||||
calcProc : res[0].calcProc,
|
||||
calcDesc : res[0].calcDesc,
|
||||
pysclQtyId1 : res[0].pysclQtyId1Nm,
|
||||
pysclQtyId2 : res[0].pysclQtyId2Nm,
|
||||
pysclQtyId3 : res[0].pysclQtyId3Nm,
|
||||
pysclQtyId4 : res[0].pysclQtyId4Nm,
|
||||
ctgr1 : res[0].ctgr1,
|
||||
ctgr2 : res[0].ctgr2,
|
||||
warnStndVal : res[0].warnStndVal,
|
||||
careStndVal : res[0].careStndVal,
|
||||
alrmMsg : res[0].alrmMsg,
|
||||
gdMeth : res[0].gdMeth
|
||||
calcProc: res[0].calcProc,
|
||||
calcDesc: res[0].calcDesc,
|
||||
pysclQtyId1: res[0].pysclQtyId1Nm,
|
||||
pysclQtyId2: res[0].pysclQtyId2Nm,
|
||||
pysclQtyId3: res[0].pysclQtyId3Nm,
|
||||
pysclQtyId4: res[0].pysclQtyId4Nm,
|
||||
ctgr1: res[0].ctgr1,
|
||||
ctgr2: res[0].ctgr2,
|
||||
warnStndVal: res[0].warnStndVal,
|
||||
careStndVal: res[0].careStndVal,
|
||||
alrmMsg: res[0].alrmMsg,
|
||||
gdMeth: res[0].gdMeth
|
||||
});
|
||||
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
var gdIdxDetPop ={
|
||||
gdIdxDetGrid:{
|
||||
data:[],
|
||||
column:[],
|
||||
option:{}
|
||||
var gdIdxDetPop = {
|
||||
gdIdxDetGrid: {
|
||||
data: [],
|
||||
column: [],
|
||||
option: {}
|
||||
}
|
||||
}
|
||||
|
||||
@ -451,13 +331,14 @@ var gdIdxDetPop ={
|
||||
<style lang="scss" scoped>
|
||||
// @import '@/assets/scss/common/grid.scss';
|
||||
.tui-grid-scrollbar-left-bottom {
|
||||
display: none !important;
|
||||
}
|
||||
#gdIdx_InputText::v-deep .v-input__custom{
|
||||
margin-left:-60px;
|
||||
}
|
||||
.v-input__custom{
|
||||
margin-left:-60px;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
// #gdIdx_InputText::v-deep .v-input__custom {
|
||||
// margin-left: -60px;
|
||||
// }
|
||||
|
||||
// .v-input__custom {
|
||||
// margin-left: -60px;
|
||||
// }
|
||||
</style>
|
220
components/common/modal/EnrgEffcGdIdxDetPop_bk.vue
Normal file
@ -0,0 +1,220 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- Detail Modal -->
|
||||
<a-modal v-model="showDetailModal" title="가이드 정보" width="800px" :footer="null"
|
||||
:style="{ borderRadius: '8px', overflow: 'hidden' }" :bodyStyle="{ paddingTop: '0px' }">
|
||||
<!-- Top Input Fields -->
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">가이드지표</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="12">
|
||||
<a-input value="GD00111" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-input value="냉각수 온도차 평균 편차" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-divider />
|
||||
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">계산코드</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="12">
|
||||
<a-input value="BEF_AVG_DEV_GT" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">계산설명</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="냉각수 온도차" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="12">
|
||||
<a-row>
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">물리랑1</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="냉각수 온도차" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
|
||||
</a-row>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-row>
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">물리랑2</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="12">
|
||||
<a-row>
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">물리랑3</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="냉각수 온도차" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
|
||||
</a-row>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-row>
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">물리랑4</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="12">
|
||||
<a-row>
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">카테고리1</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="냉각수 온도차" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-row>
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">카테고리2</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">주의기준간</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="12">
|
||||
<a-input value="3" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">경고기준값</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="12">
|
||||
<a-input value="5" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">열람메세지</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="냉각수 온도차가 @V1C로 낮음(청균@AVG 대비 @RSLTC 낮음]-@EOPM" :style="{ borderRadius: '6px', height: '34px' }"
|
||||
disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="8" align="middle" style="margin-bottom: 8px;">
|
||||
<!-- Label on the left -->
|
||||
<a-col :span="24" style="text-align: left;">
|
||||
<div style="line-height: 32px;">가이드방법</div>
|
||||
</a-col>
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<a-col :span="24">
|
||||
<a-input value="대비 @RSLTC 낮음]-@EOPM" :style="{ borderRadius: '6px', height: '34px' }" disabled />
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
|
||||
<!-- Footer Buttons -->
|
||||
<div style="text-align: right; margin-top: 16px;">
|
||||
<a-button @click="showDetailModal = false">닫기</a-button>
|
||||
<a-button type="primary" style="margin-left: 8px; color:#fff" @click="confirmModal">확인</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
showDetailModal: false,
|
||||
selectedRecord: null
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleGdIdxNmClick(record) {
|
||||
this.selectedRecord = record;
|
||||
this.showDetailModal = true;
|
||||
},
|
||||
confirmModal() {
|
||||
this.showDetailModal = false;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.ant-modal-header {
|
||||
border-bottom: none;
|
||||
border-radius: 8px 8px 0 0;
|
||||
}
|
||||
|
||||
.ant-modal-content {
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.ant-modal-title,
|
||||
h3 {
|
||||
font-weight: 600
|
||||
}
|
||||
</style>
|
@ -9,10 +9,15 @@
|
||||
scrollable
|
||||
>
|
||||
<v-card style="height: 100%">
|
||||
<v-card-title class="pa-5 pb-0 d-flex align-center justify-space-between">
|
||||
<span class="custom-title-4">사용량 계획</span>
|
||||
<v-icon @click="closePop()">mdi-close</v-icon>
|
||||
</v-card-title>
|
||||
|
||||
<div class="pa-5">
|
||||
<!-- <v-text-field label="위치정보 선택"></v-text-field> -->
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="4">
|
||||
<v-col :cols="4.5">
|
||||
<InputText
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:label="'설비명'"
|
||||
@ -20,18 +25,43 @@
|
||||
:readonly="true"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
</v-row>
|
||||
<v-row align="end" no-gutters class="mt-4 d-flex justify-center">
|
||||
<v-col :cols="5.5" class="mr-2">
|
||||
<component
|
||||
:is="'SelectBox'"
|
||||
ref="SelectBox1"
|
||||
:labelCols='12'
|
||||
:textCols='12'
|
||||
:propsValue="selectValue01"
|
||||
:itemList="selectValueList01"
|
||||
:label="'대상월'"
|
||||
@update:propsValue="selectValue01 = $event"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
</v-col>
|
||||
<v-col :cols="3" class="text-right">
|
||||
<v-btn icon tile :ripple="false" @click="closePop()">
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn>
|
||||
<v-col :cols="5.5" class="mr-2">
|
||||
<component
|
||||
:is="'SelectBox'"
|
||||
ref="SelectBox2"
|
||||
:labelCols='12'
|
||||
:textCols='12'
|
||||
:propsValue="selectValue02"
|
||||
:itemList="selectValueList02"
|
||||
:label="'전년대비절감율'"
|
||||
@update:propsValue="selectValue02 = $event"
|
||||
/>
|
||||
</v-col>
|
||||
<a-button color="primary" dark @click="search()" icon="clock-circle" >
|
||||
<!-- <template #icon>
|
||||
<ClockCircleOutlined />
|
||||
</template> -->
|
||||
적용
|
||||
</a-button>
|
||||
<!-- <v-col :cols="2" class="text-right">
|
||||
</v-col> -->
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<!-- <v-divider></v-divider> -->
|
||||
|
||||
<!-- <div id="chartParent" ref="chartParent" style="height: 100px"> -->
|
||||
<div :style="'height: calc(50vh)'">
|
||||
@ -50,37 +80,8 @@
|
||||
:ref="chartName"
|
||||
/>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<div style="height: 20%; margin: auto; width: 90%; display: flex; align-items: center;">
|
||||
<v-row align="center" no-gutters class="pa-5 d-flex align-center justify-center;">
|
||||
<v-col :cols="5">
|
||||
<component
|
||||
:is="'SelectBox'"
|
||||
ref="SelectBox1"
|
||||
:labelCols='3'
|
||||
:textCols='6'
|
||||
:propsValue="selectValue01"
|
||||
:itemList="selectValueList01"
|
||||
:label="'대상월'"
|
||||
@update:propsValue="selectValue01 = $event"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="5">
|
||||
<component
|
||||
:is="'SelectBox'"
|
||||
ref="SelectBox2"
|
||||
:labelCols='5'
|
||||
:textCols='6'
|
||||
:propsValue="selectValue02"
|
||||
:itemList="selectValueList02"
|
||||
:label="'전년대비절감율'"
|
||||
@update:propsValue="selectValue02 = $event"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2" class="text-right">
|
||||
<v-btn color="primary" dark @click="search()">적용</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<!-- <v-divider></v-divider> -->
|
||||
<!-- <div style="height: 20%; margin: auto; width: 90%; display: flex; align-items: center;"> -->
|
||||
<!-- <div style="height: 70%; width:10%; float: left; border: 1px solid blue; background-color: #A2A2A2">
|
||||
설정
|
||||
</div>
|
||||
@ -97,8 +98,6 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div> -->
|
||||
|
||||
|
||||
<!-- <v-row align="center" no-gutters>
|
||||
<v-row
|
||||
:cols="12"
|
||||
@ -115,7 +114,7 @@
|
||||
<v-btn color="primary" dark @click="setChart()">적용</v-btn>
|
||||
</v-col>
|
||||
</v-row> -->
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
|
||||
<!-- <div id="gridParent" ref="gridParent" style="height: 500px">
|
||||
@ -132,9 +131,9 @@
|
||||
</div> -->
|
||||
|
||||
<v-divider></v-divider>
|
||||
<v-card-actions class="pa-5 d-flex align-center justify-center">
|
||||
<v-btn color="primary" dark @click="setUpdate()">확정</v-btn>
|
||||
<v-btn color="primary" dark @click="closePop()">취소</v-btn>
|
||||
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
||||
<a-button color="primary" type="default" class="mr-2" dark @click="closePop()">취소</a-button>
|
||||
<a-button color="primary" type="primary" dark @click="setUpdate()">확정</a-button>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -196,7 +195,7 @@ export default {
|
||||
selectCodeList,
|
||||
InputText,
|
||||
Chart,
|
||||
SelectBox
|
||||
SelectBox,
|
||||
// Tree
|
||||
},
|
||||
data() {
|
||||
@ -318,6 +317,9 @@ export default {
|
||||
// });
|
||||
// }
|
||||
},
|
||||
mounted(){
|
||||
this.initTest(); return;
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
@ -329,6 +331,7 @@ export default {
|
||||
...mapActions({
|
||||
postApiReturn: 'modules/list/postApiReturn',
|
||||
}),
|
||||
|
||||
init() {
|
||||
this.setChart();
|
||||
},
|
||||
@ -406,7 +409,79 @@ export default {
|
||||
this.nowSeriesData = [];
|
||||
this.nowModalChartData = [];
|
||||
},
|
||||
async initTestChart(){
|
||||
this.loadChart = false;
|
||||
let xAxisData = [];
|
||||
let seriesData = [];
|
||||
let data = [];
|
||||
let targetMonthList = [];
|
||||
let _this = this;
|
||||
|
||||
const dataItemLine = []; // { gubun: '2PLAN' };
|
||||
const dataItemBar = []; //{ gubun: '1PLAN' };
|
||||
|
||||
const getRanNum = (n) => Math.floor(Math.random()*n + 1);
|
||||
|
||||
for(var i=1; i<=12; i++){
|
||||
let qty = 'qty' + i.toString().padStart(2, '0');
|
||||
targetMonthList.push(qty);
|
||||
xAxisData.push(i);
|
||||
dataItemLine.push(getRanNum(100));
|
||||
dataItemBar.push(getRanNum(100));
|
||||
}
|
||||
data = [
|
||||
{gubun: '1PLAN'}, {gubun: '2PLAN'},
|
||||
];
|
||||
|
||||
seriesData = data.map(item => ({
|
||||
name: item.gubun == '2PLAN' ? '계획' : '전년실적',
|
||||
type: item.gubun == '2PLAN' ? 'line' : 'bar',
|
||||
data: item.gubun == '2PLAN' ? dataItemLine : dataItemBar
|
||||
}));
|
||||
this.nowSeriesData = seriesData;
|
||||
let option = {
|
||||
grid: {
|
||||
top: "3%",
|
||||
},
|
||||
xAxis:{
|
||||
type: 'category',
|
||||
data: xAxisData
|
||||
},
|
||||
yAxis:{
|
||||
type:'value',
|
||||
nameLocation : 'middle',
|
||||
nameGap :45
|
||||
},
|
||||
legend: {
|
||||
icon: 'circle',
|
||||
},
|
||||
series: seriesData,
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'cross'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
await this.$nextTick(() => { });
|
||||
|
||||
this.setModalChartOption({
|
||||
prgmId: this.$route.query.prgmId,
|
||||
chartKey: this.chartName,
|
||||
modalId: this.modalId,
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: option,
|
||||
});
|
||||
this.loadChart = true;
|
||||
// this.$nextTick(() => {
|
||||
// })
|
||||
},
|
||||
async setChart(){
|
||||
// test
|
||||
this.initTestChart(); return;
|
||||
// end test
|
||||
|
||||
this.loadChart = false;
|
||||
let xAxisData = [];
|
||||
let seriesData = [];
|
||||
|
@ -1,115 +1,84 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col :cols="option.labelCols">
|
||||
<v-row class="search-box" align="center">
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
v-if="item.iconShow"
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ option.labelContent }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="option.textCols">
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@click="dialogOpenCloseEvent(dialog)"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:required="item.required || false"
|
||||
:disabled="item.disabled || false"
|
||||
></v-text-field>
|
||||
<v-col :cols="option.textCols" class="py-0">
|
||||
<v-text-field readonly v-model="selectValue" append-icon="" class="v-input__custom"
|
||||
@click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true" :required="item.required || false"
|
||||
:disabled="item.disabled || 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="540px">
|
||||
<v-dialog v-model="dialog" scrollable width="800px">
|
||||
<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="12">
|
||||
<component
|
||||
:is="'SelectBox'"
|
||||
ref="SelectBox1"
|
||||
:labelCols="2"
|
||||
:textCols="6"
|
||||
:propsValue="selectValue01"
|
||||
:itemList="selectValueList01"
|
||||
:label="'설비그룹'"
|
||||
@update:propsValue="selectValue01 = $event"
|
||||
:readonly="
|
||||
item.openMode == undefined
|
||||
? openMode
|
||||
: item.openMode == 'ALL'
|
||||
<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
|
||||
? openMode
|
||||
: item.openMode == 'ALL'
|
||||
? false
|
||||
: true
|
||||
"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="2">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon x-small color="primary" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
설비명
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<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>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col cols="4" class="text-right">
|
||||
<v-btn :ripple="false" @click="search()">
|
||||
조회
|
||||
</v-btn>
|
||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||
초기화
|
||||
</v-btn> -->
|
||||
" />
|
||||
</v-col>
|
||||
<v-col :cols="7">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="12">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon small :class="['mr-1 icon-blue']">$icoBulletPoint</v-icon>
|
||||
물리량명
|
||||
</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>
|
||||
|
||||
|
||||
</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()"
|
||||
class="search-button">조회</a-button>
|
||||
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<!-- <div :style="'height: calc(50vh)'"> -->
|
||||
<div :style="'height: 429px;'">
|
||||
<div :style="'height: 429px;'">
|
||||
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
|
||||
<div ref="modalGridParent" class="h100 py-3">
|
||||
<component
|
||||
:is="loadGrid && dialog ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
<div ref="modalGridParent" class="h100 px-6 py-4">
|
||||
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="gridName"
|
||||
:dataPath="searchParam.modalDataEqpmBaseInfoPop.eqpmBaseInfoPop"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@dblClick="setUpdate($event)"
|
||||
/>
|
||||
:parentPrgmId="parentPrgmId" @getRowsData="getRowData" @dblClick="setUpdate($event)" />
|
||||
</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="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>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -166,6 +135,11 @@ export default {
|
||||
require: false,
|
||||
default: true, // 'ALL'도 있음
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
// bindingFlag:{
|
||||
// type:Boolean,
|
||||
// require: false,
|
||||
@ -181,7 +155,7 @@ export default {
|
||||
return {
|
||||
dialog: false,
|
||||
|
||||
loadGrid: false,
|
||||
loadGrid: true,
|
||||
gridName: 'gridEqpmBaseInfoPop',
|
||||
myModalKey: 'eqpmBaseInfoPop',
|
||||
modalDataKey: 'modalDataEqpmBaseInfoPop',
|
||||
@ -283,7 +257,7 @@ export default {
|
||||
async created() {
|
||||
await this.init();
|
||||
},
|
||||
mounted() {},
|
||||
mounted() { },
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
@ -300,29 +274,36 @@ 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();
|
||||
@ -360,26 +341,34 @@ export default {
|
||||
},
|
||||
async getGridData() {
|
||||
this.loadGrid = false;
|
||||
|
||||
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 = [];
|
||||
// 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,
|
||||
@ -452,9 +441,9 @@ export default {
|
||||
// this.dialog = false;
|
||||
// return;
|
||||
// }
|
||||
if (this.myBindingData.length <= 0) {
|
||||
return alert('설비상세 리스트를 먼저 선택해주세요.');
|
||||
}
|
||||
// if (this.myBindingData.length <= 0) {
|
||||
// return alert('설비상세 리스트를 먼저 선택해주세요.');
|
||||
// }
|
||||
this.dialog = !val;
|
||||
},
|
||||
},
|
||||
@ -482,33 +471,29 @@ var eqpmBaseInfoPop = {
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid-cell.tui-grid-cell-has-tree
|
||||
.tui-grid-tree-extra-content
|
||||
+ .tui-grid-cell-content:before {
|
||||
.tui-grid-cell.tui-grid-cell-has-tree .tui-grid-tree-extra-content+.tui-grid-cell-content:before {
|
||||
content: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// .v-application.#{$theme}-mode {
|
||||
// .v-dialog {
|
||||
// .v-card {
|
||||
// &__title {
|
||||
|
||||
|
||||
// @if $theme ==dark {
|
||||
// background-color: #2d3355;
|
||||
|
||||
// .v-btn {
|
||||
// background-color: #2d3355;
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
</style>
|
||||
|
@ -1,96 +1,76 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col :cols="option.labelCols">
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ option.labelContent }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="option.textCols">
|
||||
<v-text-field
|
||||
:readonly="item.readonly || false"
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@click="dialogOpenCloseEvent(dialog)"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:required="item.required || false"
|
||||
:disabled="item.disabled || false"
|
||||
></v-text-field>
|
||||
</v-col>
|
||||
<v-text-field :readonly="item.readonly || false" v-model="selectValue" append-icon=""
|
||||
class="v-input__custom" @click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true"
|
||||
:required="item.required || false" :disabled="item.disabled || false"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
<v-dialog v-model="dialog" scrollable width="540px">
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
<v-dialog v-model="dialog" scrollable width="800px">
|
||||
<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="2">
|
||||
<div class="pa-6 pt-0">
|
||||
<v-row align="center">
|
||||
<v-col :cols="12" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<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="6">
|
||||
<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="10" class="mr-4 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 -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col cols="4" class="text-right">
|
||||
<v-btn :ripple="false" @click="search()">
|
||||
조회
|
||||
</v-btn>
|
||||
<v-col cols="1" class="py-0">
|
||||
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
|
||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||
초기화
|
||||
</v-btn> -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<!-- <v-divider></v-divider> -->
|
||||
<div :style="'height: calc(50vh)'">
|
||||
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
|
||||
<div ref="modalGridParent" class="h100 py-3">
|
||||
<component
|
||||
:is="loadGrid && dialog ? 'Grid' : null"
|
||||
:gridName="grid_01"
|
||||
:dataPath="searchParam.modalData2.eqpmCalcPop"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@dblClick="setUpdate($event)"
|
||||
/>
|
||||
<div ref="modalGridParent" class="h100 px-6 py-4">
|
||||
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
|
||||
:dataPath="searchParam.modalData2.eqpmCalcPop" :parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
|
||||
</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">
|
||||
<!-- <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>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
@ -138,10 +118,20 @@ export default {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
openMode:{
|
||||
type:String,
|
||||
openMode: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
iconShow:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
}
|
||||
default:true
|
||||
},
|
||||
// bindingFlag:{
|
||||
// type:Boolean,
|
||||
// require: false,
|
||||
@ -156,7 +146,23 @@ export default {
|
||||
return {
|
||||
dialog: false,
|
||||
|
||||
loadGrid: 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 },
|
||||
]
|
||||
}
|
||||
},
|
||||
grid_01: 'grid_01',
|
||||
myModalKey: 'eqpmCalcPop',
|
||||
modalDataKey: 'modalData2',
|
||||
@ -247,7 +253,7 @@ export default {
|
||||
async created() {
|
||||
this.init();
|
||||
},
|
||||
mounted() {},
|
||||
mounted() { },
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
@ -282,7 +288,7 @@ export default {
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: Object.assign(
|
||||
// Utility.defaultGridOption(this.$refs.modalGridParent.offsetHeight - 60, myOptions),
|
||||
Utility.defaultGridOption(400, myOptions),
|
||||
// Utility.defaultGridOption(400, myOptions),
|
||||
myOptions,
|
||||
),
|
||||
});
|
||||
@ -292,39 +298,46 @@ export default {
|
||||
gridKey: this.grid_01,
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: [
|
||||
{ header: '계산코드', name: 'calcProc', width: 150},
|
||||
{ header: '아규먼트갯수', name: 'argCnt', align:'center', width: 100},
|
||||
// { header: '계산설명', name : 'calcDesc', width: 286},
|
||||
{ header: '계산설명', name : 'calcDesc', align:'left'},
|
||||
{ header: '계산코드', name: 'calcProc', width: 150 },
|
||||
{ header: '아규먼트갯수', name: 'argCnt', align: 'center', width: 100 },
|
||||
{ header: '계산설명', name: 'calcDesc', align: 'left' },
|
||||
],
|
||||
});
|
||||
},
|
||||
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
|
||||
// },
|
||||
// });
|
||||
// if (this.myBindingData['calcProc'] != '' || this.myBindingData['calcProc'] != null || this.myBindingData['calcProc'] != undefined) {
|
||||
// let newRes = [];
|
||||
// newRes = res.filter(item => {
|
||||
// return item.calcProc != this.myBindingData['calcProc']
|
||||
// });
|
||||
// res = newRes;
|
||||
// }
|
||||
|
||||
// }
|
||||
// ]
|
||||
const res = [
|
||||
{
|
||||
'calcProc': 'AVG_CNT2',
|
||||
'argCnt': '2',
|
||||
'calcDesc': '두개 변수에 대한 평균'
|
||||
|
||||
},
|
||||
|
||||
{ 'calcProc': 'PROC001', argCnt: 2, 'calcDesc': '덧셈 연산' },
|
||||
{ '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': '최소값 계산' },
|
||||
|
||||
]
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.grid_01,
|
||||
@ -352,14 +365,14 @@ export default {
|
||||
value: this.selectedData.calcProc,
|
||||
};
|
||||
this.$emit('gridEditingFinish', dt);
|
||||
this.setPageData({ [this.item.valueNm] : this.selectedData.calcProc});
|
||||
this.setPageData({ [this.item.valueNm]: this.selectedData.calcProc });
|
||||
if (this.item.valueNm2 !== undefined) {
|
||||
const dt = {
|
||||
columnName: this.item.valueNm2,
|
||||
value: this.selectedData[this.item.valueNm2],
|
||||
};
|
||||
this.$emit('gridEditingFinish', dt);
|
||||
this.setPageData({[this.item.valueNm2] : this.selectedData.argCnt});
|
||||
this.setPageData({ [this.item.valueNm2]: this.selectedData.argCnt });
|
||||
}
|
||||
if (this.item.bindNm !== undefined) {
|
||||
const dt = {
|
||||
@ -367,7 +380,7 @@ export default {
|
||||
value: this.selectedData.argCnt,
|
||||
};
|
||||
this.$emit('gridEditingFinish', dt);
|
||||
this.setPageData({ [this.item.bindNm] : this.selectedData.argCnt});
|
||||
this.setPageData({ [this.item.bindNm]: this.selectedData.argCnt });
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -403,33 +416,10 @@ var eqpmCalcPop = {
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid-cell.tui-grid-cell-has-tree
|
||||
.tui-grid-tree-extra-content
|
||||
+ .tui-grid-cell-content:before {
|
||||
.tui-grid-cell.tui-grid-cell-has-tree .tui-grid-tree-extra-content+.tui-grid-cell-content:before {
|
||||
content: none !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@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>
|
||||
|
@ -1,123 +1,97 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters >
|
||||
<v-col :cols="labelCols">
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow"
|
||||
x-small
|
||||
:color="required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
<v-icon v-if="iconShow" small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="textCols">
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@click="dialogOpenCloseEvent(dialog)"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:required="required || false"
|
||||
:disabled="disabled || false"
|
||||
></v-text-field>
|
||||
<v-text-field readonly append-icon="" :class="['v-input__custom', customClass]"
|
||||
@click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true" :required="required || false"
|
||||
:disabled="disabled || false"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
|
||||
<v-dialog
|
||||
ref="popModal"
|
||||
v-model="dialog"
|
||||
width="1400"
|
||||
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-divider></v-divider>
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4">◇ 설비 선택</v-card-title>
|
||||
</div>
|
||||
<div class="pa-5">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<!-- 설비그룹 -->
|
||||
<component
|
||||
:is="'SelectBox'"
|
||||
:propsValue="selectValue01"
|
||||
:itemList="selectValueList01"
|
||||
:label="'설비그룹'"
|
||||
:disabled="eqpmGrpDisabled"
|
||||
@update:propsValue="selectValue01 = $event"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="6" style="padding:0px 10px;">
|
||||
<!-- FAB -->
|
||||
<component
|
||||
:is="'SelectBoxMulti'"
|
||||
:propsValue="selectValue02"
|
||||
:itemList="selectValueList02"
|
||||
:label="'FAB'"
|
||||
:labelCols="2"
|
||||
:multiple="true"
|
||||
:disabled="fabDisabled"
|
||||
@update:propsValue="selectValue02 = $event"
|
||||
/>
|
||||
</v-col>
|
||||
|
||||
<v-spacer></v-spacer>
|
||||
<v-col cols="3" class="text-right">
|
||||
<v-btn :ripple="false" @click="search()">
|
||||
조회
|
||||
</v-btn>
|
||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||
초기화
|
||||
</v-btn> -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters style="margin-top: 14px;">
|
||||
<v-col :cols="1">
|
||||
<v-card-title class="px-5 py-4 d-flex align-center justify-space-between">
|
||||
<span class="custom-title-4">설비 선택</span>
|
||||
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
|
||||
</v-card-title>
|
||||
<div class="pa-2 pt-0">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end">
|
||||
<v-col :cols="3.5">
|
||||
<!-- 설비그룹 -->
|
||||
<component :is="'SelectBox'" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||
:label="'설비그룹'" :disabled="eqpmGrpDisabled"
|
||||
@update:propsValue="selectValue01 = $event" :labelCols="12" :textCols="12"
|
||||
:iconShow="true" />
|
||||
</v-col>
|
||||
<v-col :cols="3.5">
|
||||
<!-- FAB -->
|
||||
<component :is="'SelectBoxMulti'" :propsValue="selectValue02"
|
||||
:itemList="selectValueList02" :label="'FAB'" :labelCols="12" :multiple="true"
|
||||
:disabled="fabDisabled" @update:propsValue="selectValue02 = $event" :textCols="12"
|
||||
:iconShow="true" />
|
||||
</v-col>
|
||||
<v-col :cols="3.5">
|
||||
<v-row>
|
||||
<v-col :cols="12" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
설비명
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="pt-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 -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
|
||||
</v-row>
|
||||
</v-col>
|
||||
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
|
||||
|
||||
|
||||
</v-row>
|
||||
</v-card>
|
||||
|
||||
<!-- <v-row align="center" no-gutters style="margin-top: 14px;">
|
||||
<v-col :cols="1">
|
||||
<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>
|
||||
설비명
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="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-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>
|
||||
</v-row>
|
||||
</v-row> -->
|
||||
</div>
|
||||
<div class="px-5" style="height:429px;">
|
||||
<div ref="modalGridParent" class="w100 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid? 'Grid' : null"
|
||||
:dataPath="searchParam.eqpmSelectPopData.eqpmSelectPop"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<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
|
||||
>
|
||||
<div class="px-5" style="height:429px;">
|
||||
<div ref="modalGridParent" class="w100 h100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null"
|
||||
:dataPath="searchParam.eqpmSelectPopData.eqpmSelectPop" :gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId" @getRowsData="getRowData" />
|
||||
</div>
|
||||
</div>
|
||||
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
||||
<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>
|
||||
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
@ -171,66 +145,71 @@ export default {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
disabled:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
required:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
fabDisabled:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
fabDisabled: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
eqpmGrpDisabled:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
eqpmGrpDisabled: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
iconShow:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:true
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
isMulti:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
}
|
||||
isMulti: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
components: {
|
||||
Grid,
|
||||
selectCodeList,
|
||||
dateUtility,
|
||||
dateUtility,
|
||||
InputText,
|
||||
SelectBox,
|
||||
SelectBoxMulti
|
||||
SelectBox,
|
||||
SelectBoxMulti
|
||||
// Tree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
labelPrepend: true,
|
||||
modalDataKey:'eqpmSelectPopData',
|
||||
modalDataKey: 'eqpmSelectPopData',
|
||||
myModalKey: 'eqpmSelectPop',
|
||||
gridName: 'eqpmSelectGrid',
|
||||
loadGrid: false,
|
||||
setGrid:false,
|
||||
popCheck:false,
|
||||
loadGrid: true,
|
||||
setGrid: false,
|
||||
popCheck: false,
|
||||
dialog: false,
|
||||
activeRowData: {},
|
||||
checkedRowDataList: [],
|
||||
selectValue01:null,
|
||||
selectValue02:[],
|
||||
selectValueList01:[],
|
||||
selectValueList02:[],
|
||||
searchWord:'',
|
||||
activeRowData:{},
|
||||
textFieldData:'',
|
||||
selectRow:{}
|
||||
selectValue01: null,
|
||||
selectValue02: [],
|
||||
selectValueList01: [],
|
||||
selectValueList02: [],
|
||||
searchWord: '',
|
||||
activeRowData: {},
|
||||
textFieldData: '',
|
||||
selectRow: {}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -240,28 +219,28 @@ export default {
|
||||
return state.pageData[this.parentPrgmId];
|
||||
},
|
||||
myBindingData(state) {
|
||||
var data = state.pageData[this.parentPrgmId];
|
||||
if(data.fabId == ''){
|
||||
data.fabId = null
|
||||
}else if(typeof(data.fabId)=='string'){
|
||||
data.fabId = [data.fabId]
|
||||
}
|
||||
return {
|
||||
fabId : data.fabId,
|
||||
eqpmGrpId : data.eqpmGrpId,
|
||||
eqpmId:data.eqpmId,
|
||||
eqpmNm:data.eqpmNm,
|
||||
eqpmIdList:data.eqpmIdList,
|
||||
eqpmKindId:data.eqpmKindId,
|
||||
}
|
||||
var data = state.pageData[this.parentPrgmId];
|
||||
if (data.fabId == '') {
|
||||
data.fabId = null
|
||||
} else if (typeof (data.fabId) == 'string') {
|
||||
data.fabId = [data.fabId]
|
||||
}
|
||||
return {
|
||||
fabId: data.fabId,
|
||||
eqpmGrpId: data.eqpmGrpId,
|
||||
eqpmId: data.eqpmId,
|
||||
eqpmNm: data.eqpmNm,
|
||||
eqpmIdList: data.eqpmIdList,
|
||||
eqpmKindId: data.eqpmKindId,
|
||||
}
|
||||
},
|
||||
}),
|
||||
selectValue: {
|
||||
get() {
|
||||
// return this.searchParam[this.item.valueNm];
|
||||
return this.myBindingData
|
||||
? this.myBindingData[this.valueNm]
|
||||
: this.textFieldData;
|
||||
return this.myBindingData
|
||||
? this.myBindingData[this.valueNm]
|
||||
: this.textFieldData;
|
||||
},
|
||||
set(value) {
|
||||
// if(this.item && this.item.disableContent){
|
||||
@ -270,44 +249,44 @@ export default {
|
||||
return value;
|
||||
},
|
||||
},
|
||||
chkDialog(){
|
||||
if(this.isMulti){
|
||||
this.$store.state.pageData[this.parentPrgmId][this.modalDataKey][this.myModalKey][this.gridName].option.rowHeaders = [{type : 'checkbox'}];
|
||||
}else{
|
||||
this.$store.state.pageData[this.parentPrgmId][this.modalDataKey][this.myModalKey][this.gridName].option.rowHeaders = [];
|
||||
}
|
||||
chkDialog() {
|
||||
if (this.isMulti) {
|
||||
this.$store.state.pageData[this.parentPrgmId][this.modalDataKey][this.myModalKey][this.gridName].option.rowHeaders = [{ type: 'checkbox' }];
|
||||
} else {
|
||||
this.$store.state.pageData[this.parentPrgmId][this.modalDataKey][this.myModalKey][this.gridName].option.rowHeaders = [];
|
||||
}
|
||||
return this.dialog
|
||||
},
|
||||
|
||||
},
|
||||
watch: {
|
||||
async chkDialog(val){
|
||||
// console.log("val : ", val);
|
||||
if(val){
|
||||
this.selectValue01 = this.myBindingData.eqpmGrpId;
|
||||
this.selectValue02 = this.myBindingData.fabId;
|
||||
await this.search();
|
||||
// if(this.isMulti){
|
||||
// }else{
|
||||
// // 단일 focus용
|
||||
// if(this.$refs[this.gridName]){
|
||||
// this.selectRow = this.$refs[this.gridName].getData().filter(item=>{
|
||||
// return item.eqpmId == this.myBindingData.eqpmId
|
||||
// });
|
||||
// this.$refs[this.gridName].focus({
|
||||
// rowKey : this.selectRow[0].rowKey,
|
||||
// setScroll: true
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
}else{
|
||||
this.dialog = false;
|
||||
}
|
||||
// this.selectValue01 = this.myBindingData.eqpmGrpId;
|
||||
// this.selectValue02 = this.myBindingData.fabId;
|
||||
// await this.search();
|
||||
// this.getChecked();
|
||||
// }
|
||||
async chkDialog(val) {
|
||||
// console.log("val : ", val);
|
||||
if (val) {
|
||||
this.selectValue01 = this.myBindingData.eqpmGrpId;
|
||||
this.selectValue02 = this.myBindingData.fabId;
|
||||
await this.search();
|
||||
// if(this.isMulti){
|
||||
// }else{
|
||||
// // 단일 focus용
|
||||
// if(this.$refs[this.gridName]){
|
||||
// this.selectRow = this.$refs[this.gridName].getData().filter(item=>{
|
||||
// return item.eqpmId == this.myBindingData.eqpmId
|
||||
// });
|
||||
// this.$refs[this.gridName].focus({
|
||||
// rowKey : this.selectRow[0].rowKey,
|
||||
// setScroll: true
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
} else {
|
||||
this.dialog = false;
|
||||
}
|
||||
// this.selectValue01 = this.myBindingData.eqpmGrpId;
|
||||
// this.selectValue02 = this.myBindingData.fabId;
|
||||
// await this.search();
|
||||
// this.getChecked();
|
||||
// }
|
||||
},
|
||||
},
|
||||
|
||||
@ -317,14 +296,14 @@ export default {
|
||||
});
|
||||
},
|
||||
async created() {
|
||||
await this.getFab();
|
||||
await this.getEqpmGrp();
|
||||
await this.getFab();
|
||||
await this.getEqpmGrp();
|
||||
this.init();
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
setModalGridData: 'setModalGridData',
|
||||
setModalGridData: 'setModalGridData',
|
||||
setModalGridColumn: 'setModalGridColumn',
|
||||
setModalGridOption: 'setModalGridOption',
|
||||
}),
|
||||
@ -332,18 +311,18 @@ export default {
|
||||
postApiReturn: 'modules/list/postApiReturn',
|
||||
}),
|
||||
init() {
|
||||
this.activeRowData = {};
|
||||
this.gridInit();
|
||||
this.activeRowData = {};
|
||||
this.gridInit();
|
||||
},
|
||||
dialogOpenCloseEvent(val){
|
||||
dialogOpenCloseEvent(val) {
|
||||
|
||||
// this.checkPop = !val;
|
||||
this.dialog=!val;
|
||||
// this.checkPop = !val;
|
||||
this.dialog = !val;
|
||||
},
|
||||
search() {
|
||||
this.getRowGridData();
|
||||
},
|
||||
async getFab() {
|
||||
async getFab() {
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectFabCodeList',
|
||||
resKey: 'fabCodeLists',
|
||||
@ -356,25 +335,25 @@ export default {
|
||||
value: item.eccId,
|
||||
};
|
||||
});
|
||||
this.selectValueList02.unshift({
|
||||
text:"전체",
|
||||
value:null
|
||||
});
|
||||
// if(this.pageData.eccId != null && this.pageData.eccId != ''){
|
||||
// this.selectValue02 = this.pageData.eccId;
|
||||
// }else if(this.pageData.eccId == null || this.pageData.eccId == ''){
|
||||
this.selectValue02.push(this.selectValueList02[0].value);
|
||||
// }
|
||||
this.selectValueList02.unshift({
|
||||
text: "전체",
|
||||
value: null
|
||||
});
|
||||
// if(this.pageData.eccId != null && this.pageData.eccId != ''){
|
||||
// this.selectValue02 = this.pageData.eccId;
|
||||
// }else if(this.pageData.eccId == null || this.pageData.eccId == ''){
|
||||
this.selectValue02.push(this.selectValueList02[0].value);
|
||||
// }
|
||||
} else {
|
||||
this.selectValueList02 = [];
|
||||
this.selectValue02 = [];
|
||||
}
|
||||
},
|
||||
async getEqpmGrp() {
|
||||
async getEqpmGrp() {
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmGrpCodeList',
|
||||
resKey: 'eqpmGrpCodeLists',
|
||||
sendParam: { },
|
||||
sendParam: {},
|
||||
});
|
||||
if (res.length > 0) {
|
||||
this.selectValueList01 = await res.map(item => {
|
||||
@ -383,39 +362,42 @@ export default {
|
||||
value: item.eqpmGrpId,
|
||||
};
|
||||
});
|
||||
this.selectValueList01.unshift({
|
||||
text:"전체",
|
||||
value:null
|
||||
});
|
||||
// if(this.pageData.eqpmGrpId != null && this.pageData.eqpmGrpId != ''){
|
||||
// this.selectValue02 = this.pageData.eqpmGrpId;
|
||||
// }else if(this.pageData.eqpmGrpId == null || this.pageData.eqpmGrpId == ''){
|
||||
this.selectValue01 = this.selectValueList01[0].value;
|
||||
// }
|
||||
this.selectValueList01.unshift({
|
||||
text: "전체",
|
||||
value: null
|
||||
});
|
||||
// if(this.pageData.eqpmGrpId != null && this.pageData.eqpmGrpId != ''){
|
||||
// this.selectValue02 = this.pageData.eqpmGrpId;
|
||||
// }else if(this.pageData.eqpmGrpId == null || this.pageData.eqpmGrpId == ''){
|
||||
this.selectValue01 = this.selectValueList01[0].value;
|
||||
// }
|
||||
} else {
|
||||
this.selectValueList01 = [];
|
||||
this.selectValue01 = null;
|
||||
}
|
||||
},
|
||||
gridInit(){
|
||||
// console.log("modalGridParent : ",this.$refs)
|
||||
// const gridWidth = this.$refs.modalGridParent.offsetWidth/4;
|
||||
gridInit() {
|
||||
// console.log("modalGridParent : ",this.$refs)
|
||||
// const gridWidth = this.$refs.modalGridParent.offsetWidth/4;
|
||||
|
||||
let myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
// rowHeaders:[{ type: 'checkbox' }],
|
||||
// rowHeight:'auto'
|
||||
};
|
||||
if(this.isMulti){
|
||||
myOptions['rowHeaders'] = [{type : 'checkbox'}];
|
||||
myOptions['rowHeight'] = 'auto';
|
||||
}
|
||||
let myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 'auto',
|
||||
},
|
||||
// rowHeaders:[{ type: 'checkbox' }],
|
||||
rowHeight: 'auto',
|
||||
};
|
||||
if (this.isMulti) {
|
||||
// myOptions['rowHeaders'] = [{ type: 'checkbox' }];
|
||||
// myOptions['rowHeight'] = 'auto';
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.setModalGridOption({
|
||||
this.setModalGridOption({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridName,
|
||||
modalDataKey: this.modalDataKey,
|
||||
@ -426,46 +408,46 @@ export default {
|
||||
),
|
||||
});
|
||||
|
||||
const myColumns= [
|
||||
{
|
||||
header : 'FAB',
|
||||
name : 'fabId',
|
||||
align:'center',
|
||||
hidden:true
|
||||
},
|
||||
{
|
||||
header : 'FAB',
|
||||
name : 'fabNm',
|
||||
align:'center'
|
||||
},
|
||||
{
|
||||
header : '설비ID',
|
||||
name : 'eqpmId',
|
||||
align:'center',
|
||||
// hidden:true
|
||||
},
|
||||
{
|
||||
header : '설비명',
|
||||
name : 'eqpmNm',
|
||||
align:'center'
|
||||
},
|
||||
{
|
||||
header : 'eccId',
|
||||
name : 'eccId',
|
||||
align:'center',
|
||||
hidden:true
|
||||
},
|
||||
{
|
||||
header : 'eccNm',
|
||||
name : 'eccNm',
|
||||
align:'center',
|
||||
hidden:true
|
||||
},
|
||||
const myColumns = [
|
||||
{
|
||||
header: 'FAB',
|
||||
name: 'fabId',
|
||||
align: 'center',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: 'FAB',
|
||||
name: 'fabNm',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '설비ID',
|
||||
name: 'eqpmId',
|
||||
align: 'center',
|
||||
// hidden:true
|
||||
},
|
||||
{
|
||||
header: '설비명',
|
||||
name: 'eqpmNm',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: 'eccId',
|
||||
name: 'eccId',
|
||||
align: 'center',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
header: 'eccNm',
|
||||
name: 'eccNm',
|
||||
align: 'center',
|
||||
hidden: true
|
||||
},
|
||||
|
||||
|
||||
]
|
||||
]
|
||||
|
||||
this.setModalGridColumn({
|
||||
this.setModalGridColumn({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridName,
|
||||
modalDataKey: this.modalDataKey,
|
||||
@ -473,91 +455,117 @@ export default {
|
||||
});
|
||||
|
||||
|
||||
// this.getRowGridData();
|
||||
},
|
||||
async getRowGridData(){
|
||||
this.loadGrid =false;
|
||||
var res = await this.postApiReturn({
|
||||
// this.getRowGridData();
|
||||
},
|
||||
async getRowGridData() {
|
||||
this.loadGrid = false;
|
||||
var res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmPop',
|
||||
resKey: 'eqpmPopData',
|
||||
sendParam: {
|
||||
fabId:this.selectValue02,
|
||||
eqpmGrpId:this.selectValue01,
|
||||
searchWord:this.searchWord,
|
||||
eqpmKindId:this.myBindingData.eqpmKindId,
|
||||
fabId: this.selectValue02,
|
||||
eqpmGrpId: this.selectValue01,
|
||||
searchWord: this.searchWord,
|
||||
eqpmKindId: this.myBindingData.eqpmKindId,
|
||||
},
|
||||
});
|
||||
// const dayjs = require('dayjs');
|
||||
// var newRes = res.map(item=>
|
||||
// item = {
|
||||
// ...item,
|
||||
// totDttmDay : Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
|
||||
// totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH')
|
||||
// }
|
||||
// );
|
||||
|
||||
this.setModalGridData({
|
||||
// const dayjs = require('dayjs');
|
||||
// var newRes = res.map(item=>
|
||||
// item = {
|
||||
// ...item,
|
||||
// totDttmDay : Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
|
||||
// totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH')
|
||||
// }
|
||||
// );
|
||||
// const res =
|
||||
// [
|
||||
// {
|
||||
// "fabId": "FAB001",
|
||||
// "fabNm": "Gumi FAB",
|
||||
// "eqpmId": "EQ001",
|
||||
// "eqpmNm": "Etcher A12",
|
||||
// "eccId": "ECC001",
|
||||
// "eccNm": "Etch Control Center"
|
||||
// },
|
||||
// {
|
||||
// "fabId": "FAB002",
|
||||
// "fabNm": "Pyeongtaek FAB",
|
||||
// "eqpmId": "EQ002",
|
||||
// "eqpmNm": "Deposition B34",
|
||||
// "eccId": "ECC002",
|
||||
// "eccNm": "Deposition Control Center"
|
||||
// },
|
||||
// {
|
||||
// "fabId": "FAB003",
|
||||
// "fabNm": "Hwaseong FAB",
|
||||
// "eqpmId": "EQ003",
|
||||
// "eqpmNm": "CMP C56",
|
||||
// "eccId": "ECC003",
|
||||
// "eccNm": "CMP Control Center"
|
||||
// }
|
||||
// ];
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridName,
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: res
|
||||
});
|
||||
|
||||
|
||||
this.loadGrid=true;
|
||||
this.$nextTick(()=>{
|
||||
if(this.isMulti){
|
||||
this.getChecked();
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
setUpdate() {
|
||||
if(this.isMulti){
|
||||
var data = this.$refs[this.gridName].getCheckedRowsEvt();
|
||||
this.dialog = false;
|
||||
this.setPageData({
|
||||
checkedRows: data,
|
||||
eqpmId : data.map(item=>{
|
||||
return item.eqpmId;
|
||||
}),
|
||||
eqpmNm : data.map(item=>{
|
||||
return item.eqpmNm;
|
||||
}),
|
||||
eqpmIdList:data,
|
||||
isFind2:true
|
||||
});
|
||||
}else{
|
||||
this.dialog = false;
|
||||
this.setPageData({eqpmInfo : this.activeRowData, eqpmNm : this.activeRowData.eqpmNm})
|
||||
}
|
||||
this.loadGrid = true;
|
||||
this.$nextTick(() => {
|
||||
if (this.isMulti) {
|
||||
this.getChecked();
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
getRowData(data){
|
||||
if(this.isMulti){
|
||||
if(data._attributes.checked){
|
||||
this.$refs[this.gridName].uncheckEvt(data, this.$refs[this.gridName]);
|
||||
}else{
|
||||
this.$refs[this.gridName].checkEvt(data, this.$refs[this.gridName]);
|
||||
}
|
||||
}else{
|
||||
this.activeRowData = data;
|
||||
}
|
||||
},
|
||||
getChecked(){
|
||||
if(this.myBindingData.eqpmIdList.length>0){
|
||||
this.myBindingData.eqpmIdList.map(item=>{
|
||||
this.$refs[this.gridName].checkEvt(item, this.$refs[this.gridName]);
|
||||
});
|
||||
}
|
||||
}
|
||||
setUpdate() {
|
||||
if (this.isMulti) {
|
||||
var data = this.$refs[this.gridName].getCheckedRowsEvt();
|
||||
this.dialog = false;
|
||||
this.setPageData({
|
||||
checkedRows: data,
|
||||
eqpmId: data.map(item => {
|
||||
return item.eqpmId;
|
||||
}),
|
||||
eqpmNm: data.map(item => {
|
||||
return item.eqpmNm;
|
||||
}),
|
||||
eqpmIdList: data,
|
||||
isFind2: true
|
||||
});
|
||||
} else {
|
||||
this.dialog = false;
|
||||
this.setPageData({ eqpmInfo: this.activeRowData, eqpmNm: this.activeRowData.eqpmNm })
|
||||
}
|
||||
},
|
||||
getRowData(data) {
|
||||
if (this.isMulti) {
|
||||
if (data._attributes.checked) {
|
||||
this.$refs[this.gridName].uncheckEvt(data, this.$refs[this.gridName]);
|
||||
} else {
|
||||
this.$refs[this.gridName].checkEvt(data, this.$refs[this.gridName]);
|
||||
}
|
||||
} else {
|
||||
this.activeRowData = data;
|
||||
}
|
||||
},
|
||||
getChecked() {
|
||||
if (this.myBindingData.eqpmIdList.length > 0) {
|
||||
this.myBindingData.eqpmIdList.map(item => {
|
||||
this.$refs[this.gridName].checkEvt(item, this.$refs[this.gridName]);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
var eqpmSelectPop ={
|
||||
eqpmSelectGrid:{
|
||||
data:[],
|
||||
column:[],
|
||||
option:{}
|
||||
}
|
||||
var eqpmSelectPop = {
|
||||
eqpmSelectGrid: {
|
||||
data: [],
|
||||
column: [],
|
||||
option: {}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
375
components/common/modal/EqpmSelectPop_bk.vue
Normal file
@ -0,0 +1,375 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="textCols">
|
||||
<!-- <a-input :size="size" @click="showDetailModal = true" class="custom-input" suffix-icon placeholder="Search..." v-model="selectValue">
|
||||
<template #suffix>
|
||||
<a-icon type="search" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
|
||||
<!-- append-icon="search" -->
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
class="v-input__custom"
|
||||
@click="showDetailModal = true"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:required="required || false"
|
||||
>
|
||||
<!-- :disabled="disabled || false" -->
|
||||
<template #append >
|
||||
<a-icon type="search" />
|
||||
</template>
|
||||
</v-text-field>
|
||||
|
||||
</v-col>
|
||||
<a-modal v-model="showDetailModal" title="가이드 알람이력" class="text-left" width="800px" :footer="null"
|
||||
:style="{ borderRadius: '8px', overflow: 'hidden' }" :bodyStyle="{ paddingTop: '0px' }">
|
||||
<!-- Top Input Fields -->
|
||||
<v-row :gutters="32" align="end" style="margin-bottom: 16px;">
|
||||
<!-- Label on the left -->
|
||||
|
||||
<!-- Two inputs on the right -->
|
||||
<v-col :cols="3">
|
||||
<component :is="'SelectBox'" :label="'실비그룹'" :labelCols="12" :textCols="12"
|
||||
:propsValue="eqpmGrpSelected" :itemList="eqpmGrpList"
|
||||
@update:propsValue="eqpmGrpSelected = $event" :disabled="disabled" :iconShow="false" />
|
||||
</v-col>
|
||||
|
||||
<v-col :cols="4" style="text-align: left;">
|
||||
<component :is="'SelectBox'" :label="'FAB'" :labelCols="12" :textCols="12"
|
||||
:propsValue="localFabSelected" :itemList="fabList"
|
||||
@update:propsValue="localFabSelected = $event" :disabled="disabled" :iconShow="false" />
|
||||
</v-col>
|
||||
<v-col :cols="5" >
|
||||
<v-row>
|
||||
<v-col :cols="12" style="text-align: left;">
|
||||
<div>실비명</div>
|
||||
</v-col>
|
||||
|
||||
<v-col :cols="8">
|
||||
<a-input class="custom-input" suffix-icon placeholder="Search..."
|
||||
:style="{ borderRadius: '6px', }" >
|
||||
<template #suffix>
|
||||
<a-icon type="search" />
|
||||
</template>
|
||||
|
||||
</a-input>
|
||||
</v-col>
|
||||
<v-col :cols="3" class="text-right">
|
||||
<!-- 조회버튼 -->
|
||||
<BtnSearch @click="searchFab()" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-col>
|
||||
|
||||
|
||||
</v-row>
|
||||
<a-divider />
|
||||
<!-- Table -->
|
||||
<a-table :columns="columns" :dataSource="filteredData" rowKey="id" :rowSelection="rowSelection" bordered />
|
||||
|
||||
<!-- Footer Buttons -->
|
||||
<div style="text-align: right; margin-top: 16px;">
|
||||
<a-button @click="showDetailModal = false">닫기</a-button>
|
||||
<a-button type="primary" style="margin-left: 8px; color:#fff"
|
||||
@click="showDetailModal = false">확인</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
</v-row>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import Grid from '~/components/common/Grid';
|
||||
import Utility from '~/plugins/utility';
|
||||
import selectCodeList from '@/components/common/select/selectCodeList';
|
||||
import InputText from '~/components/common/input/InputText';
|
||||
import dateUtility from '~/plugins/dateUtility';
|
||||
import SelectBox from '@/components/common/select/SelectBox';
|
||||
import SelectBoxMulti from '@/components/common/select/SelectBoxMulti';
|
||||
import BtnSearch from '~/components/common/button/BtnSearch';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
default: '비교대상 최대(20개)',
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '전력 계약 정보',
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '',
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '전력 계약 목록',
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 12,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 12,
|
||||
},
|
||||
item: {
|
||||
type: Object,
|
||||
require: true,
|
||||
},
|
||||
bindingData: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
fabDisabled: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
eqpmGrpDisabled: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
isMulti: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
fabSelected: {
|
||||
type: String, // or Array, depending on your data
|
||||
required: false
|
||||
},
|
||||
eqpmGrpSelected: {
|
||||
type: String, // or Array, depending on your data
|
||||
required: false
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "middle",
|
||||
}
|
||||
|
||||
},
|
||||
components: {
|
||||
Grid,
|
||||
selectCodeList,
|
||||
dateUtility,
|
||||
InputText,
|
||||
SelectBox,
|
||||
SelectBoxMulti,
|
||||
BtnSearch
|
||||
// Tree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
labelPrepend: true,
|
||||
modalDataKey: 'eqpmSelectPopData',
|
||||
myModalKey: 'eqpmSelectPop',
|
||||
gridName: 'eqpmSelectGrid',
|
||||
loadGrid: false,
|
||||
setGrid: false,
|
||||
popCheck: false,
|
||||
dialog: false,
|
||||
activeRowData: {},
|
||||
checkedRowDataList: [],
|
||||
|
||||
localFabSelected: this.fabSelected,
|
||||
localEqpmGrpSelected: this.eqpmGrpSelected,
|
||||
|
||||
fabList: [],
|
||||
eqpmGrpList: [],
|
||||
searchWord: '',
|
||||
activeRowData: {},
|
||||
textFieldData: '',
|
||||
selectRow: {},
|
||||
showDetailModal: false,
|
||||
columns: [
|
||||
{
|
||||
title: 'FAB',
|
||||
dataIndex: 'fab',
|
||||
key: 'fab',
|
||||
},
|
||||
{
|
||||
title: '설비ID',
|
||||
dataIndex: 'equipmentId',
|
||||
key: 'equipmentId',
|
||||
},
|
||||
{
|
||||
title: '설비명',
|
||||
dataIndex: 'equipmentName',
|
||||
key: 'equipmentName',
|
||||
},
|
||||
],
|
||||
// Table data
|
||||
data: [
|
||||
{
|
||||
id: 1,
|
||||
fab: 'FAB001',
|
||||
equipmentId: 'EQ001',
|
||||
equipmentName: '냉각기 A',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
fab: 'FAB002',
|
||||
equipmentId: 'EQ002',
|
||||
equipmentName: '펌프 B',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
fab: 'FAB003',
|
||||
equipmentId: 'EQ003',
|
||||
equipmentName: '히터 C',
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
fab: 'FAB001',
|
||||
equipmentId: 'EQ004',
|
||||
equipmentName: '냉각기 D',
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
fab: 'FAB002',
|
||||
equipmentId: 'EQ005',
|
||||
equipmentName: '펌프 E',
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
fab: 'FAB003',
|
||||
equipmentId: 'EQ006',
|
||||
equipmentName: '히터 F',
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
fab: 'FAB001',
|
||||
equipmentId: 'EQ007',
|
||||
equipmentName: '냉각기 G',
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
fab: 'FAB002',
|
||||
equipmentId: 'EQ008',
|
||||
equipmentName: '펌프 H',
|
||||
},
|
||||
],
|
||||
filteredData: [],
|
||||
// Row selection config
|
||||
rowSelection: {
|
||||
onChange: (selectedRowKeys, selectedRows) => {
|
||||
console.log('Selected Row Keys:', selectedRowKeys);
|
||||
console.log('Selected Rows:', selectedRows);
|
||||
},
|
||||
}
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
|
||||
fabSelected(newVal) {
|
||||
this.localFabSelected = newVal;
|
||||
},
|
||||
eqpmGrpSelected(newVal) {
|
||||
this.localEqpmGrpSelected = newVal;
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
beforeCreate() {
|
||||
this.$store.commit('setPageData', {
|
||||
eqpmSelectPopData: { eqpmSelectPop },
|
||||
});
|
||||
},
|
||||
async created() {
|
||||
await this.getFab();
|
||||
await this.getEqpmGrp();
|
||||
this.init();
|
||||
},
|
||||
methods: {
|
||||
// ...mapMutations({
|
||||
// setPageData: 'setPageData',
|
||||
// setModalGridData: 'setModalGridData',
|
||||
// setModalGridColumn: 'setModalGridColumn',
|
||||
// setModalGridOption: 'setModalGridOption',
|
||||
// }),
|
||||
// ...mapActions({
|
||||
// postApiReturn: 'modules/list/postApiReturn',
|
||||
// }),
|
||||
init() {
|
||||
this.filteredData = this.data;
|
||||
// this.activeRowData = {};
|
||||
// this.gridInit();
|
||||
},
|
||||
// search() {
|
||||
// this.getRowGridData();
|
||||
// },
|
||||
searchFab() {
|
||||
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;
|
||||
// return matchGrp && matchFab;
|
||||
// });
|
||||
},
|
||||
async getFab() {
|
||||
|
||||
this.fabList = [
|
||||
{ label: 'FAB001', value: 'FAB001' },
|
||||
{ label: 'FAB002', value: 'FAB002' },
|
||||
{ label: 'FAB003', value: 'FAB003' },
|
||||
];
|
||||
|
||||
// this.fabSelected = 'FAB001';
|
||||
|
||||
},
|
||||
async getEqpmGrp() {
|
||||
this.eqpmGrpList = [
|
||||
{ label: 'EQ 1', value: 'EQ001' },
|
||||
{ label: 'EQ 2', value: 'EQ002' },
|
||||
{ label: 'EQ 3', value: 'EQ003' },
|
||||
];
|
||||
|
||||
// this.eqpmGrpSelected = 'EQ001';
|
||||
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
};
|
||||
var eqpmSelectPop = {
|
||||
eqpmSelectGrid: {
|
||||
data: [],
|
||||
column: [],
|
||||
option: {}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
@ -1,95 +1,61 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col :cols="option.labelCols">
|
||||
<v-row class="search-box" align="center">
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</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>
|
||||
<v-col :cols="option.textCols">
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@click="dialogOpenCloseEvent(dialog)"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:required="item.required || false"
|
||||
:disabled="item.disabled || false"
|
||||
></v-text-field>
|
||||
<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>
|
||||
|
||||
<v-dialog v-model="dialog" scrollable width="1000px">
|
||||
<v-card style="height: 100%">
|
||||
<v-card-title class="pa-5 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>
|
||||
<v-icon @click="dialogOpenCloseEvent(dialog)">mdi-close</v-icon>
|
||||
</v-card-title>
|
||||
<div class="pa-5">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="2">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon x-small color="primary" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
검색
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<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>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col cols="4" class="text-right">
|
||||
<v-btn :ripple="false" @click="search()">
|
||||
조회
|
||||
</v-btn>
|
||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||
초기화
|
||||
</v-btn> -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<v-row align="end" class="pa-5" no-gutters>
|
||||
<v-col :cols="2.5" class="mr-2">
|
||||
<v-row>
|
||||
<v-col :cols="2">
|
||||
<label for="" class="search-box-label">
|
||||
<!-- <v-icon small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon> -->
|
||||
검색
|
||||
</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>
|
||||
</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: 'calc(100% - 213px)' }"> -->
|
||||
<div ref="modalGridParent" class="h100 py-3">
|
||||
<component
|
||||
:is="loadGrid && dialog ? 'Grid' : null"
|
||||
:gridName="grid_01"
|
||||
:dataPath="searchParam.modalData2.evtObjPop"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@dblClick="setUpdate($event)"
|
||||
/>
|
||||
<!-- :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)" />
|
||||
</div>
|
||||
</div>
|
||||
<v-card-actions class="pa-5 d-flex align-center justify-center">
|
||||
<v-btn :ripple="false" @click="setUpdate('init')">초기화</v-btn>
|
||||
<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 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>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -139,7 +105,11 @@ export default {
|
||||
bindingData: {
|
||||
type: String,
|
||||
require: false,
|
||||
}
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
// bindingFlag:{
|
||||
// type:Boolean,
|
||||
// require: false,
|
||||
@ -209,7 +179,7 @@ export default {
|
||||
}),
|
||||
selectValue: {
|
||||
get() {
|
||||
if(this.formFlag){
|
||||
if (this.formFlag) {
|
||||
if (!this.item) {
|
||||
return this.textFieldData;
|
||||
}
|
||||
@ -217,12 +187,12 @@ export default {
|
||||
// return "NONE";
|
||||
// }
|
||||
else {
|
||||
|
||||
return this.myBindingData
|
||||
|
||||
return this.myBindingData
|
||||
? this.myBindingData[this.item.valueNm]
|
||||
: this.textFieldData;
|
||||
: this.textFieldData;
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
// grid와 바인딩 안했을 때
|
||||
return this.textFieldData;
|
||||
}
|
||||
@ -251,7 +221,7 @@ export default {
|
||||
created() {
|
||||
this.init();
|
||||
},
|
||||
mounted() {},
|
||||
mounted() { },
|
||||
methods: {
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
@ -278,6 +248,9 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
};
|
||||
this.setModalGridOption({
|
||||
modalKey: this.myModalKey,
|
||||
@ -325,7 +298,7 @@ export default {
|
||||
},
|
||||
setUpdate(v) {
|
||||
// 초기화
|
||||
if(v == 'init'){
|
||||
if (v == 'init') {
|
||||
this.selectedData.tagId = null;
|
||||
this.selectedData.tagNm = null;
|
||||
}
|
||||
@ -334,9 +307,9 @@ export default {
|
||||
this.textFieldData = this.selectedData.tagId;
|
||||
} else {
|
||||
// let formFg = this.item.formFg != undefined ? this.item.formFg : this.formFg;
|
||||
if(this.formFlag){
|
||||
if (this.formFlag) {
|
||||
if (this.item.bindNm) {
|
||||
this.myBindingData[this.item.bindNm] = this.selectedData.tagNm;
|
||||
this.myBindingData[this.item.bindNm] = this.selectedData.tagNm;
|
||||
} else {
|
||||
this.myBindingData.tagNm = this.selectedData.tagNm;
|
||||
}
|
||||
@ -360,16 +333,16 @@ export default {
|
||||
};
|
||||
this.$emit('gridEditingFinish', dt);
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
// grid와 binding 안되어있는 경우
|
||||
this.textFieldData = this.selectedData.tagNm;
|
||||
this.setPageData({
|
||||
tagId: this.selectedData.tagId,
|
||||
// [this.item.tagNm]: this.selectedData.tagNm
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
dialogOpenCloseEvent(val) {
|
||||
@ -404,33 +377,8 @@ var evtObjPop = {
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid-cell.tui-grid-cell-has-tree
|
||||
.tui-grid-tree-extra-content
|
||||
+ .tui-grid-cell-content:before {
|
||||
.tui-grid-cell.tui-grid-cell-has-tree .tui-grid-tree-extra-content+.tui-grid-cell-content:before {
|
||||
content: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@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>
|
||||
|
@ -1,26 +1,32 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col :cols="option.labelCols">
|
||||
<v-row class="search-box " align="center" no-gutters >
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
v-if="iconShow"
|
||||
small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ option.labelContent }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="option.textCols">
|
||||
<!-- append-icon="mdi-magnify" -->
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@click="dialogOpenCloseEvent(dialog)"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
></v-text-field>
|
||||
>
|
||||
<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="700px">
|
||||
@ -137,6 +143,11 @@ export default {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
components: {
|
||||
Grid,
|
||||
@ -146,7 +157,7 @@ export default {
|
||||
return {
|
||||
dialog: false,
|
||||
|
||||
loadGrid: false,
|
||||
loadGrid: true,
|
||||
grid_01: 'grid_01',
|
||||
myModalKey: 'FtnPlcFormPop',
|
||||
modalDataKey: 'modalData3',
|
||||
@ -285,27 +296,48 @@ export default {
|
||||
});
|
||||
},
|
||||
async getGridData() {
|
||||
this.loadGrid = false;
|
||||
// this.loadGrid = false;
|
||||
|
||||
const res = await this.postApiReturn({
|
||||
apiKey: 'selectEccBaseInfo',
|
||||
resKey: 'eccBaseInfoData',
|
||||
sendParam: {
|
||||
blocId: this.myBindingData.blocId,
|
||||
eqpmYn: '0',
|
||||
search: this.searchWord,
|
||||
},
|
||||
});
|
||||
// const res = await this.postApiReturn({
|
||||
// apiKey: 'selectEccBaseInfo',
|
||||
// resKey: 'eccBaseInfoData',
|
||||
// sendParam: {
|
||||
// blocId: this.myBindingData.blocId,
|
||||
// eqpmYn: '0',
|
||||
// search: this.searchWord,
|
||||
// },
|
||||
// });
|
||||
|
||||
const setTreeData = await this.setTree({
|
||||
gridKey: this.gridNameTree,
|
||||
treeKey: 'ECC_ID',
|
||||
value: res.map(item => ({
|
||||
// const setTreeData = await this.setTree({
|
||||
// gridKey: this.gridNameTree,
|
||||
// treeKey: 'ECC_ID',
|
||||
// value: res.map(item => ({
|
||||
// ...item,
|
||||
// eccNm: item.eccNm,
|
||||
// })),
|
||||
// });
|
||||
|
||||
//mockdata eccNm
|
||||
|
||||
|
||||
let res = [
|
||||
{ ECC_ID: 'ECC001', eccNm: '서울 본사', iconShow: false, align: 'center' },
|
||||
{ ECC_ID: 'ECC002', eccNm: '부산 지사', useIcon: false, align: 'center' },
|
||||
{ ECC_ID: 'ECC003', eccNm: '대구 센터', useIcon: false, align: 'center' },
|
||||
{ ECC_ID: 'ECC004', eccNm: '광주 사무소' , useIcon: false, align: 'center'},
|
||||
{ ECC_ID: 'ECC005', eccNm: '인천 물류창고' , useIcon: false, align: 'center'},
|
||||
];
|
||||
|
||||
|
||||
const setTreeData = {
|
||||
ROOT: res.map(item => ({
|
||||
...item,
|
||||
eccNm: item.eccNm,
|
||||
})),
|
||||
});
|
||||
}))
|
||||
};
|
||||
|
||||
console.log(res);
|
||||
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.grid_01,
|
||||
|
@ -1,268 +1,195 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- <v-btn :ripple="false" @click="dialog = !dialog">경고창</v-btn> -->
|
||||
<v-dialog
|
||||
v-model="dialog"
|
||||
width="700"
|
||||
overlay-color="#000"
|
||||
overlay-opacity="0.8"
|
||||
>
|
||||
<v-dialog v-model="dialog" width="800" overlay-color="#000" overlay-opacity="0.8">
|
||||
<v-card>
|
||||
<v-toolbar
|
||||
<v-card-title class="px-6 py-4 d-flex align-center justify-space-between">
|
||||
<span class="custom-title-4">{{ label }}</span>
|
||||
<a-button icon="close" type="text" @click="dialog = !dialog"></a-button>
|
||||
</v-card-title>
|
||||
<!-- <v-toolbar
|
||||
:color="isDarkMode ? '#2d3355' : '#3f4d7d'"
|
||||
class="py-4 pr-3 pl-5"
|
||||
height="auto"
|
||||
>
|
||||
<v-toolbar-title>{{ label }}</v-toolbar-title>
|
||||
<!-- <v-btn
|
||||
icon
|
||||
tile
|
||||
small
|
||||
:ripple="false"
|
||||
@click="dialog = !dialog"
|
||||
:style="{ backgroundColor: isDarkMode ? '#2d3355' : '#3f4d7d' }"
|
||||
>
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn> -->
|
||||
</v-toolbar>
|
||||
</v-toolbar> -->
|
||||
<!-- <v-card-title>
|
||||
일정 상세 내용
|
||||
</v-card-title> -->
|
||||
<!-- <template v-for="(item, index) in detailList"> -->
|
||||
<template>
|
||||
<div style="padding : 20px">
|
||||
<v-col :cols="12">
|
||||
<v-row>
|
||||
<v-col :cols="3">
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<label class="search-box-label">
|
||||
<v-icon x-small color="#fb8200" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
일정 시작
|
||||
</label>
|
||||
</v-row>
|
||||
</v-col>
|
||||
<v-col :cols="4">
|
||||
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
|
||||
<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>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div
|
||||
ref="startpicker-container2"
|
||||
id="startpicker-container2"
|
||||
></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
<div class="pa-6 pt-0">
|
||||
<v-row no-gutters class="mb-4">
|
||||
<v-col :cols="12">
|
||||
<label class="search-box-label">
|
||||
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||
일정 시작
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-0 pr-2">
|
||||
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
|
||||
<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>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container2" id="startpicker-container2"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-0 pl-2">
|
||||
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
|
||||
<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>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container2" id="startpicker-container2"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</div>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="2">
|
||||
<vue-numeric-input v-model="strtHh" :min="0" :max="23" controls-type="updown"
|
||||
class="v-input__slot" width="100%" align="center">
|
||||
</vue-numeric-input>
|
||||
</v-col>
|
||||
<v-col :cols="1" style="text-align: center;">
|
||||
:
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<vue-numeric-input v-model="strtMm" :min="0" :max="59" controls-type="updown"
|
||||
class="v-input__slot" width="100%" align="center">
|
||||
</vue-numeric-input>
|
||||
</v-col> -->
|
||||
</v-row>
|
||||
<v-row no-gutters class="mb-4">
|
||||
<v-col :cols="12">
|
||||
<label class="search-box-label">
|
||||
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||
일정 종료
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="pr-2">
|
||||
<!-- <DatePicker v-model="endDt" :parentPrgmId="parentPrgmId"/> -->
|
||||
<div class="startpicker-container3">
|
||||
<v-text-field id="startpicker3" ref="startpicker3" v-model="endDt"
|
||||
:class="'v-input__custom'" :hide-details="true" readonly outlined>
|
||||
<template #append>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container3" id="startpicker-container3"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="pl-2">
|
||||
<div class="startpicker-container3">
|
||||
<v-text-field id="startpicker3" ref="startpicker3" v-model="endDt"
|
||||
:class="'v-input__custom'" :hide-details="true" readonly outlined>
|
||||
<template #append>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container3" id="startpicker-container3"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</div>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="2">
|
||||
<vue-numeric-input v-model="endHh" :min="0" :max="23" controls-type="updown"
|
||||
class="v-input__slot" width="100%" align="center">
|
||||
</vue-numeric-input>
|
||||
</v-col>
|
||||
<v-col :cols="1" style="text-align: center;">
|
||||
:
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<vue-numeric-input v-model="endMm" :min="0" :max="59" controls-type="updown"
|
||||
class="v-input__slot" width="100%" align="center">
|
||||
</vue-numeric-input>
|
||||
</v-col> -->
|
||||
</v-row>
|
||||
<v-row no-gutters class="mb-4">
|
||||
<v-col :cols="12">
|
||||
<label class="search-box-label">
|
||||
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||
일정 제목
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="py-0">
|
||||
<v-text-field v-model="planTitle" class="v-input__custom" outlined
|
||||
:hide-details="true"></v-text-field>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row no-gutters class="mb-4">
|
||||
<v-col :cols="12">
|
||||
<label class="search-box-label">
|
||||
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||
일정 상세 내용
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="py-0">
|
||||
<v-textarea v-model="planCntn" class="v-input__custom" outlined :hide-details="true"
|
||||
:maxlength="1000"></v-textarea>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row no-gutters class="mb-4">
|
||||
<v-col :cols="12">
|
||||
<label class="search-box-label">
|
||||
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||
표시 색상
|
||||
</label>
|
||||
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<div class="d-flex calendar-color" style="gap:16px">
|
||||
|
||||
<div id="redDiv" class="colPk redBg" @click="colorClick('red')">
|
||||
<div class="inner-color"></div>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<vue-numeric-input
|
||||
v-model="strtHh"
|
||||
:min="0"
|
||||
:max="23"
|
||||
controls-type="updown"
|
||||
class="v-input__slot"
|
||||
width="100%"
|
||||
align="center"
|
||||
>
|
||||
</vue-numeric-input>
|
||||
</v-col>
|
||||
<v-col :cols="1" style="text-align: center;">
|
||||
:
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<vue-numeric-input
|
||||
v-model="strtMm"
|
||||
:min="0"
|
||||
:max="59"
|
||||
controls-type="updown"
|
||||
class="v-input__slot"
|
||||
width="100%"
|
||||
align="center"
|
||||
>
|
||||
</vue-numeric-input>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row>
|
||||
<v-col :cols="3">
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<label class="search-box-label">
|
||||
<v-icon x-small color="#fb8200" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
일정 종료
|
||||
</label>
|
||||
</v-row>
|
||||
</v-col>
|
||||
<v-col :cols="4">
|
||||
<!-- <DatePicker v-model="endDt" :parentPrgmId="parentPrgmId"/> -->
|
||||
<div class="startpicker-container3">
|
||||
<v-text-field
|
||||
id="startpicker3"
|
||||
ref="startpicker3"
|
||||
v-model="endDt"
|
||||
:class="'v-input__custom'"
|
||||
:hide-details="true"
|
||||
readonly
|
||||
outlined
|
||||
>
|
||||
<template #append>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div
|
||||
ref="startpicker-container3"
|
||||
id="startpicker-container3"
|
||||
></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
|
||||
<div id="blueDiv" class="colPk blueBg" @click="colorClick('blue')">
|
||||
<div class="inner-color"></div>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<vue-numeric-input
|
||||
v-model="endHh"
|
||||
:min="0"
|
||||
:max="23"
|
||||
controls-type="updown"
|
||||
class="v-input__slot"
|
||||
width="100%"
|
||||
align="center"
|
||||
>
|
||||
</vue-numeric-input>
|
||||
</v-col>
|
||||
<v-col :cols="1" style="text-align: center;">
|
||||
:
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<vue-numeric-input
|
||||
v-model="endMm"
|
||||
:min="0"
|
||||
:max="59"
|
||||
controls-type="updown"
|
||||
class="v-input__slot"
|
||||
width="100%"
|
||||
align="center"
|
||||
>
|
||||
</vue-numeric-input>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row>
|
||||
<v-col :cols="3">
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<label class="search-box-label">
|
||||
<v-icon x-small color="#fb8200" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
일정 제목
|
||||
</label>
|
||||
</v-row>
|
||||
</v-col>
|
||||
<v-col :cols="9">
|
||||
<v-text-field
|
||||
v-model="planTitle"
|
||||
class="v-input__custom"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
></v-text-field>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row>
|
||||
<v-col :cols="3">
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<label class="search-box-label">
|
||||
<v-icon x-small color="#fb8200" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
일정 상세 내용
|
||||
</label>
|
||||
</v-row>
|
||||
</v-col>
|
||||
<v-col :cols="9">
|
||||
<v-textarea
|
||||
v-model="planCntn"
|
||||
class="v-input__custom"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:maxlength="1000"
|
||||
></v-textarea>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row>
|
||||
<v-col :cols="3">
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-icon x-small color="#fb8200" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
표시 색상
|
||||
</v-row>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
<div
|
||||
id="redDiv"
|
||||
class="colPk redBg"
|
||||
@click="colorClick('red')"
|
||||
></div>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
<div
|
||||
id="blueDiv"
|
||||
class="colPk blueBg"
|
||||
@click="colorClick('blue')"
|
||||
></div>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
<div
|
||||
id="pupleDiv"
|
||||
class="colPk pupleBg"
|
||||
@click="colorClick('puple')"
|
||||
></div>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
<div
|
||||
id="greenDiv"
|
||||
class="colPk greenBg"
|
||||
@click="colorClick('green')"
|
||||
></div>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
<div
|
||||
id="orangeDiv"
|
||||
class="colPk orangeBg"
|
||||
@click="colorClick('orange')"
|
||||
></div>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
<div
|
||||
id="pinkDiv"
|
||||
class="colPk pinkBg"
|
||||
@click="colorClick('pink')"
|
||||
></div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-col>
|
||||
|
||||
|
||||
<div id="pupleDiv" class="colPk pupleBg" @click="colorClick('puple')">
|
||||
<div class="inner-color"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="greenDiv" class="colPk greenBg" @click="colorClick('green')">
|
||||
<div class="inner-color"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orangeDiv" class="colPk orangeBg" @click="colorClick('orange')">
|
||||
<div class="inner-color"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="pinkDiv" class="colPk pinkBg" @click="colorClick('pink')">
|
||||
<div class="inner-color"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
</template>
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn :ripple="false" @click="btnAction('save')">저장</v-btn>
|
||||
<v-btn
|
||||
v-show="popUpAction === 'update'"
|
||||
:ripple="false"
|
||||
@click="btnAction('delete')"
|
||||
>삭제</v-btn
|
||||
>
|
||||
<v-btn :ripple="false" @click="btnAction('close')">닫기</v-btn>
|
||||
<a-button :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>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -335,8 +262,8 @@ export default {
|
||||
strtMm: 0,
|
||||
endHh: 1,
|
||||
endMm: 0,
|
||||
strtDt:null,
|
||||
endDt:null,
|
||||
strtDt: null,
|
||||
endDt: null,
|
||||
// strtDt: new Date().toISOString().substr(0, 10),
|
||||
// endDt: new Date().toISOString().substr(0, 10),
|
||||
planColor: '',
|
||||
@ -344,7 +271,7 @@ export default {
|
||||
startDatepickerInstance3: null,
|
||||
planSeq: '',
|
||||
blocId: '',
|
||||
addPlanData:{
|
||||
addPlanData: {
|
||||
}
|
||||
};
|
||||
},
|
||||
@ -364,21 +291,21 @@ export default {
|
||||
if (val) {
|
||||
this.openDialog();
|
||||
|
||||
this.$nextTick(() => {});
|
||||
this.$nextTick(() => { });
|
||||
} else {
|
||||
}
|
||||
},
|
||||
strtDt(val){
|
||||
strtDt(val) {
|
||||
console.log('strtDt : ', val);
|
||||
this.checkStrtAndEndDateTime('start');
|
||||
if(this.startDatepickerInstance3){
|
||||
if (this.startDatepickerInstance3) {
|
||||
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
||||
}
|
||||
},
|
||||
endDt(val){
|
||||
endDt(val) {
|
||||
console.log('endDt : ', val);
|
||||
this.checkStrtAndEndDateTime('end');
|
||||
if(this.startDatepickerInstance){
|
||||
if (this.startDatepickerInstance) {
|
||||
this.startDatepickerInstance.setDate(new Date(this.strtDt));
|
||||
}
|
||||
},
|
||||
@ -405,18 +332,18 @@ export default {
|
||||
postUpdateApi: 'modules/list/postUpdateApi',
|
||||
getDomain: 'modules/list/getDomain',
|
||||
}),
|
||||
async checkStrtAndEndDateTime(startEndFlag){
|
||||
async checkStrtAndEndDateTime(startEndFlag) {
|
||||
var startDateTime = this.strtDt + ' ' + this.strtHh + ':' + this.strtMm;
|
||||
var endDateTime = this.endDt + ' ' + this.endHh + ':' + this.endMm;
|
||||
|
||||
startDateTime = new Date(startDateTime);
|
||||
endDateTime = new Date(endDateTime);
|
||||
|
||||
if(startDateTime > endDateTime){
|
||||
if(startEndFlag == 'start'){ // 시작 부분이 변경됨 -> 끝 부분 값을 변경
|
||||
if (startDateTime > endDateTime) {
|
||||
if (startEndFlag == 'start') { // 시작 부분이 변경됨 -> 끝 부분 값을 변경
|
||||
this.endDt = this.convertDateToString(new Date(new Date().setDate(new Date(this.strtDt).getDate() + 1)));
|
||||
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
||||
}else if(startEndFlag == 'end'){ // 끝 부분이 변경됨 -> 시작 부분 값을 변경
|
||||
} else if (startEndFlag == 'end') { // 끝 부분이 변경됨 -> 시작 부분 값을 변경
|
||||
this.strtDt = this.convertDateToString(new Date(new Date().setDate(new Date(this.endDt).getDate() - 1)));
|
||||
this.startDatepickerInstance.setDate(new Date(this.strtDt));
|
||||
}
|
||||
@ -432,17 +359,17 @@ export default {
|
||||
var dt1 = new Date();
|
||||
var dt2 = new Date();
|
||||
|
||||
if(this.strtDt){
|
||||
if (this.strtDt) {
|
||||
dt1 = this.strtDt;
|
||||
}
|
||||
|
||||
if(this.endDt){
|
||||
if (this.endDt) {
|
||||
dt2 = this.endDt;
|
||||
}
|
||||
|
||||
this.startDatepickerInstance = new TuiDatepicker(startContainer, {
|
||||
// date: new Date(),
|
||||
date : dt1,
|
||||
date: dt1,
|
||||
language: 'ko',
|
||||
type: 'date',
|
||||
input: {
|
||||
@ -455,7 +382,7 @@ export default {
|
||||
|
||||
this.startDatepickerInstance3 = new TuiDatepicker(startContainer3, {
|
||||
// date: new Date(),
|
||||
date : dt2,
|
||||
date: dt2,
|
||||
language: 'ko',
|
||||
type: 'date',
|
||||
input: {
|
||||
@ -492,8 +419,8 @@ export default {
|
||||
this.endDt = this.convertDateToString(dt);
|
||||
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
||||
},
|
||||
convertDateToString(dt){
|
||||
return dt.getFullYear() + '-' + String(dt.getMonth()+1).padStart(2, '0') + '-' + String(dt.getDate()).padStart(2, '0');
|
||||
convertDateToString(dt) {
|
||||
return dt.getFullYear() + '-' + String(dt.getMonth() + 1).padStart(2, '0') + '-' + String(dt.getDate()).padStart(2, '0');
|
||||
},
|
||||
convertStringToDateFormat(val) {
|
||||
var result = '';
|
||||
@ -526,7 +453,7 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
async insertPlanData(){
|
||||
async insertPlanData() {
|
||||
var year = this.addPlanData.year;
|
||||
var month = this.addPlanData.month;
|
||||
var day = this.addPlanData.day;
|
||||
@ -562,8 +489,8 @@ export default {
|
||||
// this.strtDt = Utility.setFormatDate(this.strtDt, 'YYYY-MM-DD');
|
||||
// this.endDt = Utility.setFormatDate(this.endDt, 'YYYY-MM-DD');
|
||||
|
||||
this.strtDt = year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
|
||||
this.endDt = year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
|
||||
this.strtDt = year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
|
||||
this.endDt = year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
|
||||
},
|
||||
async getPlanData() {
|
||||
let res = await this.postApiReturn({
|
||||
@ -786,100 +713,116 @@ export default {
|
||||
.v-card__actions {
|
||||
padding-bottom: 30px !important;
|
||||
}
|
||||
|
||||
.inner-color {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.colPk {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
text-align: center;
|
||||
border-radius: 5px 5px;
|
||||
border-radius: 6px 6px;
|
||||
cursor: pointer;
|
||||
padding: 4px
|
||||
}
|
||||
|
||||
.colPkSelect {
|
||||
border: 2px solid;
|
||||
border: 1px solid #00000073;
|
||||
}
|
||||
.redBg {
|
||||
|
||||
.redBg .inner-color {
|
||||
background-color: rgba(229, 62, 62, var(--bg-opacity));
|
||||
background-color: #e53e3e;
|
||||
background-color: #FF4D4F;
|
||||
}
|
||||
.blueBg {
|
||||
|
||||
.blueBg .inner-color {
|
||||
background-color: rgba(66, 153, 225, var(--bg-opacity));
|
||||
background-color: #4299e1;
|
||||
background-color: #597EF7;
|
||||
}
|
||||
.pupleBg {
|
||||
|
||||
.pupleBg .inner-color {
|
||||
background-color: rgba(102, 126, 234, var(--bg-opacity));
|
||||
background-color: #667eea;
|
||||
background-color: #9254DE;
|
||||
}
|
||||
.greenBg {
|
||||
|
||||
.greenBg .inner-color {
|
||||
background-color: rgba(56, 178, 172, var(--bg-opacity));
|
||||
background-color: #38b2ac;
|
||||
background-color: #73D13D;
|
||||
}
|
||||
.orangeBg {
|
||||
|
||||
.orangeBg .inner-color {
|
||||
background-color: rgba(237, 137, 54, var(--bg-opacity));
|
||||
background-color: #ed8936;
|
||||
background-color: #FFA940;
|
||||
}
|
||||
.pinkBg {
|
||||
|
||||
.pinkBg .inner-color {
|
||||
background-color: rgba(237, 100, 166, var(--bg-opacity));
|
||||
background-color: #ed64a6;
|
||||
background-color: #F759AB;
|
||||
}
|
||||
}
|
||||
|
||||
.startpicker-container2 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
|
||||
.v-input {
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container2,
|
||||
#endpicker-container2 {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.startpicker-container3 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
|
||||
.v-input {
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container3,
|
||||
#endpicker-container3 {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__custom {
|
||||
flex: 0 0 auto;
|
||||
|
||||
|
||||
&.half {
|
||||
width: calc(50% - 20px);
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
.tui-timepicker-row {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
background-color: #edf4fc;
|
||||
|
||||
.tui-timepicker-column.tui-timepicker-colon {
|
||||
color: #000 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.startpicker-container2 {
|
||||
position: relative;
|
||||
|
||||
.v-input {
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container2,
|
||||
#endpicker-container2 {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.startpicker-container3 {
|
||||
position: relative;
|
||||
|
||||
.v-input {
|
||||
.v-input__append-outer {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
|
||||
#startpicker-container3,
|
||||
#endpicker-container3 {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,85 +1,63 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-row class="search-box" align="center" >
|
||||
<!-- <v-col v-if="label" cols="2"> -->
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<v-col v-if="item.label" :cols="item.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
<v-icon v-if="item.iconShow" small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-col :cols="item.label ? item.textCols : ''" class="py-0">
|
||||
<!-- <v-col :cols="label ? 9 : ''"> -->
|
||||
<!-- :value="textfield" -->
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@click="dialog = !dialog"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:disabled="item.disabled || false"
|
||||
:required="item.required || false"
|
||||
></v-text-field>
|
||||
<v-text-field readonly v-model="selectValue" append-icon="" class="v-input__custom"
|
||||
@click="dialog = !dialog" outlined :hide-details="true" :disabled="item.disabled || false"
|
||||
:required="item.required || false"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
|
||||
<!-- <v-row justify="center"> -->
|
||||
<v-dialog
|
||||
ref="popModal"
|
||||
v-model="dialog"
|
||||
width="600"
|
||||
overlay-color="#000"
|
||||
overlay-opacity="0.8"
|
||||
scrollable
|
||||
>
|
||||
<v-dialog v-model="dialog" width="800px" scrollable>
|
||||
<!-- <template v-slot:activator="{ on, attrs }">
|
||||
<v-btn color="primary" dark v-bind="attrs" v-on="on">공정/설비</v-btn>
|
||||
</template> -->
|
||||
<v-card style="height: 100%">
|
||||
<v-card-title
|
||||
class="v-card__title 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">{{ item.label }}</span>
|
||||
<v-btn icon tile :ripple="false" @click="dialog = !dialog">
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn>
|
||||
<a-button icon="close" type="text" @click="dialog = false"></a-button>
|
||||
</v-card-title>
|
||||
<!-- <v-card-actions> -->
|
||||
<div class="pa-5">
|
||||
<div class="pa-6 pt-0">
|
||||
<!-- <v-text-field label="위치정보 선택"></v-text-field> -->
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col v-if="label" cols="3">
|
||||
<v-row align="center">
|
||||
<v-col v-if="label" cols="12" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<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>
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? 6 : ''">
|
||||
<v-col :cols="label ? 6 : ''" class="py-0">
|
||||
<!-- :value="textfield" -->
|
||||
<v-text-field
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
v-model="searchWord"
|
||||
@keyup.enter="typeEnterKey"
|
||||
></v-text-field>
|
||||
<v-text-field append-icon="" class="v-input__custom" outlined :hide-details="true"
|
||||
v-model="searchWord" @keyup.enter="typeEnterKey"><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-btn :ripple="false" icon tile @click="btnTreeExpand()">
|
||||
<!-- {{ treeExpand }} -->
|
||||
<v-icon
|
||||
size="30"
|
||||
v-text="treeExpandAll ? 'mdi-chevron-up' : 'mdi-chevron-down'"
|
||||
></v-icon>
|
||||
<v-icon size="30"
|
||||
v-text="treeExpandAll ? 'mdi-chevron-up' : 'mdi-chevron-down'"></v-icon>
|
||||
</v-btn>
|
||||
<!-- <v-btn color="primary" dark>펼치기</v-btn> -->
|
||||
<!-- <v-btn color="primary" dark>접기</v-btn> -->
|
||||
@ -98,20 +76,13 @@
|
||||
<!-- <v-btn color="primary" dark>초기화</v-btn> -->
|
||||
<!-- as-is 롤 봐도 초기화가 하는 기능을 모르겠음.. -->
|
||||
</div>
|
||||
<!-- </v-card-actions> -->
|
||||
<v-divider></v-divider>
|
||||
|
||||
<v-card-text>
|
||||
<div ref="treeGridParent" style="height: 500px">
|
||||
<component
|
||||
:ref="'treeGrid' + parentPrgmId"
|
||||
:is="loadGrid && dialog ? 'Grid' : null"
|
||||
:gridName="gridNameTree"
|
||||
:dataPath="searchParam.modalData.selectReadObjListTree"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="bindingData"
|
||||
@getRowsData="getRowData"
|
||||
@dblClick="setUpdate()"
|
||||
/>
|
||||
<component :ref="'treeGrid' + parentPrgmId" :is="loadGrid && dialog ? 'Grid' : null"
|
||||
:gridName="gridNameTree" :dataPath="searchParam.modalData.selectReadObjListTree"
|
||||
:parentPrgmId="parentPrgmId" :bindingData="bindingData" @getRowsData="getRowData"
|
||||
@dblClick="setUpdate()" />
|
||||
</div>
|
||||
<!-- <component
|
||||
:is="ftnPlcListTreeData.length > 0 ? 'Tree' : null"
|
||||
@ -119,24 +90,9 @@
|
||||
/> -->
|
||||
</v-card-text>
|
||||
<v-divider></v-divider>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="primary" dark @click="setUpdate()">확인</v-btn>
|
||||
<v-btn color="primary" dark @click="dialog = false">닫기</v-btn>
|
||||
<!-- <v-btn
|
||||
color="green darken-1"
|
||||
text
|
||||
@click="dialog = false"
|
||||
>
|
||||
Disagree
|
||||
</v-btn>
|
||||
<v-btn
|
||||
color="green darken-1"
|
||||
text
|
||||
@click="dialog = false"
|
||||
>
|
||||
Agree
|
||||
</v-btn> -->
|
||||
<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>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -199,7 +155,7 @@ export default {
|
||||
|
||||
myModalKey: 'selectReadObjListTree',
|
||||
gridNameTree: 'treeGrid',
|
||||
loadGrid: false,
|
||||
loadGrid: true,
|
||||
|
||||
dialog: false,
|
||||
treeData: [], // 리턴받은 원본 트리 데이터
|
||||
@ -308,6 +264,17 @@ export default {
|
||||
gridKey: this.gridNameTree,
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '검침개소명',
|
||||
name: 'readPlcNm',
|
||||
@ -322,23 +289,69 @@ 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,
|
||||
// useFg: '1',
|
||||
// readPlcNmLike: this.searchWord,
|
||||
// },
|
||||
// });
|
||||
|
||||
const treeData = [
|
||||
{
|
||||
readPlcNm: '서울 본사',
|
||||
name: '본사',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '서울 본사 - 1층',
|
||||
name: '1층',
|
||||
},
|
||||
{
|
||||
readPlcNm: '서울 본사 - 2층',
|
||||
name: '2층',
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
{
|
||||
readPlcNm: '부산 지사',
|
||||
name: '지사',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동',
|
||||
name: 'A동',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동 1층',
|
||||
name: '1층',
|
||||
},
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동 2층',
|
||||
name: '2층',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
readPlcNm: '부산 지사 - B동',
|
||||
name: 'B동',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
readPlcNm: '대전 창고',
|
||||
name: '창고',
|
||||
},
|
||||
];
|
||||
|
||||
// console.log("treeData", res)
|
||||
|
||||
// // console.log("treeData", res)
|
||||
let myOptionsTree = {
|
||||
treeColumnOptions: {
|
||||
name: 'readPlcNm',
|
||||
@ -360,32 +373,34 @@ 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;
|
||||
|
||||
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridNameTree,
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: setTreeData.ROOT || [],
|
||||
value: treeData,
|
||||
});
|
||||
this.loadGrid = true;
|
||||
|
||||
@ -520,9 +535,7 @@ const selectReadObjListTree = {
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid-cell.tui-grid-cell-has-tree
|
||||
.tui-grid-tree-extra-content
|
||||
+ .tui-grid-cell-content:before {
|
||||
.tui-grid-cell.tui-grid-cell-has-tree .tui-grid-tree-extra-content+.tui-grid-cell-content:before {
|
||||
content: none !important;
|
||||
}
|
||||
}
|
||||
@ -532,17 +545,13 @@ const selectReadObjListTree = {
|
||||
.v-dialog {
|
||||
.v-card {
|
||||
&__title {
|
||||
color: map-deep-get($color, 'white', '0');
|
||||
@if $theme == dark {
|
||||
|
||||
@if $theme ==dark {
|
||||
background-color: #2d3355;
|
||||
|
||||
.v-btn {
|
||||
background-color: #2d3355;
|
||||
}
|
||||
} @else {
|
||||
background-color: #3f4d7d;
|
||||
.v-btn {
|
||||
background-color: #3f4d7d;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
138
components/common/radiobutton/RadioCmCycle.vue
Normal file
@ -0,0 +1,138 @@
|
||||
<template>
|
||||
<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>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? 'auto' : ''">
|
||||
<v-radio-group
|
||||
v-model="selected"
|
||||
required:rules="radioRules"
|
||||
row
|
||||
dense
|
||||
:hide-details="true"
|
||||
>
|
||||
<v-radio
|
||||
label="월별"
|
||||
value="CYC_YEAR"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
<v-radio
|
||||
label="일별"
|
||||
value="CYC_MONTH"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
<v-radio
|
||||
label="시간별"
|
||||
value="CYC_DAY"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
</v-radio-group>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import Utility from '~/plugins/utility';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '주기',
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
labelPrepend: true,
|
||||
// selected:"CYC_DAY"
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: state => state.pageData,
|
||||
isDarkMode: 'isDarkMode',
|
||||
}),
|
||||
selected: {
|
||||
get() {
|
||||
return this.searchParam[this.parentPrgmId].cmCycle;
|
||||
},
|
||||
set(value) {
|
||||
this.setDefaultDate(value);
|
||||
return this.setPageData({ cmCycle: value });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {},
|
||||
created() {
|
||||
// this.setDefaultDate(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
},
|
||||
async mounted() {},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
...mapActions({}),
|
||||
setDefaultDate(value) {
|
||||
// console.log("주기에 따른 오늘 기준 기본 날짜 세팅");
|
||||
const today = Utility.setFormatDate('today', 'YYYY-MM-DD');
|
||||
let srartDate = '';
|
||||
let endDate = '';
|
||||
// console.log(value);
|
||||
switch (value) {
|
||||
case 'CYC_YEAR':
|
||||
// endDate = today;
|
||||
srartDate = Utility.setFormatDate(today, 'YYYY');
|
||||
break;
|
||||
|
||||
case 'CYC_MONTH':
|
||||
// endDate = today;
|
||||
srartDate = Utility.setFormatDate(today, 'YYYY-MM');
|
||||
// endDate = today;
|
||||
// srartDate = Utility.setBeforetDate(
|
||||
// this.searchParam[this.parentPrgmId],
|
||||
// endDate,
|
||||
// "YYYYMMDD"
|
||||
// );
|
||||
break;
|
||||
|
||||
case 'CYC_DAY':
|
||||
// endDate = today;
|
||||
srartDate = today;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this.setPageData({ fromDt: srartDate });
|
||||
// console.log(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
// console.log(this.searchParam[this.parentPrgmId].dateRange);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
113
components/common/radiobutton/RadioStandard.vue
Normal file
@ -0,0 +1,113 @@
|
||||
<template>
|
||||
<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>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-radio-group
|
||||
v-model="selected"
|
||||
required:rules="radioRules"
|
||||
row
|
||||
hide-details
|
||||
dense
|
||||
>
|
||||
<v-radio
|
||||
label="태그"
|
||||
value="tag"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
<v-radio
|
||||
label="검침개소"
|
||||
value="readPlc"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
<v-radio
|
||||
label="공정"
|
||||
value="ecc"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
<v-radio
|
||||
label="설비"
|
||||
value="eqpm"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
</v-radio-group>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import Utility from '~/plugins/utility';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
label: '기준',
|
||||
labelPrepend: true,
|
||||
// selected:"CYC_DAY"
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
isDarkMode: 'isDarkMode',
|
||||
searchParam: state => state.pageData,
|
||||
}),
|
||||
selected: {
|
||||
get() {
|
||||
return this.searchParam[this.parentPrgmId].rdbStandard;
|
||||
},
|
||||
set(value) {
|
||||
return this.setPageData({ rdbStandard: value });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
selected(value) {
|
||||
// 주기에 따른 오늘 기준 기본 날짜 세팅
|
||||
this.setDefaultDate(value);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
// this.setDefaultDate(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
},
|
||||
async mounted() {},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
...mapActions({}),
|
||||
setDefaultDate(value) {
|
||||
this.setPageData({ rdbStandard: value });
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
99
components/common/radiobutton/RadioUseCost.vue
Normal file
@ -0,0 +1,99 @@
|
||||
<template>
|
||||
<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>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-radio-group
|
||||
v-model="selected"
|
||||
required:rules="radioRules"
|
||||
row
|
||||
hide-details
|
||||
dense
|
||||
>
|
||||
<v-radio
|
||||
label="사용량"
|
||||
value="use"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
<v-radio
|
||||
label="비용"
|
||||
value="cost"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
</v-radio-group>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import Utility from '~/plugins/utility';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
label: '구분',
|
||||
labelPrepend: true,
|
||||
// selected:"CYC_DAY"
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
isDarkMode: 'isDarkMode',
|
||||
searchParam: state => state.pageData,
|
||||
}),
|
||||
selected: {
|
||||
get() {
|
||||
return this.searchParam[this.parentPrgmId].rdbUseCost;
|
||||
},
|
||||
set(value) {
|
||||
return this.setPageData({ rdbUseCost: value });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
selected(value) {
|
||||
// 주기에 따른 오늘 기준 기본 날짜 세팅
|
||||
this.setDefaultDate(value);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
// this.setDefaultDate(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
},
|
||||
async mounted() {},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
...mapActions({}),
|
||||
setDefaultDate(value) {
|
||||
this.setPageData({ rdbUseCost: value });
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
97
components/common/radiobutton/RadioView.vue
Normal file
@ -0,0 +1,97 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-radio-group
|
||||
v-model="selectedView"
|
||||
required:rules="radioRules"
|
||||
row
|
||||
dense
|
||||
:hide-details="true"
|
||||
>
|
||||
<v-radio
|
||||
label="전체"
|
||||
value="viewAll"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
<v-radio
|
||||
label="차트"
|
||||
value="viewChart"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
<v-radio
|
||||
label="그리드"
|
||||
value="viewGrid"
|
||||
:ripple="false"
|
||||
:color="isDarkMode ? '#1b74d7' : '#4777d9'"
|
||||
on-icon="mdi-record-circle"
|
||||
></v-radio>
|
||||
</v-radio-group>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import Utility from '~/plugins/utility';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 8,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
label: '',
|
||||
labelPrepend: true,
|
||||
// selected:"CYC_DAY"
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: state => state.pageData,
|
||||
isDarkMode: 'isDarkMode',
|
||||
}),
|
||||
selectedView: {
|
||||
get() {
|
||||
return this.searchParam[this.parentPrgmId].viewCheck;
|
||||
},
|
||||
set(value) {
|
||||
return this.setPageData({ viewCheck: value });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {},
|
||||
created() {
|
||||
// this.setDefaultDate(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
},
|
||||
async mounted() {},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
...mapActions({}),
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
@ -7,7 +7,12 @@
|
||||
>
|
||||
<v-col v-if="item.label" :cols="labelCol">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon x-small color="primary" class="mr-1">mdi-record-circle</v-icon>
|
||||
<v-icon
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
<!-- <v-icon x-small color="primary" class="mr-1">mdi-record-circle</v-icon> -->
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
|
@ -3,8 +3,12 @@
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<!-- <v-icon x-small :color="'#fb8200'" class="mr-1" -->
|
||||
<v-icon x-small :color="'#4777d9'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:color="'#4777d9'"
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
@ -18,7 +22,7 @@
|
||||
solo
|
||||
outlined
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
:class="['v-select__custom', customClass]"
|
||||
></v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -61,12 +65,21 @@ export default {
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
default: 12,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
default: 12,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
|
@ -2,22 +2,23 @@
|
||||
<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
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select
|
||||
v-model="selectValue"
|
||||
:items="searchParam[parentPrgmId].blocMstrList"
|
||||
label="사업장을 선택하세요"
|
||||
item-text="blocNm"
|
||||
item-value="idx"
|
||||
solo
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
outlined
|
||||
></v-select>
|
||||
<v-select v-model="selectValue" :items="searchParam[parentPrgmId].blocMstrList" label="사업장을 선택하세요"
|
||||
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-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -56,6 +57,21 @@ export default {
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: null,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -2,26 +2,24 @@
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow" x-small
|
||||
:color="required ? '#fb8200' : 'primary'"
|
||||
class="mr-1">mdi-record-circle</v-icon>
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select
|
||||
v-model="innerValue"
|
||||
:items="itemList"
|
||||
item-text="text"
|
||||
item-value="value"
|
||||
solo
|
||||
outlined
|
||||
:hide-details="true"
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
></v-select>
|
||||
<v-select v-model="innerValue" :items="itemList" item-text="text" item-value="value" solo outlined
|
||||
:hide-details="true" append-icon="" :class="['v-select__custom', customClass]" :disabled="disabled"
|
||||
:readonly="readonly"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
|
||||
|
||||
</template></v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -44,12 +42,12 @@ export default {
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 8,
|
||||
default: 12,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
default: 12,
|
||||
},
|
||||
itemList: {
|
||||
type: Array,
|
||||
@ -61,25 +59,29 @@ export default {
|
||||
require: true,
|
||||
default: null,
|
||||
},
|
||||
required:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
iconShow:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:true
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
disabled: {
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
readonly: {
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
emits: ['update:propsValue'],
|
||||
|
@ -2,9 +2,12 @@
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow" x-small
|
||||
:color="required ? '#fb8200' : 'primary'"
|
||||
class="mr-1">mdi-record-circle</v-icon>
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
@ -14,16 +17,16 @@
|
||||
:items="itemList"
|
||||
item-text="text"
|
||||
item-value="value"
|
||||
solo
|
||||
outlined
|
||||
:multiple="multiple"
|
||||
:hide-details="true"
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
append-icon=""
|
||||
:class="['v-select__custom', customClass]"
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
></v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
><template v-slot:append>
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
</template></v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -87,6 +90,10 @@ export default {
|
||||
require:false,
|
||||
default:false
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
emits: ['update:propsValue'],
|
||||
data() {
|
||||
|
@ -1,160 +1,171 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow" x-small
|
||||
:color="required ? '#fb8200' : 'primary'"
|
||||
class="mr-1">mdi-record-circle</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? timeCols : ''">
|
||||
<v-select
|
||||
v-model="timeInnerValue"
|
||||
:items="itemList"
|
||||
item-text="text"
|
||||
item-value="value"
|
||||
solo
|
||||
outlined
|
||||
:menu-props="{auto:true, offsetY: true}"
|
||||
:hide-details="true"
|
||||
append-icon="mdi-chevron-down"
|
||||
:class="'v-select__custom'"
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
@click="setDatepickerHide"
|
||||
></v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
x-small
|
||||
:color="required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? timeCols : ''">
|
||||
<v-select
|
||||
v-model="timeInnerValue"
|
||||
:items="itemList"
|
||||
item-text="text"
|
||||
item-value="value"
|
||||
solo
|
||||
outlined
|
||||
:menu-props="{ auto: true, offsetY: true }"
|
||||
:hide-details="true"
|
||||
:class="'v-select__custom select-large'"
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
@click="setDatepickerHide"
|
||||
style="width: 170px; border-radius: 6px !important"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<a-icon
|
||||
class="v-icon"
|
||||
type="clock-circle"
|
||||
style="width: 14px; height: 14px; color: #00000073"
|
||||
/>
|
||||
</template>
|
||||
</v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import { mapState, mapMutations, mapActions } from "vuex";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
autoLoad: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: null,
|
||||
},
|
||||
timeCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 1,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
itemList: {
|
||||
type: Array,
|
||||
require: true,
|
||||
default: () => [],
|
||||
},
|
||||
propsValue: {
|
||||
type: String,
|
||||
require: true,
|
||||
//데이터 형태: '00 : 00'
|
||||
},
|
||||
required:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
},
|
||||
iconShow:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:true
|
||||
},
|
||||
disabled: {
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
},
|
||||
readonly: {
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default:false
|
||||
},
|
||||
minInterval: {
|
||||
type:Number,
|
||||
require:false,
|
||||
default:1
|
||||
}
|
||||
},
|
||||
emits: ['update:propsValue'],
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: state => state.pageData,
|
||||
}),
|
||||
timeInnerValue: {
|
||||
get() {
|
||||
return this.propsValue;
|
||||
},
|
||||
set(value) {
|
||||
// console.log('value[setValue] : ', value)
|
||||
this.$emit('update:propsValue', value);
|
||||
},
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getTimeList();
|
||||
// console.log('created SelectBox')
|
||||
// console.log('timeList : ', this.timeList);
|
||||
// console.log('propsValue : ', this.propsValue);
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
...mapActions({}),
|
||||
getTimeList(){
|
||||
for(var i=0; i<24; i++){
|
||||
let hour = i.toString().padStart(2, '0');
|
||||
for(var j=0; j<60; j++){
|
||||
if(j%this.minInterval===0){
|
||||
let min = j.toString().padStart(2, '0');
|
||||
this.itemList.push(
|
||||
{
|
||||
'text' : hour + ' : ' + min,
|
||||
'value': hour + ' : ' + min
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
this.propsValue = this.itemList[0].value;
|
||||
},
|
||||
setDatepickerHide(e){
|
||||
// datepicker 선택 중 시간 selectBox를 고를 경우 datepicker를 hidden 시키는 기능
|
||||
if(document.querySelector("#startpicker-container > div") != undefined){
|
||||
let datepicker1 = document.querySelector("#startpicker-container > div");
|
||||
datepicker1.classList.add('tui-hidden');
|
||||
}
|
||||
if(document.querySelector("#endpicker-container > div") != undefined){
|
||||
let datepicker2 = document.querySelector("#endpicker-container > div");
|
||||
datepicker2.classList.add('tui-hidden');
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
autoLoad: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: null,
|
||||
},
|
||||
timeCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 1,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
itemList: {
|
||||
type: Array,
|
||||
require: true,
|
||||
default: () => [],
|
||||
},
|
||||
propsValue: {
|
||||
type: String,
|
||||
require: true,
|
||||
//데이터 형태: '00 : 00'
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
minInterval: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 1,
|
||||
},
|
||||
},
|
||||
emits: ["update:propsValue"],
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: (state) => state.pageData,
|
||||
}),
|
||||
timeInnerValue: {
|
||||
get() {
|
||||
return this.propsValue;
|
||||
},
|
||||
set(value) {
|
||||
// console.log('value[setValue] : ', value)
|
||||
this.$emit("update:propsValue", value);
|
||||
},
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.getTimeList();
|
||||
// console.log('created SelectBox')
|
||||
// console.log('timeList : ', this.timeList);
|
||||
// console.log('propsValue : ', this.propsValue);
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: "setPageData" }),
|
||||
...mapActions({}),
|
||||
getTimeList() {
|
||||
for (var i = 0; i < 24; i++) {
|
||||
let hour = i.toString().padStart(2, "0");
|
||||
for (var j = 0; j < 60; j++) {
|
||||
if (j % this.minInterval === 0) {
|
||||
let min = j.toString().padStart(2, "0");
|
||||
this.itemList.push({
|
||||
text: hour + " : " + min,
|
||||
value: hour + " : " + min,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
this.propsValue = this.itemList[0].value;
|
||||
},
|
||||
setDatepickerHide(e) {
|
||||
// datepicker 선택 중 시간 selectBox를 고를 경우 datepicker를 hidden 시키는 기능
|
||||
if (document.querySelector("#startpicker-container > div") != undefined) {
|
||||
let datepicker1 = document.querySelector("#startpicker-container > div");
|
||||
datepicker1.classList.add("tui-hidden");
|
||||
}
|
||||
if (document.querySelector("#endpicker-container > div") != undefined) {
|
||||
let datepicker2 = document.querySelector("#endpicker-container > div");
|
||||
datepicker2.classList.add("tui-hidden");
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// .v-select__custom {
|
||||
// .v-select__custom {
|
||||
// &.time {
|
||||
// width: calc(50%);
|
||||
// }
|
||||
|
@ -1,151 +1,170 @@
|
||||
<template>
|
||||
<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>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select
|
||||
v-model="selectValue"
|
||||
:items="searchParam[parentPrgmId].cmCycleList"
|
||||
label="주기를 선택하세요"
|
||||
item-text="text"
|
||||
item-value="value"
|
||||
solo
|
||||
outlined
|
||||
:hide-details="true"
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
></v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select
|
||||
v-model="selectValue"
|
||||
:items="searchParam[parentPrgmId].cmCycleList"
|
||||
label="주기를 선택하세요"
|
||||
item-text="text"
|
||||
item-value="value"
|
||||
solo
|
||||
outlined
|
||||
:hide-details="true"
|
||||
append-icon="mdi-chevron-down"
|
||||
:class="['v-select__custom', customClass]"
|
||||
></v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import Utility from '~/plugins/utility';
|
||||
import { mapState, mapMutations, mapActions } from "vuex";
|
||||
import Utility from "~/plugins/utility";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
pickerMode: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 8,
|
||||
},
|
||||
label:{
|
||||
type: String,
|
||||
require: false,
|
||||
default: '주기'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// label: '주기',
|
||||
labelPrepend: true,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: state => state.pageData,
|
||||
}),
|
||||
selectValue: {
|
||||
get() {
|
||||
return this.searchParam[this.parentPrgmId].cmCycle;
|
||||
},
|
||||
set(value) {
|
||||
return this.setPageData({ cmCycle: value });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
selectValue(value) {
|
||||
// 주기에 따른 오늘 기준 기본 날짜 세팅
|
||||
this.setDefaultDate(value);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.setDefaultDate(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
},
|
||||
async mounted() {},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
...mapActions({}),
|
||||
setDefaultDate(value) {
|
||||
// console.log("주기에 따른 오늘 기준 기본 날짜 세팅");
|
||||
if(this.searchParam[this.parentPrgmId].dateInitedFlag){
|
||||
return;
|
||||
}
|
||||
const today = Utility.setFormatDate('today', 'YYYYMMDD');
|
||||
let srartDate = '';
|
||||
let endDate = '';
|
||||
// console.log(value);
|
||||
switch (value) {
|
||||
case 'CYC_YEAR':
|
||||
endDate = Utility.setFormatDate(today, 'YYYY');
|
||||
srartDate = Utility.setBeforetDate(
|
||||
this.searchParam[this.parentPrgmId],
|
||||
endDate,
|
||||
'YYYY',
|
||||
);
|
||||
break;
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
pickerMode: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 8,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "주기",
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// label: '주기',
|
||||
labelPrepend: true,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: (state) => state.pageData,
|
||||
}),
|
||||
selectValue: {
|
||||
get() {
|
||||
return this.searchParam[this.parentPrgmId].cmCycle;
|
||||
},
|
||||
set(value) {
|
||||
return this.setPageData({ cmCycle: value });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
selectValue(value) {
|
||||
// 주기에 따른 오늘 기준 기본 날짜 세팅
|
||||
this.setDefaultDate(value);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.setDefaultDate(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
},
|
||||
async mounted() {},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: "setPageData" }),
|
||||
...mapActions({}),
|
||||
setDefaultDate(value) {
|
||||
// console.log("주기에 따른 오늘 기준 기본 날짜 세팅");
|
||||
if (this.searchParam[this.parentPrgmId].dateInitedFlag) {
|
||||
return;
|
||||
}
|
||||
const today = Utility.setFormatDate("today", "YYYYMMDD");
|
||||
let srartDate = "";
|
||||
let endDate = "";
|
||||
// console.log(value);
|
||||
switch (value) {
|
||||
case "CYC_YEAR":
|
||||
endDate = Utility.setFormatDate(today, "YYYY");
|
||||
srartDate = Utility.setBeforetDate(
|
||||
this.searchParam[this.parentPrgmId],
|
||||
endDate,
|
||||
"YYYY"
|
||||
);
|
||||
break;
|
||||
|
||||
case 'CYC_MONTH':
|
||||
endDate = Utility.setFormatDate(today, 'YYYYMM');
|
||||
srartDate = Utility.setBeforetDate(
|
||||
this.searchParam[this.parentPrgmId],
|
||||
endDate,
|
||||
'YYYYMM',
|
||||
);
|
||||
break;
|
||||
case "CYC_MONTH":
|
||||
endDate = Utility.setFormatDate(today, "YYYYMM");
|
||||
srartDate = Utility.setBeforetDate(
|
||||
this.searchParam[this.parentPrgmId],
|
||||
endDate,
|
||||
"YYYYMM"
|
||||
);
|
||||
break;
|
||||
|
||||
case 'CYC_DAY':
|
||||
endDate = today;
|
||||
srartDate = Utility.setBeforetDate(
|
||||
this.searchParam[this.parentPrgmId],
|
||||
endDate,
|
||||
'YYYYMMDD',
|
||||
);
|
||||
break;
|
||||
case "CYC_DAY":
|
||||
endDate = today;
|
||||
srartDate = Utility.setBeforetDate(
|
||||
this.searchParam[this.parentPrgmId],
|
||||
endDate,
|
||||
"YYYYMMDD"
|
||||
);
|
||||
break;
|
||||
|
||||
case 'CYC_HOUR':
|
||||
endDate = today;
|
||||
srartDate = today;
|
||||
break;
|
||||
case "CYC_HOUR":
|
||||
endDate = today;
|
||||
srartDate = today;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (
|
||||
this.pickerMode == undefined ||
|
||||
this.pickerMode == null ||
|
||||
this.pickerMode == ''
|
||||
) {
|
||||
this.setPageData({ fromDt: srartDate, toDt: endDate });
|
||||
} else if (this.pickerMode == 'single') {
|
||||
this.setPageData({ fromDt: endDate, toDt: srartDate });
|
||||
} else {
|
||||
this.setPageData({ fromDt: srartDate, toDt: endDate });
|
||||
}
|
||||
// console.log(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
// console.log(this.searchParam[this.parentPrgmId].dateRange);
|
||||
},
|
||||
},
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (
|
||||
this.pickerMode == undefined ||
|
||||
this.pickerMode == null ||
|
||||
this.pickerMode == ""
|
||||
) {
|
||||
this.setPageData({ fromDt: srartDate, toDt: endDate });
|
||||
} else if (this.pickerMode == "single") {
|
||||
this.setPageData({ fromDt: endDate, toDt: srartDate });
|
||||
} else {
|
||||
this.setPageData({ fromDt: srartDate, toDt: endDate });
|
||||
}
|
||||
// console.log(this.searchParam[this.parentPrgmId].cmCycle);
|
||||
// console.log(this.searchParam[this.parentPrgmId].dateRange);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -2,7 +2,9 @@
|
||||
<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 v-if="iconShow" small color="primary"
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
@ -15,7 +17,7 @@
|
||||
solo
|
||||
outlined
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
:class="['v-select__custom', customClass]"
|
||||
></v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -65,6 +67,20 @@ export default {
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
|
@ -1,118 +1,136 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon small color="primary" class="mr-1">mdi-record-circle</v-icon>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<!-- <label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow" small color="primary" class="mr-1">mdi-record-circle</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select
|
||||
v-model="selectValue"
|
||||
:items="searchParam[parentPrgmId][dataKey + 'List']"
|
||||
item-text="mttNm"
|
||||
item-value="mttCd"
|
||||
solo
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
outlined
|
||||
hide-details
|
||||
></v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</label> -->
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select
|
||||
v-model="selectValue"
|
||||
:items="searchParam[parentPrgmId][dataKey + 'List']"
|
||||
item-text="mttNm"
|
||||
item-value="mttCd"
|
||||
solo
|
||||
append-icon="mdi-chevron-down"
|
||||
:class="['v-select__custom', customClass]"
|
||||
outlined
|
||||
hide-details
|
||||
></v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import { mapState, mapMutations, mapActions } from "vuex";
|
||||
export default {
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
dataKey: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
autoLoad: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: null,
|
||||
},
|
||||
sendParam: {
|
||||
type: Object,
|
||||
require: false,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
addAll: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// label: "검침대상유형",
|
||||
// labelPrepend: true
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: state => state.pageData,
|
||||
}),
|
||||
mySendMttParam() {
|
||||
return this.searchParam[this.parentPrgmId]['sendMttParam'];
|
||||
},
|
||||
selectValue: {
|
||||
get() {
|
||||
return this.searchParam[this.parentPrgmId][this.dataKey];
|
||||
},
|
||||
set(value) {
|
||||
return this.setPageData({ [this.dataKey]: value });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
mySendMttParam() {
|
||||
this.getMttList({
|
||||
dataKey: this.dataKey,
|
||||
params: this.searchParam[this.parentPrgmId]['sendMttParam'],
|
||||
});
|
||||
// this.selectValue(this.searchParam[this.parentPrgmId].mttCdList[0].mttCd);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
if (this.searchParam[this.parentPrgmId]['sendMttParam'].mttTp!=""){
|
||||
this.getMttList({
|
||||
dataKey: this.dataKey,
|
||||
params: this.searchParam[this.parentPrgmId]['sendMttParam'],
|
||||
});
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: 'setPageData' }),
|
||||
...mapActions({
|
||||
getMttList: 'modules/search/getMttList',
|
||||
}),
|
||||
},
|
||||
props: {
|
||||
parentPrgmId: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
dataKey: {
|
||||
type: String,
|
||||
require: true,
|
||||
},
|
||||
autoLoad: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: null,
|
||||
},
|
||||
sendParam: {
|
||||
type: Object,
|
||||
require: false,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
addAll: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
textCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 7,
|
||||
},
|
||||
labelCols: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// label: "검침대상유형",
|
||||
// labelPrepend: true
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
searchParam: (state) => state.pageData,
|
||||
}),
|
||||
mySendMttParam() {
|
||||
return this.searchParam[this.parentPrgmId]["sendMttParam"];
|
||||
},
|
||||
selectValue: {
|
||||
get() {
|
||||
return this.searchParam[this.parentPrgmId][this.dataKey];
|
||||
},
|
||||
set(value) {
|
||||
return this.setPageData({ [this.dataKey]: value });
|
||||
},
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
mySendMttParam() {
|
||||
this.getMttList({
|
||||
dataKey: this.dataKey,
|
||||
params: this.searchParam[this.parentPrgmId]["sendMttParam"],
|
||||
});
|
||||
// this.selectValue(this.searchParam[this.parentPrgmId].mttCdList[0].mttCd);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
if (this.searchParam[this.parentPrgmId]["sendMttParam"].mttTp != "") {
|
||||
this.getMttList({
|
||||
dataKey: this.dataKey,
|
||||
params: this.searchParam[this.parentPrgmId]["sendMttParam"],
|
||||
});
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setPageData: "setPageData" }),
|
||||
...mapActions({
|
||||
getMttList: "modules/search/getMttList",
|
||||
}),
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -2,7 +2,12 @@
|
||||
<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
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
@ -14,9 +19,11 @@
|
||||
item-value="readObjId"
|
||||
solo
|
||||
outlined
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
></v-select>
|
||||
append-icon=""
|
||||
:class="['v-select__custom', customClass]"
|
||||
><template v-slot:append>
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
</template></v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -65,6 +72,21 @@ export default {
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: false
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: null,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
|
@ -146,5 +146,3 @@ export default {
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
|
@ -2,7 +2,12 @@
|
||||
<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
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
@ -13,9 +18,12 @@
|
||||
item-text="commCdNm"
|
||||
item-value="commCd"
|
||||
solo
|
||||
append-icon="mdi-chevron-down"
|
||||
class="v-select__custom"
|
||||
></v-select>
|
||||
outlined
|
||||
append-icon=""
|
||||
:class="['v-select__custom', customClass]"
|
||||
><template v-slot:append>
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
</template></v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -47,6 +55,16 @@ export default {
|
||||
require: false,
|
||||
default: 4,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: null,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|