Compare commits
36 Commits
dev-dungtv
...
dev-dungtv
Author | SHA1 | Date | |
---|---|---|---|
38585f7b4f | |||
b0ad70d33e | |||
3f89707a01 | |||
a4007d5697 | |||
3b6c05c70a | |||
550659475f | |||
4a7077336d | |||
ca27167d3d | |||
bf6d03df63 | |||
8cadade514 | |||
f929ad2c28 | |||
53b8b89e68 | |||
b32aa1d5bb | |||
8f7f5c598d | |||
e96d012d17 | |||
efee1098ba | |||
5735777bb1 | |||
2253ddef0a | |||
41095098e2 | |||
28fe49d39f | |||
f180f22324 | |||
a7968774c3 | |||
195c48ff25 | |||
7bca077859 | |||
6dfda50ebd | |||
df678daedf | |||
06308055ef | |||
1284d5b14f | |||
cd7a6362a5 | |||
3ae3ff8167 | |||
39cb5d2883 | |||
881a5ceb2d | |||
e4074201e4 | |||
a557130c15 | |||
34d5a1eeb7 | |||
3c249aa476 |
@ -266,7 +266,7 @@ a {
|
||||
}
|
||||
|
||||
&>.v-treeview-node__root:hover:before {
|
||||
opacity: 1 !important;
|
||||
opacity: 0 !important;
|
||||
}
|
||||
|
||||
.v-treeview-node__children {
|
||||
@ -280,13 +280,17 @@ a {
|
||||
|
||||
.v-treeview-node--click[aria-expanded="true"] {
|
||||
&>.v-treeview-node__root:before {
|
||||
opacity: 1 !important;
|
||||
opacity: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.v-treeview-node[aria-expanded="true"] {
|
||||
&>.v-treeview-node__root>.v-treeview-node__content>.v-treeview-node__label>button>.v-icon.mdi-chevron-down {
|
||||
transform: rotate(-180deg);
|
||||
&>.v-treeview-node__root>.v-treeview-node__content
|
||||
>.v-treeview-node__label>button {
|
||||
>.anticon,
|
||||
>.v-icon.mdi-chevron-down {
|
||||
transform: rotate(-180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -298,15 +302,17 @@ a {
|
||||
// justify-content: center;
|
||||
}
|
||||
|
||||
& .anticon,
|
||||
& .v-icon.mdi-chevron-down {
|
||||
margin-left: auto;
|
||||
animation-duration: 0.5s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-treeview-node--active {
|
||||
&:before {
|
||||
opacity: 1 !important;
|
||||
opacity: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@ -322,7 +328,8 @@ a {
|
||||
.v-treeview-node__content span:not(.v-icon),
|
||||
.v-treeview-node__root>button,
|
||||
.v-treeview-node__level,
|
||||
.v-treeview-node__content .v-icon.mdi-chevron-down {
|
||||
.v-treeview-node__content .v-icon.mdi-chevron-down,
|
||||
.v-treeview-node__content .anticon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@ -474,7 +481,7 @@ a {
|
||||
|
||||
.header {
|
||||
background-color: map-deep-get($config, #{$theme}, "header-backgroud");
|
||||
border-color: #D3D6EA;
|
||||
border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-header-border");
|
||||
}
|
||||
|
||||
.btn-header {
|
||||
@ -489,6 +496,7 @@ a {
|
||||
.menu-container {
|
||||
height:calc(100vh - 60px);
|
||||
overflow-y: auto;
|
||||
border-right: 1px solid map-deep-get($config, #{$theme}, "v-sidebar-border") ;
|
||||
}
|
||||
}
|
||||
|
||||
@ -603,45 +611,9 @@ a {
|
||||
}
|
||||
}
|
||||
|
||||
// .v-banner {
|
||||
// &__wrapper {
|
||||
// border-bottom-color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "v-banner-border-color"
|
||||
// ) !important;
|
||||
// }
|
||||
// }
|
||||
|
||||
.v-navigation-drawer__append {
|
||||
>p {
|
||||
@if $theme ==dark {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
}
|
||||
|
||||
@else {
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-footer {
|
||||
@if $theme ==light {
|
||||
background-color: #dfdfe5;
|
||||
color: #767d83;
|
||||
}
|
||||
}
|
||||
|
||||
.bd {
|
||||
@if $theme ==dark {
|
||||
&-r-1 {
|
||||
border-right: 1px #373f45 solid;
|
||||
}
|
||||
}
|
||||
|
||||
@else {
|
||||
&-r-1 {
|
||||
border-right: 1px #efefef solid;
|
||||
}
|
||||
color: map-deep-get($config, #{$theme}, "v-banner-border-color" ) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@ -691,182 +663,116 @@ a {
|
||||
}
|
||||
|
||||
&>.v-treeview-node {
|
||||
|
||||
.v-treeview-node--active {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-label-active-bg"
|
||||
);
|
||||
border: 1px solid map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-label-active-border"
|
||||
);
|
||||
.v-treeview-node__root {
|
||||
border-radius: 8px;
|
||||
|
||||
&:before {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-subroot-backgroundColor"
|
||||
);
|
||||
}
|
||||
|
||||
&>.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-label-active-color"
|
||||
);
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-icon-active-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&>.v-treeview-node__root {
|
||||
&:before {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-root-backgroundColor"
|
||||
);
|
||||
}
|
||||
|
||||
&>.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-root-label-color"
|
||||
);
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-root-icon-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&>.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-root-label-active-color"
|
||||
);
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-root-icon-active-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
background-color: map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color" );
|
||||
}
|
||||
}
|
||||
|
||||
&>.v-treeview-node__children {
|
||||
&>.v-treeview-node {
|
||||
|
||||
&>.v-treeview-node__root {
|
||||
&:before {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-subroot-backgroundColor"
|
||||
);
|
||||
}
|
||||
|
||||
&>.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-label-color"
|
||||
);
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-icon-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.v-treeview-node--active):hover {
|
||||
&:before {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-leaf-active-backgroundColor"
|
||||
);
|
||||
}
|
||||
|
||||
&>.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-leaf-active-color"
|
||||
);
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-leaf-active-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&>.v-treeview-node__children {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-leaf-subchildren-backgroundColor"
|
||||
);
|
||||
}
|
||||
|
||||
&[aria-expanded="true"] {
|
||||
& .v-treeview-node__root>.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-label-children-color"
|
||||
);
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-icon-active-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&[aria-expanded="true"] {
|
||||
& .v-treeview-node__root>.v-treeview-node__content {
|
||||
.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-root-label-active-color"
|
||||
);
|
||||
color: map-deep-get($config, #{$theme}, "tui-grid-title-color");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&[aria-expanded="true"]{
|
||||
|
||||
// Level 1
|
||||
&>.v-treeview-node__root {
|
||||
background-color: map-deep-get($config, #{$theme}, "v-treeview-node-label-active-bg" );
|
||||
border: 1px solid map-deep-get($config, #{$theme}, "v-treeview-node-label-active-border" );
|
||||
color: map-deep-get($config, #{$theme}, "v-treeview-node-label-active-border");
|
||||
|
||||
&:before {
|
||||
background-color: map-deep-get($config, #{$theme}, "v-treeview-node-subroot-backgroundColor");
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-treeview-node-root-icon-active-color"
|
||||
);
|
||||
.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config, #{$theme}, "v-treeview-node-label-active-border");
|
||||
}
|
||||
|
||||
.v-icon:first-child,
|
||||
.v-icon:first-child::before {
|
||||
color: map-deep-get($config, #{$theme}, "v-treeview-node-label-active-border" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&>.v-treeview-node__children {
|
||||
// Level 2
|
||||
.v-treeview-node__root {
|
||||
color: map-deep-get($config, #{$theme}, "v-treeview-node-root-label-color");
|
||||
&:hover {
|
||||
background-color: map-deep-get($config, #{$theme}, "v-calendar-weekday-backgroundColor");
|
||||
}
|
||||
}
|
||||
&>[aria-expanded="true"] >.v-treeview-node__root,
|
||||
.v-treeview-node__root.v-treeview-node--active {
|
||||
background-color: map-deep-get($config, #{$theme}, "v-calendar-day-in-not-month-color" );
|
||||
.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config, #{$theme}, "card-title-color");
|
||||
}
|
||||
|
||||
.v-icon,
|
||||
.v-icon::before,
|
||||
.anticon {
|
||||
color: map-deep-get($config, #{$theme}, "v-treeview-node-label-active-border" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Level 3
|
||||
.v-treeview-node__children {
|
||||
.v-treeview-node {
|
||||
>.v-treeview-node__root {
|
||||
.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config, #{$theme}, "card-default-color");
|
||||
}
|
||||
}
|
||||
|
||||
*:hover,
|
||||
:hover {
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
border: 1px solid map-deep-get($config, #{$theme}, "v-input-textarea-border");
|
||||
border-radius: 8px;
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config, #{$theme}, "tui-grid-title-color");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&.v-treeview-node--active {
|
||||
// color: map-deep-get($config, #{$theme}, "card-title-color");
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
.v-treeview-node__content {
|
||||
.v-treeview-node__label {
|
||||
color: map-deep-get($config, #{$theme}, "tui-grid-title-color");
|
||||
}
|
||||
|
||||
.v-icon,
|
||||
.v-icon::before,
|
||||
.anticon {
|
||||
color: map-deep-get($config, #{$theme}, "v-treeview-node-label-active-border" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1210,26 +1116,47 @@ a {
|
||||
}
|
||||
|
||||
.v-list {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-datepicker-backgroundColor"
|
||||
);
|
||||
border: 1px solid map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
||||
border-radius: 4px;
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-datepicker-backgroundColor"
|
||||
);
|
||||
border: 1px solid map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
||||
border-radius: 4px;
|
||||
padding: 4px;
|
||||
|
||||
&-item--active {
|
||||
border-radius: 4px;
|
||||
&:before {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.v-list-item__title {
|
||||
color: map-deep-get($config, #{$theme}, "tui-datepicker-calendar-color");
|
||||
}
|
||||
}
|
||||
|
||||
&.v-select-list{
|
||||
>.v-list-item {
|
||||
margin-bottom: 4px;
|
||||
.anticon {
|
||||
&.anticon-check {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
&[aria-selected="true"] {
|
||||
border-radius: 8px;
|
||||
background-color: map-deep-get($config, #{$theme}, "v-treeview-node-label-active-bg");
|
||||
.anticon {
|
||||
&.anticon-check {
|
||||
display: block;
|
||||
color: map-deep-get($config, #{$theme}, "v-icon-blue");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-item--active {
|
||||
&:before {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.v-list-item__title {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-datepicker-calendar-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.theme--white {
|
||||
.toastui-editor-contents {
|
||||
@ -1347,11 +1274,6 @@ a {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -92,24 +92,23 @@
|
||||
background: map-deep-get($config, #{$theme}, "basic-button-background");
|
||||
}
|
||||
|
||||
.searchFilter{
|
||||
.searchFilter {
|
||||
.search-button {
|
||||
height: 40px;
|
||||
color: map-deep-get($config, #{$theme}, "search-btn-color");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.v-dialog {
|
||||
.ant-btn-icon-only {
|
||||
color: map-deep-get(
|
||||
$config,
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"icon-color"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
.ant-btn {
|
||||
.ant-btn {
|
||||
|
||||
&.ant-btn-outlined {
|
||||
color:map-deep-get($config, #{$theme}, "ant-btn-default-color");
|
||||
@ -121,7 +120,8 @@
|
||||
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-background-ghost{
|
||||
|
||||
&.ant-btn-background-ghost {
|
||||
color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
|
||||
}
|
||||
}
|
||||
@ -142,6 +142,7 @@
|
||||
&.expand-btn {
|
||||
.v-icon {
|
||||
color: map-deep-get($config, #{$theme}, "basic-button-color");
|
||||
|
||||
svg {
|
||||
fill: map-deep-get($config, #{$theme}, "basic-button-color");
|
||||
}
|
||||
@ -152,15 +153,17 @@
|
||||
}
|
||||
|
||||
.v-application {
|
||||
.ant-btn {
|
||||
.ant-btn {
|
||||
border-radius: 6px;
|
||||
|
||||
&.ant-btn-lg {
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
&.ant-btn-default {
|
||||
border:none !important
|
||||
border: none !important
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -171,15 +174,16 @@
|
||||
border: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background:none;
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
.ant-btn {
|
||||
|
||||
.ant-btn {
|
||||
&.expand-btn {
|
||||
.v-icon {
|
||||
span {
|
||||
span {
|
||||
&.v-icon {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -17,18 +17,6 @@
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
// &-body-container {
|
||||
// width: 100% !important;
|
||||
// }
|
||||
|
||||
// &-table {
|
||||
// width: 100% !important;
|
||||
// }
|
||||
|
||||
// &-lside-area .tui-grid-body-area {
|
||||
// margin-right: -11px;
|
||||
// }
|
||||
|
||||
&-lside-area .tui-grid-scrollbar-left-bottom {
|
||||
display: none;
|
||||
}
|
||||
@ -98,6 +86,12 @@
|
||||
@include theme($theme);
|
||||
|
||||
.v-application.#{$theme}-mode {
|
||||
.tui-grid-content-area{
|
||||
.tui-grid-header-area{
|
||||
height: auto !important;
|
||||
}
|
||||
}
|
||||
|
||||
.grid-title {
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
@ -109,6 +103,15 @@
|
||||
);
|
||||
}
|
||||
|
||||
.grid-toggle-section{
|
||||
.tui-grid-rside-area{
|
||||
.tui-grid-body-area {
|
||||
height: auto !important;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid {
|
||||
&-table {
|
||||
border: 1px solid;
|
||||
@ -135,48 +138,28 @@
|
||||
|
||||
&-body-container{
|
||||
border-right: 0;
|
||||
// border-right-color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "tui-grid-cell-borderColor"
|
||||
// );
|
||||
// position: relative;
|
||||
width: auto !important;
|
||||
|
||||
.tui-grid-table-container{
|
||||
// width: 100% !important;
|
||||
.tui-grid-table {
|
||||
// width: 100% !important;
|
||||
// table-layout: fixed;
|
||||
// th, td {
|
||||
// &:last-child{
|
||||
// width: auto !important;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-container,
|
||||
&-summary-area {
|
||||
&-summary-area,
|
||||
&-container {
|
||||
font-family: Inter;
|
||||
// color: #000000E0;
|
||||
|
||||
& ::-webkit-scrollbar {
|
||||
width: $scrollbar-width !important;
|
||||
height: $scrollbar-width !important;
|
||||
-webkit-appearance: initial;
|
||||
// background-color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "tui-grid-cell-borderColor"
|
||||
// ) !important;
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
border-radius: 3px !important;
|
||||
}
|
||||
|
||||
& ::-webkit-scrollbar-track {
|
||||
// background-color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "tui-grid-cell-borderColor"
|
||||
// ) !important;
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
}
|
||||
|
||||
& ::-webkit-scrollbar-thumb {
|
||||
width: 50px !important;
|
||||
height: 50px !important;
|
||||
background-color: map-deep-get($config, #{$theme}, "scrollbar-thumb");
|
||||
// background-color: rgba(0, 0, 0, 0);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.tui-grid-cell {
|
||||
|
||||
&.tui-grid-cell-summary {
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
@ -186,6 +169,32 @@
|
||||
}
|
||||
}
|
||||
|
||||
&-body-area {
|
||||
overflow: auto;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: $scrollbar-width !important;
|
||||
height: $scrollbar-width !important;
|
||||
-webkit-appearance: initial;
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
border-radius: 3px !important;
|
||||
// border-right: 1px solid;
|
||||
// border-right-color: map-deep-get($config, #{$theme}, "tui-grid-cell-borderColor");
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-track {
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
height: 50px !important;
|
||||
background-color: map-deep-get($config, #{$theme}, "scrollbar-thumb");
|
||||
border-radius: 3px;
|
||||
// width: 50px !important;
|
||||
// background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
&-rside-area {
|
||||
background-color: map-deep-get($config, #{$theme}, "scrollbar-track");
|
||||
}
|
||||
@ -224,13 +233,13 @@
|
||||
&-scrollbar-right-bottom {
|
||||
width: $scrollbar-width !important;
|
||||
height: $scrollbar-width !important;
|
||||
// display: none !important;
|
||||
border-color: map-deep-get($config, #{$theme}, "cardBackground");
|
||||
background-color: map-deep-get($config, #{$theme}, "cardBackground");
|
||||
box-sizing: border-box;
|
||||
// display: none !important;
|
||||
// border: none !important;
|
||||
// bottom: -1px;
|
||||
// right: -2px;
|
||||
box-sizing: border-box;
|
||||
// display: none;
|
||||
}
|
||||
|
||||
@ -299,13 +308,13 @@
|
||||
#{$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"
|
||||
);
|
||||
}
|
||||
// .tui-grid-cell-content {
|
||||
// border-right: 1px solid ;
|
||||
// border-right-color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "tui-grid-cell-borderColor"
|
||||
// );
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@ -341,6 +350,10 @@
|
||||
#{$theme},
|
||||
"tui-grid-cell-backgroundColor"
|
||||
);
|
||||
// width: 100% !important;
|
||||
// .tui-grid-table {
|
||||
// width: 100% !important;
|
||||
// }
|
||||
}
|
||||
|
||||
&-row-odd,
|
||||
@ -470,6 +483,7 @@
|
||||
}
|
||||
|
||||
&-tree-button-expand {
|
||||
z-index: 9999;
|
||||
.tui-grid-btn-tree {
|
||||
i {
|
||||
width: 16px;
|
||||
@ -488,6 +502,7 @@
|
||||
}
|
||||
|
||||
&-tree-button-collapse {
|
||||
z-index: 9999;
|
||||
.tui-grid-btn-tree {
|
||||
i {
|
||||
width: 16px;
|
||||
|
@ -1,6 +1,6 @@
|
||||
.v-select__custom {
|
||||
padding: 0.125rem;
|
||||
|
||||
|
||||
&.v-text-field.v-text-field--solo:not(.v-text-field--solo-flat)>.v-input__control>.v-input__slot {
|
||||
box-shadow: none;
|
||||
}
|
||||
@ -175,11 +175,13 @@
|
||||
margin: 5px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.custom-radio input[type="radio"] {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Custom radio appearance */
|
||||
.radio-mark {
|
||||
position: absolute;
|
||||
@ -222,11 +224,31 @@
|
||||
color: #424242 !important;
|
||||
}
|
||||
|
||||
.ant-checkbox {
|
||||
.ant-checkbox-inner {
|
||||
border-radius: 4px
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@each $theme in dark, light {
|
||||
@include theme($theme);
|
||||
|
||||
.v-application.#{$theme}-mode {
|
||||
|
||||
.ant-checkbox-wrapper {
|
||||
.ant-checkbox-checked {
|
||||
.ant-checkbox-inner {
|
||||
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-checkbox-inner::after {
|
||||
border-color: map-deep-get($config, #{$theme}, "ant-btn-primary-color");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-input-popup__custom {
|
||||
.v-input__slot {
|
||||
padding-left: 12px;
|
||||
@ -239,17 +261,18 @@
|
||||
}
|
||||
|
||||
.v-textarea {
|
||||
.v-input__slot{
|
||||
.v-input__slot {
|
||||
border: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-textarea-border"
|
||||
);
|
||||
#{$theme},
|
||||
"v-input-textarea-border"
|
||||
);
|
||||
|
||||
fieldset {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-input-textarea-bg"
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -404,6 +427,12 @@
|
||||
|
||||
.v-input--checkbox {
|
||||
.v-icon {
|
||||
transform: none;
|
||||
|
||||
&.mdi:before {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
@if $theme ==dark {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
}
|
||||
@ -414,6 +443,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.v-textarea {
|
||||
textarea {
|
||||
padding: 10px;
|
||||
|
@ -15,8 +15,9 @@
|
||||
border-radius: 6px;
|
||||
border: solid 1px;
|
||||
height: 32px;
|
||||
// border-color: #424242;
|
||||
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
||||
color: map-deep-get($config, #{$theme}, "v-input-fieldset-color") !important;
|
||||
border-color: currentColor;
|
||||
// border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
||||
|
||||
&.datepicker-large {
|
||||
height: 40px;
|
||||
|
@ -110,7 +110,7 @@ $config: (
|
||||
tui-grid-border-horziontal-color: #212224,
|
||||
tui-grid-border-vertical-color: #FFFFFF0F,
|
||||
tui-grid-cell-backgroundColor: #212224,
|
||||
tui-grid-cell-color: #fff,
|
||||
tui-grid-cell-color: #FFFFFFA6,
|
||||
tui-grid-cell-insert-color: #13636c,
|
||||
tui-grid-cell-selected-color: #0A224F,
|
||||
tui-grid-cell-modify-color: #13636c,
|
||||
@ -174,6 +174,8 @@ $config: (
|
||||
btn-header-select-bg: #1F1F1F,
|
||||
btn-header-select-color:#FFFFFFD9,
|
||||
subtitle-tab: #FFFFFFA6,
|
||||
v-header-border: #424242,
|
||||
v-sidebar-border: #303030,
|
||||
),
|
||||
light: (w-g5: $--color-gray_555,
|
||||
g5-w: $--color-white,
|
||||
@ -209,7 +211,6 @@ $config: (
|
||||
router-tab-item-hover-color: #1677ff,
|
||||
router-tab-slot-end-button-backgroundColor: #3f4d7d,
|
||||
v-btn-backgroundColor: #1677ff,
|
||||
// v-btn-backgroundColor: #fff,
|
||||
v-box: #FFFFFF,
|
||||
v-banner-border-color: #ddd,
|
||||
v-treeview-node-root-backgroundColor: #FFFFFF,
|
||||
@ -251,10 +252,10 @@ $config: (
|
||||
tui-grid-border-vertical-color: rgba(0, 0, 0, 0.06), //#d4d4d4,
|
||||
tui-grid-cell-backgroundColor: #fff,
|
||||
tui-grid-cell-color: #000000E0,
|
||||
tui-grid-cell-insert-color: #13636c,
|
||||
tui-grid-cell-insert-color: #FFFBE6,
|
||||
tui-grid-cell-selected-color: #E6F4FF,
|
||||
tui-grid-cell-modify-color: #e6f5f7,
|
||||
tui-grid-cell-removed-color: #fddde1,
|
||||
tui-grid-cell-removed-color: #FFF1F0,
|
||||
tui-grid-cell-hover-backgroundColor: #f5f5f5,
|
||||
v-tabs-items-border-color: #0000000F,
|
||||
v-tabs-backgroundColor: #ddd,
|
||||
@ -312,5 +313,7 @@ $config: (
|
||||
btn-header-select-color:#1F1F1F,
|
||||
btn-header-select-bg:#FFFFFF,
|
||||
subtitle-tab: #000000A6,
|
||||
v-header-border: #D9D9D9,
|
||||
v-sidebar-border: #F0F0F0,
|
||||
),
|
||||
);
|
@ -2,26 +2,17 @@
|
||||
<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
|
||||
>
|
||||
<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' : '#1890ff'"
|
||||
@change="modifyValue"
|
||||
></v-checkbox>
|
||||
|
||||
<a-checkbox v-model="chkValue" :disabled="disabledFlag" :readonly="readonly || false"
|
||||
:required="required || false" @change="modifyValue">
|
||||
</a-checkbox>
|
||||
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -68,10 +59,10 @@ export default {
|
||||
default: 7,
|
||||
},
|
||||
iconShow: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -103,7 +94,8 @@ export default {
|
||||
methods: {
|
||||
...mapMutations({ setPageData: "setPageData" }),
|
||||
modifyValue(e) {
|
||||
return this.setPageData({ [this.valueNm]: e });
|
||||
const isChecked = e.target.checked;
|
||||
return this.setPageData({ [this.valueNm]: isChecked });
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -52,6 +52,7 @@
|
||||
selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
|
||||
"
|
||||
@update:propsValue="selectTimeValue1 = $event"
|
||||
customClass="select-large"
|
||||
/>
|
||||
<!-- <div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">~</div> -->
|
||||
|
||||
@ -99,6 +100,7 @@
|
||||
selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
|
||||
"
|
||||
@update:propsValue="selectTimeValue2 = $event"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</div>
|
||||
</v-col>
|
||||
|
@ -617,6 +617,7 @@ export default {
|
||||
list.map(item => this.gridInstance.invoke('check', item));
|
||||
},
|
||||
refreshLayout() {
|
||||
// console.log("---------DEBUG---refreshLayout: ");
|
||||
this.gridInstance.invoke('refreshLayout');
|
||||
},
|
||||
refreshGrid(){
|
||||
@ -625,54 +626,52 @@ export default {
|
||||
var containerEl = this.$refs['tuigrid' + this.gridName].$el;
|
||||
// var containerEl = document.querySelector('.tui-grid-container')
|
||||
var parentEl = containerEl.parentElement;
|
||||
|
||||
|
||||
|
||||
// console.log("containerEl : ",containerEl);
|
||||
// console.log('parentEl : ', parentEl)
|
||||
// function refreshLayout(store, containerEl, parentEl) {
|
||||
var dimension = store.dimension;
|
||||
var autoWidth = dimension.autoWidth, fitToParentHeight = dimension.fitToParentHeight;
|
||||
var clientHeight = containerEl.clientHeight, clientWidth = containerEl.clientWidth, scrollTop = containerEl.scrollTop, scrollLeft = containerEl.scrollLeft;
|
||||
var _a = containerEl.getBoundingClientRect(), top = _a.top, left = _a.left;
|
||||
this.setOffsetTop(store, top + scrollTop);
|
||||
// store.dimension.setOffsetTop = top + scrollTop;
|
||||
this.setOffsetLeft(store, left + scrollLeft);
|
||||
// store.dimension.headerHeight = left + scrollLeft;
|
||||
this.setWidth(store, clientWidth, autoWidth);
|
||||
// store.dimension.autoWidth = autoWidth;
|
||||
// store.dimension.width = clientWidth;
|
||||
// console.log("###",getComputedStyle(parentEl));
|
||||
// console.log("fitToParentHeight : ",fitToParentHeight);
|
||||
// console.log("parentEl : ",parentEl)
|
||||
// console.log("parentEl.clientHeight" , parentEl.clientHeight)
|
||||
// console.log("clientHeight : ",clientHeight);
|
||||
if (parentEl && parentEl.clientHeight !== clientHeight) {
|
||||
var _b = getComputedStyle(parentEl), paddingTop = _b.paddingTop, paddingBottom = _b.paddingBottom;
|
||||
this.setHeight(store, parentEl.clientHeight - (parseFloat(paddingTop) + parseFloat(paddingBottom)));
|
||||
}
|
||||
|
||||
// console.log("---------DEBUG---containerEl: ",containerEl);
|
||||
// console.log('---------DEBUG---parentEl: ', parentEl)
|
||||
// function refreshLayout(store, containerEl, parentEl) {
|
||||
var dimension = store.dimension;
|
||||
var autoWidth = dimension.autoWidth, fitToParentHeight = dimension.fitToParentHeight;
|
||||
var clientHeight = containerEl.clientHeight, clientWidth = containerEl.clientWidth, scrollTop = containerEl.scrollTop, scrollLeft = containerEl.scrollLeft;
|
||||
var _a = containerEl.getBoundingClientRect(), top = _a.top, left = _a.left;
|
||||
this.setOffsetTop(store, top + scrollTop);
|
||||
// store.dimension.setOffsetTop = top + scrollTop;
|
||||
this.setOffsetLeft(store, left + scrollLeft);
|
||||
// store.dimension.headerHeight = left + scrollLeft;
|
||||
this.setWidth(store, clientWidth, autoWidth);
|
||||
// store.dimension.autoWidth = autoWidth;
|
||||
// store.dimension.width = clientWidth;
|
||||
// console.log("###",getComputedStyle(parentEl));
|
||||
// console.log("fitToParentHeight : ",fitToParentHeight);
|
||||
// console.log("parentEl : ",parentEl)
|
||||
// console.log("parentEl.clientHeight" , parentEl.clientHeight)
|
||||
// console.log("clientHeight : ",clientHeight);
|
||||
if (parentEl && parentEl.clientHeight !== clientHeight) {
|
||||
var _b = getComputedStyle(parentEl), paddingTop = _b.paddingTop, paddingBottom = _b.paddingBottom;
|
||||
this.setHeight(store, parentEl.clientHeight - (parseFloat(paddingTop) + parseFloat(paddingBottom)));
|
||||
}
|
||||
// }
|
||||
},
|
||||
setOffsetTop(store, offsetTop) {
|
||||
// console.log("setOffsetTop");
|
||||
// console.log("---------DEBUG---setOffsetTop: ");
|
||||
store.dimension.offsetTop = offsetTop;
|
||||
},
|
||||
setWidth(_a, width, autoWidth) {
|
||||
// console.log("setWidth");
|
||||
// console.log("---------DEBUG---setWidth: ");
|
||||
var dimension = _a.dimension;
|
||||
dimension.autoWidth = autoWidth;
|
||||
dimension.width = width;
|
||||
},
|
||||
setHeaderHeight(store, height) {
|
||||
// console.log("setHeaderHeight")
|
||||
// console.log("---------DEBUG---setHeaderHeight: ");
|
||||
store.dimension.headerHeight = height;
|
||||
},
|
||||
setOffsetLeft(store, offsetLeft) {
|
||||
// console.log("setOffsetLeft")
|
||||
// console.log("---------DEBUG---setOffsetLeft: ");
|
||||
store.dimension.offsetLeft = offsetLeft;
|
||||
},
|
||||
setHeight(_a,height){
|
||||
// console.log("setHeight");
|
||||
// console.log("---------DEBUG---setHeight: ");
|
||||
var dimension = _a.dimension;
|
||||
var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth;
|
||||
dimension.bodyHeight = height - headerHeight - summaryHeight - tableBorderWidth;
|
||||
@ -703,10 +702,11 @@ export default {
|
||||
// resetData() {
|
||||
// // console.log("resetData = ", this.tuigridProps.data);
|
||||
// this.$refs.tuigrid.invoke("resetData", this.tuigridProps.data);
|
||||
// }
|
||||
// },
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
::v-deep .tui-grid-container {
|
||||
.tui-grid-content-area {
|
||||
|
@ -9,7 +9,7 @@
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<div class="datepicker-container">
|
||||
<div :class="['datepicker-container', customClass]" >
|
||||
<v-text-field
|
||||
id="startpicker"
|
||||
ref="startpicker"
|
||||
@ -79,6 +79,10 @@ export default {
|
||||
require: false,
|
||||
default: 8,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -1,21 +1,10 @@
|
||||
<template>
|
||||
<div class="d-flex flex-column justify-center align-center">
|
||||
<!--<v-btn icon tile :ripple="false" @click="btnActionsFnc('addLeftToRight')">
|
||||
<v-icon>mdi-chevron-right</v-icon>
|
||||
</v-btn> -->
|
||||
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost icon="right" >
|
||||
<div class="d-flex justify-center align-center"
|
||||
:class="directionBtn === 'vertically'?'flex-row':'flex-column'"
|
||||
style="gap: 12px">
|
||||
<a-button @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost :icon="icons.remove" >
|
||||
</a-button>
|
||||
|
||||
<!--<v-btn
|
||||
icon
|
||||
tile
|
||||
:ripple="false"
|
||||
class="mt-2"
|
||||
@click="btnActionsFnc('removeRightToLeft')"
|
||||
>
|
||||
<v-icon>mdi-chevron-left</v-icon>
|
||||
</v-btn> -->
|
||||
<a-button class="mt-2" @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost icon="left">
|
||||
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost :icon="icons.add">
|
||||
</a-button>
|
||||
</div>
|
||||
</template>
|
||||
@ -38,8 +27,18 @@ export default {
|
||||
type: Function,
|
||||
required: true,
|
||||
},
|
||||
directionBtn: {
|
||||
type: String,
|
||||
default: "horizontally" //horizontally, vertically.
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
icons() {
|
||||
return this.directionBtn === "vertically"
|
||||
? { remove: "up", add: "down" }
|
||||
: { remove: "left", add: "right" };
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
|
@ -45,7 +45,7 @@ export default {
|
||||
size: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "default", // small, middle, large
|
||||
default: "default", // small, default, large
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
@ -17,7 +17,9 @@
|
||||
:item-text="typeof item.list != 'string' ? 'text' : item.itemText"
|
||||
: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="">
|
||||
:required="item.required || false" @change="modifyValue($event, item.valueNm)" append-icon=""
|
||||
:menu-props="{ top: false, offsetY: true }"
|
||||
>
|
||||
|
||||
<template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
|
@ -44,8 +44,7 @@
|
||||
<v-card-title>
|
||||
<span class="custom-title-4">비밀번호 {{ isPassword }}</span>
|
||||
</v-card-title>
|
||||
<v-divider></v-divider>
|
||||
<v-card-text>
|
||||
<v-card-text class="pb-4">
|
||||
<v-col>
|
||||
<label for="" class="search-box-label">
|
||||
{{ isPassword }}할 비밀번호를 입력하세요
|
||||
@ -73,11 +72,10 @@
|
||||
></v-text-field>
|
||||
</v-col>
|
||||
</v-card-text>
|
||||
<v-divider></v-divider>
|
||||
<v-card-actions>
|
||||
<v-card-actions class="pb-4">
|
||||
<v-spacer></v-spacer>
|
||||
<!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> -->
|
||||
<div>
|
||||
<div class="pr-3">
|
||||
<a-button @click="close()" class="btn-default">삭제</a-button>
|
||||
<a-button type="primary" @click="setUpdate()" class="v-btn-add-text">
|
||||
확인
|
||||
|
@ -58,7 +58,7 @@
|
||||
<div class="pa-5">
|
||||
<!-- <v-text-field label="위치정보 선택"></v-text-field> -->
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="label ? 3 : ''">
|
||||
<v-col :cols="label ? 3 : ''" class="pr-3" >
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@ -66,41 +66,66 @@
|
||||
dataKey="searchElecContKind"
|
||||
:sendParam="{ commGrpCd: 'EM_CONT', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="label ? 3 : ''">
|
||||
<v-col :cols="label ? 3 : ''" class="pr-3" >
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:label="'전압구분'"
|
||||
dataKey="searchVoltKind"
|
||||
:sendParam="{ commGrpCd: 'EM_VOLT_KIND', useFg: '1' }"
|
||||
:customClass="'select-large'"
|
||||
:addAll="true"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="label ? 3 : ''">
|
||||
<v-col :cols="label ? 3 : ''" class="pr-3" >
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:label="'전압구분'"
|
||||
dataKey="searchOptKind"
|
||||
:sendParam="{ commGrpCd: 'EM_VOLT_OPT', useFg: '1' }"
|
||||
:customClass="'select-large'"
|
||||
:addAll="true"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col cols="3" class="text-right">
|
||||
<v-btn
|
||||
<div style="height: 25px"></div>
|
||||
<!-- <v-btn
|
||||
v-if="!searchParam.isMulti"
|
||||
:ripple="false"
|
||||
@click="search()"
|
||||
>검색</v-btn
|
||||
> -->
|
||||
<a-button
|
||||
v-if="!searchParam.isMulti"
|
||||
type="primary"
|
||||
class="mr-1"
|
||||
icon="search"
|
||||
:ripple="false"
|
||||
@click="search"
|
||||
style="height: 40px"
|
||||
>
|
||||
<v-btn
|
||||
검색
|
||||
</a-button>
|
||||
<!-- <v-btn
|
||||
v-if="!searchParam.isMulti"
|
||||
:ripple="false"
|
||||
@click="initVal()"
|
||||
>초기화</v-btn
|
||||
> -->
|
||||
<a-button
|
||||
v-if="!searchParam.isMulti"
|
||||
type="primary"
|
||||
class="mr-1"
|
||||
:ripple="false"
|
||||
@click="initVal"
|
||||
style="height: 40px"
|
||||
>
|
||||
초기화
|
||||
</a-button>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
@ -310,7 +335,11 @@ export default {
|
||||
},
|
||||
// 공정/설비 트리 그리드 세팅
|
||||
gridInit() {
|
||||
const myOptions = {};
|
||||
const myOptions = {
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
};
|
||||
this.setModalGridOption({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridName,
|
||||
@ -606,11 +635,11 @@ const myColumns = [
|
||||
{ header: '전력계약 ID', name: 'eleclContId', hidden: true},
|
||||
{ header: '전력계약 명', name: 'eleclContNm', hidden: true},
|
||||
{ header: '전력계약구분CD', name: 'elecContKind', hidden: true},
|
||||
{ header: '전력계약구분', name: 'elecContKindNm', align: 'center'},
|
||||
{ header: '전력계약구분', name: 'elecContKindNm', align: 'left'},
|
||||
{ header: '전압구분CD', name: 'voltKind', hidden: true },
|
||||
{ header: '전압구분', name: 'voltKindNm', align: 'center' },
|
||||
{ header: '전압구분', name: 'voltKindNm', align: 'left' },
|
||||
{ header: '옵션CD', name: 'optKind', hidden: true },
|
||||
{ header: '옵션', name: 'optKindNm', align: 'center' },
|
||||
{ header: '옵션', name: 'optKindNm', align: 'left' },
|
||||
{
|
||||
header: '기본요금(원/kW)',
|
||||
name: 'baseChrg',
|
||||
@ -620,7 +649,7 @@ const myColumns = [
|
||||
},
|
||||
},
|
||||
{ header: '시간대CD', name: 'peakKind', hidden: true },
|
||||
{ header: '시간대', name: 'peakKindNm', align: 'center' },
|
||||
{ header: '시간대', name: 'peakKindNm', align: 'left' },
|
||||
{
|
||||
header: '여름철(6~8월)',
|
||||
name: 'unitPrcSum',
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<v-col v-if="label" :cols="labelCols" class="mr-2">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow" small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
@ -8,62 +8,70 @@
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="textCols">
|
||||
<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>
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
:class="['v-input__custom', customClass]"
|
||||
@click="dialogOpenCloseEvent(dialog)"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:required="required || false"
|
||||
:disabled="disabled || false"
|
||||
:placeholder="placeholder"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
</template></v-text-field>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-dialog ref="popModal" v-model="dialog" width="800" overlay-color="#000" overlay-opacity="0.8" scrollable>
|
||||
<v-card style="height: 100%">
|
||||
<v-dialog ref="popModal" v-model="dialog" width="800" scrollable>
|
||||
<v-card style="height: 90vh;">
|
||||
<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>
|
||||
<!-- <v-card class="searchFilter">
|
||||
</v-card> -->
|
||||
<v-row align="end" class="searchFilter">
|
||||
<v-col>
|
||||
<!-- 설비그룹 -->
|
||||
<component :is="'SelectBox'" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||
:label="'설비그룹'" :disabled="eqpmGrpDisabled"
|
||||
@update:propsValue="selectValue01 = $event" :labelCols="12" :textCols="12"
|
||||
:iconShow="true" />
|
||||
</v-col>
|
||||
<v-col>
|
||||
<!-- 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 >
|
||||
<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>
|
||||
</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>
|
||||
</v-col>
|
||||
<a-button icon="search" type="primary" @click="search()" class="mb-1 mr-2">조회</a-button>
|
||||
</v-row>
|
||||
|
||||
<!-- <v-row align="center" no-gutters style="margin-top: 14px;">
|
||||
<v-col :cols="1">
|
||||
@ -77,14 +85,20 @@
|
||||
:hide-details="true" v-model="searchWord" @keyup.enter="search"></v-text-field>
|
||||
</v-col>
|
||||
</v-row> -->
|
||||
<!-- <v-row>
|
||||
<v-col :col="12">
|
||||
</v-col>
|
||||
</v-row> -->
|
||||
</div>
|
||||
<div class="px-5" style="height:429px;">
|
||||
<div ref="modalGridParent" class="w100 h100">
|
||||
|
||||
<v-card-text class="px-2 w100">
|
||||
<div ref="modalGridParent" style="height: 450px;" class="h100 w100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null"
|
||||
:dataPath="searchParam.eqpmSelectPopData.eqpmSelectPop" :gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId" @getRowsData="getRowData" />
|
||||
</div>
|
||||
</div>
|
||||
</v-card-text>
|
||||
|
||||
<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>
|
||||
@ -117,6 +131,11 @@ export default {
|
||||
require: false,
|
||||
default: '전력 계약 정보',
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: '',
|
||||
},
|
||||
valueNm: {
|
||||
type: String,
|
||||
require: false,
|
||||
|
@ -273,9 +273,9 @@ export default {
|
||||
});
|
||||
},
|
||||
async created() {
|
||||
// await this.setSelectValueList01();
|
||||
// await this.setSelectValueList02();
|
||||
// await this.setSelectValueList03();
|
||||
await this.setSelectValueList01();
|
||||
await this.setSelectValueList02();
|
||||
await this.setSelectValueList03();
|
||||
this.init();
|
||||
// if(this.searchParam.isMulti == true){
|
||||
// this.setPageData({
|
||||
@ -487,40 +487,40 @@ export default {
|
||||
eqpmId: this.selectValue03,
|
||||
searchWord: this.searchWord,
|
||||
};
|
||||
let res = [
|
||||
{
|
||||
eqpmGrpNm: "냉각 시스템",
|
||||
eqpmGrpId: "GRP001",
|
||||
eqpmId: "EQ001",
|
||||
eqpmNm: "냉각기 A",
|
||||
tagId: "TAG001-001",
|
||||
tagNm: "냉각 온도 센서",
|
||||
rowStat: "I",
|
||||
},
|
||||
{
|
||||
eqpmGrpNm: "전력 시스템",
|
||||
eqpmGrpId: "GRP002",
|
||||
eqpmId: "EQ002",
|
||||
eqpmNm: "변압기 B",
|
||||
tagId: "TAG002-002",
|
||||
tagNm: "전류 센서",
|
||||
rowStat: "U",
|
||||
},
|
||||
{
|
||||
eqpmGrpNm: "공기압 시스템",
|
||||
eqpmGrpId: "GRP003",
|
||||
eqpmId: "EQ003",
|
||||
eqpmNm: "압축기 C",
|
||||
tagId: "TAG003-003",
|
||||
tagNm: "압력 센서",
|
||||
rowStat: "D",
|
||||
},
|
||||
];
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: "selectTagAndEqpmList",
|
||||
// resKey: "tagTrndDatas",
|
||||
// sendParam: searchParam,
|
||||
// });
|
||||
// let res = [
|
||||
// {
|
||||
// eqpmGrpNm: "냉각 시스템",
|
||||
// eqpmGrpId: "GRP001",
|
||||
// eqpmId: "EQ001",
|
||||
// eqpmNm: "냉각기 A",
|
||||
// tagId: "TAG001-001",
|
||||
// tagNm: "냉각 온도 센서",
|
||||
// rowStat: "I",
|
||||
// },
|
||||
// {
|
||||
// eqpmGrpNm: "전력 시스템",
|
||||
// eqpmGrpId: "GRP002",
|
||||
// eqpmId: "EQ002",
|
||||
// eqpmNm: "변압기 B",
|
||||
// tagId: "TAG002-002",
|
||||
// tagNm: "전류 센서",
|
||||
// rowStat: "U",
|
||||
// },
|
||||
// {
|
||||
// eqpmGrpNm: "공기압 시스템",
|
||||
// eqpmGrpId: "GRP003",
|
||||
// eqpmId: "EQ003",
|
||||
// eqpmNm: "압축기 C",
|
||||
// tagId: "TAG003-003",
|
||||
// tagNm: "압력 센서",
|
||||
// rowStat: "D",
|
||||
// },
|
||||
// ];
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: "selectTagAndEqpmList",
|
||||
resKey: "tagTrndDatas",
|
||||
sendParam: searchParam,
|
||||
});
|
||||
let newRes = [];
|
||||
if (this.searchParam["tagList"].length > 0) {
|
||||
newRes = res.filter((item) => {
|
||||
|
@ -9,7 +9,9 @@
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select v-model="selectValue" :items="searchParam[parentPrgmId].blocMstrList"
|
||||
item-text="blocNm" item-value="idx" append-icon="" outlined
|
||||
:hide-details="true" :class="['v-select__custom', customClass]">
|
||||
:hide-details="true" :class="['v-select__custom', customClass]"
|
||||
:menu-props="{ top: false, offsetY: true }"
|
||||
>
|
||||
<template v-slot:append><v-icon>$icoChevronDown</v-icon></template>
|
||||
</v-select>
|
||||
</v-col>
|
||||
|
@ -14,12 +14,14 @@
|
||||
<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="" :class="['v-select__custom', customClass]" :disabled="disabled"
|
||||
:readonly="readonly"><template v-slot:append>
|
||||
:readonly="readonly"
|
||||
:menu-props="{ top: false, offsetY: true }"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
|
||||
|
||||
</template></v-select>
|
||||
</template>
|
||||
</v-select>
|
||||
<!-- @change="updateBlocCode($event)" -->
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -24,9 +24,24 @@
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
append-icon=""
|
||||
><template v-slot:append>
|
||||
:menu-props="{ top: false, offsetY: true }"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
</template></v-select>
|
||||
</template>
|
||||
|
||||
<template v-slot:item="{item, attrs, on, props}">
|
||||
<v-list-item v-bind="attrs" v-on="on" >
|
||||
<v-list-item-content>
|
||||
<v-list-item-title class="d-flex justify-space-between">
|
||||
{{item.text}}
|
||||
<a-icon type="check" ></a-icon>
|
||||
</v-list-item-title>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</template>
|
||||
|
||||
</v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
@ -125,4 +140,4 @@ export default {
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
<style scoped lang="scss"></style>
|
||||
|
@ -22,7 +22,7 @@
|
||||
outlined
|
||||
:menu-props="{ auto: true, offsetY: true }"
|
||||
:hide-details="true"
|
||||
:class="'v-select__custom'"
|
||||
:class="['v-select__custom', customClass]"
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
@click="setDatepickerHide"
|
||||
@ -106,6 +106,10 @@ export default {
|
||||
require: false,
|
||||
default: 1,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
emits: ["update:propsValue"],
|
||||
data() {
|
||||
|
@ -11,7 +11,9 @@
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select v-model="selectValue" :items="searchParam[parentPrgmId][dataKey + 'List']" item-text="commCdNm"
|
||||
item-value="commCd" outlined :hide-details="true" append-icon=""
|
||||
:class="['v-select__custom', customClass]">
|
||||
:class="['v-select__custom', customClass]"
|
||||
:menu-props="{ top: false, offsetY: true }"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
</template>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="d-flex justify-space-between align-center" style="min-height: 80px;">
|
||||
<span class="txt custom-title-4-new">Data Set TAG 연결 정보</span>
|
||||
<span class="txt custom-subtitle-tab">Data Set TAG 연결 정보</span>
|
||||
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailDataSetTagList"
|
||||
:btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
@ -38,7 +38,7 @@
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import Buttons from '~/components/common/button/Buttons';
|
||||
import Grid from '~/components/common/Grid';
|
||||
import { CustumChecbox } from '~/plugins/gridUtility';
|
||||
import { CustomCheckbox } from '~/plugins/gridUtility';
|
||||
import { CustomNumberEditor } from '~/plugins/gridUtility';
|
||||
import Form from '~/components/common/form/Form';
|
||||
import mixinGlobal from '@/mixin/global.js';
|
||||
|
@ -69,55 +69,6 @@ export default {
|
||||
return {
|
||||
loadGrid: false,
|
||||
gridName: 'effcInfoGrid',
|
||||
// "effcInfoGrid": {
|
||||
// data:
|
||||
// [
|
||||
// {
|
||||
// "eqpmKindId": "펌프",
|
||||
// "eqpmGrpId": "냉각수 시스템",
|
||||
// "totMethNm": "평균값"
|
||||
// },
|
||||
// {
|
||||
// "eqpmKindId": "모터",
|
||||
// "eqpmGrpId": "공기압 시스템",
|
||||
// "totMethNm": "최대값"
|
||||
// },
|
||||
// {
|
||||
// "eqpmKindId": "밸브",
|
||||
// "eqpmGrpId": "스팀 공급",
|
||||
// "totMethNm": "합계"
|
||||
// },
|
||||
// {
|
||||
// "eqpmKindId": "센서",
|
||||
// "eqpmGrpId": "온도 제어",
|
||||
// "totMethNm": "최소값"
|
||||
// },
|
||||
// {
|
||||
// "eqpmKindId": "컴프레서",
|
||||
// "eqpmGrpId": "에어 시스템",
|
||||
// "totMethNm": "중앙값"
|
||||
// }
|
||||
// ]
|
||||
|
||||
// ,
|
||||
// column: [
|
||||
|
||||
// {
|
||||
// header: '대상설비종류',
|
||||
// name: 'eqpmKindId',
|
||||
|
||||
// },
|
||||
// {
|
||||
// header: '대상설비그룹',
|
||||
// name: 'eqpmGrpId',
|
||||
// },
|
||||
|
||||
// { header: '집계방법', name: 'totMethNm', align: 'center' },
|
||||
|
||||
// ]
|
||||
|
||||
// }
|
||||
// },
|
||||
itemList: [],
|
||||
tagTpList: [],
|
||||
// detailList: myDetail,
|
||||
@ -388,10 +339,10 @@ export default {
|
||||
},
|
||||
// bodyHeight: gridHeight,
|
||||
// minBodyHeight: gridHeight,
|
||||
// header: {
|
||||
// height: 28,
|
||||
// },
|
||||
// rowHeight: 29,
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 37,
|
||||
// minRowHeight: 29,
|
||||
// selectionUnit: 'row',
|
||||
// editingEvent: 'click',
|
||||
@ -436,7 +387,6 @@ export default {
|
||||
header: '물리량ID',
|
||||
name: 'pysclQtyId',
|
||||
width: 200,
|
||||
align: 'center',
|
||||
hidden: true,
|
||||
},
|
||||
{ header: '물리량', name: 'pysclQtyCd', hidden: true, minWidth: 200 },
|
||||
@ -445,7 +395,7 @@ export default {
|
||||
{ header: '가이드지표', name: 'gdIdxId', hidden: true },
|
||||
{ header: '가이드지표명', name: 'gdIdxNm', hidden: true },
|
||||
{ header: '집계방법', name: 'totMeth', hidden: true },
|
||||
{ header: '집계방법', name: 'totMethNm', align: 'center' },
|
||||
{ header: '집계방법', name: 'totMethNm',},
|
||||
];
|
||||
|
||||
if (this.selectValue01 == 'PYSCL') {
|
||||
|
@ -8,7 +8,7 @@
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div ref="gridParent" style="height: calc(100vh - 520px);">
|
||||
<div ref="gridParent" class="w100" style="height: calc(100vh - 520px);">
|
||||
<Grid
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
@ -55,9 +55,9 @@ export default {
|
||||
dataPathMock: {
|
||||
'rowDetailGrid' : {
|
||||
column: [
|
||||
{ header: '추가 정보', name: 'id', headerAlign: 'left' },
|
||||
{ header: 'Data 구분', name: 'lable', headerAlign: 'left' },
|
||||
{ header: '추가 정보 값', name: 'type', headerAlign: 'left' },
|
||||
{ header: '추가 정보', name: 'id', headerAlign: 'left', align: 'left', },
|
||||
{ header: 'Data 구분', name: 'lable', headerAlign: 'left', align: 'left' },
|
||||
{ header: '추가 정보 값', name: 'type', headerAlign: 'left', align: 'right' },
|
||||
// { header: '비고', name: 'note', headerAlign: 'left' }
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
@ -296,7 +296,7 @@ export default {
|
||||
{
|
||||
header: '추가 정보 값',
|
||||
name: 'addInfoVal',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
renderer: {
|
||||
type: CustomRenderer,
|
||||
},
|
||||
|
@ -8,7 +8,7 @@
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div ref="gridParent" style="height: calc(100vh - 800px);">
|
||||
<div ref="gridParent" style="height: calc(100vh - 700px);">
|
||||
<Grid
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
@ -18,7 +18,7 @@
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
/>
|
||||
</div>
|
||||
<div style="min-height: calc(100vh - 900px);" class="mt-4">
|
||||
<div style="height: 60vh;" class="mt-5">
|
||||
<component
|
||||
:is="'Form'"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@ -114,7 +114,7 @@ export default {
|
||||
this.detailList[2].class = 'py-3 d-none';
|
||||
this.detailList[3].class = 'py-3 pl-4 pt-1 d-none';
|
||||
|
||||
this.detailList[4].class = 'py-3';
|
||||
this.detailList[4].class = 'py-3 pl-4';
|
||||
this.detailList[5].class = 'py-3 pl-4';
|
||||
this.detailList[6].class = 'py-3 pl-4 pt-0';
|
||||
} else {
|
||||
@ -230,7 +230,7 @@ export default {
|
||||
{
|
||||
header: '대상 유형',
|
||||
name: 'objKind',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
var retVal = '';
|
||||
|
||||
@ -261,7 +261,7 @@ export default {
|
||||
{
|
||||
header: '계산여부',
|
||||
name: 'calcFg',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
value = value === true ? '1' : '0';
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
@ -612,3 +612,10 @@ const myEqpmIaoDetail = [
|
||||
},
|
||||
];
|
||||
</script>
|
||||
<style lang="scss" scoped >
|
||||
::v-deep {
|
||||
.tui-grid-layer-state {
|
||||
top: 40px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -20,6 +20,12 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<!-- Create the line between date picker and form -->
|
||||
<v-row class="my-5" no-gutters>
|
||||
<v-col>
|
||||
<div style="height: 1px; background-color: #ccc;"></div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row class="search-box" align="center" no-gutters style="height: 44px;">
|
||||
<v-col :cols="4">
|
||||
<label for="" class="search-box-label">
|
||||
|
@ -200,7 +200,6 @@ export default {
|
||||
{
|
||||
header: 'Data 구분',
|
||||
name: 'addInfoDataKind',
|
||||
align: 'center',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = addInfoDataKindList.filter(
|
||||
|
@ -7,7 +7,7 @@
|
||||
</div>
|
||||
|
||||
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
|
||||
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
||||
<Grid :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo" />
|
||||
</div>
|
||||
<div ref="formParent" style="height: calc((100vh - 400px) /2);">
|
||||
@ -101,9 +101,9 @@ export default {
|
||||
// bodyHeight: gridHeight,
|
||||
// minBodyHeight: gridHeight,
|
||||
header: {
|
||||
height: 28,
|
||||
height: 37,
|
||||
},
|
||||
// rowHeight: 29,
|
||||
rowHeight: 37,
|
||||
// minRowHeight: 29,
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
@ -124,13 +124,12 @@ export default {
|
||||
const myColumns = [
|
||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||
{ header: '검침개소 번호', name: 'readPlcId', hidden: true },
|
||||
{ header: '대상 검침개소 번호', name: 'objReadPlcId', align: 'center' },
|
||||
{ header: '대상 검침개소 번호', name: 'objReadPlcId'},
|
||||
{ header: '대상 검침개소명', name: 'objReadPlcNm', align: 'left' },
|
||||
{ header: '분배율(1~100)', name: 'distRt', align: 'right' },
|
||||
{
|
||||
header: '가감유형',
|
||||
name: 'ddctKind',
|
||||
align: 'center',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = ddctKindList.filter(item => item.value == value);
|
||||
|
@ -30,7 +30,7 @@
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import Buttons from '~/components/common/button/Buttons';
|
||||
import Grid from '~/components/common/Grid';
|
||||
import { CustumChecbox } from '~/plugins/gridUtility';
|
||||
import { CustomCheckbox } from '~/plugins/gridUtility';
|
||||
import { CustomNumberEditor } from '~/plugins/gridUtility';
|
||||
import Form from '~/components/common/form/Form';
|
||||
import mixinGlobal from '@/mixin/global.js';
|
||||
@ -153,7 +153,6 @@ export default {
|
||||
{
|
||||
header: '에너지원',
|
||||
name: 'ercId',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
@ -182,10 +181,9 @@ export default {
|
||||
{
|
||||
header: '대표 TAG 여부',
|
||||
name: 'reprTagFg',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
// renderer: {
|
||||
// type: CustumChecbox,
|
||||
// type: CustomCheckbox,
|
||||
// options: {
|
||||
// onlyone: true,
|
||||
// // disabled: true
|
||||
@ -198,7 +196,6 @@ export default {
|
||||
{
|
||||
header: '사용여부',
|
||||
name: 'useFg',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
formatter({ value }) {
|
||||
value = value === true ? '1' : '0';
|
||||
@ -214,7 +211,7 @@ export default {
|
||||
// }
|
||||
// }
|
||||
},
|
||||
{ header: '비고', name: 'rmrk', align: 'left', width: 100 },
|
||||
{ header: '비고', name: 'rmrk', width: 100 },
|
||||
{ header: '등록 사용자', name: 'regUserNo', hidden: true },
|
||||
{ header: '등록 일자', name: 'regDttm', hidden: true },
|
||||
{ header: '수정 사용자', name: 'procUserNo', hidden: true },
|
||||
|
@ -107,8 +107,7 @@ export default {
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
rowHeight: 22,
|
||||
minRowHeight: 22,
|
||||
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
};
|
||||
@ -269,7 +268,7 @@ export default {
|
||||
{
|
||||
header: 'Data 구분',
|
||||
name: 'addInfoDataKind',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = addInfoDataKindList.filter(
|
||||
|
@ -9,7 +9,6 @@
|
||||
<div class="lnb-logo">
|
||||
<img v-if="isDarkMode" src="@/assets/images/logo_dm.png" />
|
||||
<img v-else src="@/assets/images/logo_lm.png" />
|
||||
<!-- <img v-else src="@/assets/images/logo_lm.png" /> -->
|
||||
</div>
|
||||
<!-- <div class="lnb-logo">FEMS</div>-->
|
||||
</router-link>
|
||||
@ -40,16 +39,16 @@
|
||||
<v-menu offset-y>
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<a-button
|
||||
:ripple="false"
|
||||
tile
|
||||
class="btn-header"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
style="width: 100px"
|
||||
>
|
||||
<span class="body-2">즐겨찾기</span>
|
||||
<v-icon size="20">mdi-chevron-down</v-icon>
|
||||
</a-button>
|
||||
:ripple="false"
|
||||
tile
|
||||
class="btn-header"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
style="width: 100px"
|
||||
>
|
||||
<span class="body-2">즐겨찾기</span>
|
||||
<v-icon size="20">mdi-chevron-down</v-icon>
|
||||
</a-button>
|
||||
<!-- <a-button style="width: 100px; height: 36px" class="btn-header">
|
||||
<span class="body-2">즐겨찾기</span>
|
||||
<v-icon size="20">mdi-chevron-down</v-icon></a-button> -->
|
||||
@ -62,10 +61,10 @@
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
<a-button id="refresh" class="btn-header" @click="removeBookMark" v-if="bookmarkBtn == 1">
|
||||
<a-button id="removeBm" class="btn-header" @click="removeBookMark" v-if="bookmarkBtn == 1">
|
||||
<span class="material-icons" style="font-size: 17px">star</span>
|
||||
</a-button>
|
||||
<a-button id="refresh" class="btn-header" :style="{
|
||||
<a-button id="addBm" class="btn-header" :style="{
|
||||
display: 'flex',
|
||||
alignItems: 'center'}" @click="addBookMark" v-if="bookmarkBtn == 0">
|
||||
<span class="material-icons" style="font-size: 17px">star_border</span>
|
||||
@ -88,32 +87,12 @@
|
||||
</v-row>
|
||||
</div>
|
||||
<v-main>
|
||||
|
||||
<v-container fluid>
|
||||
<v-row class="flex-nowrap">
|
||||
<div class="menu-container">
|
||||
<v-navigation-drawer ref="navigationdrawer" :value="drawer" :mini-variant="miniVariant" :clipped="clipped"
|
||||
:absolute="false" mini-variant-width="60">
|
||||
|
||||
<div class="d-flex align-center justify-space-between py-4 px-3" v-if="false">
|
||||
<router-link class="home" :to="myHome.root">
|
||||
<div class="lnb-logo">
|
||||
<img v-if="isDarkMode" src="@/assets/images/logo_dm.png" />
|
||||
<img v-else src="@/assets/images/logo_lm.png" />
|
||||
</div>
|
||||
<!-- <div class="lnb-logo">FEMS</div>-->
|
||||
|
||||
</router-link>
|
||||
<ThemeSwitch style="margin-right: 20px" />
|
||||
<v-app-bar-nav-icon ref="appbarnavicon" id="appbarnavicon" @click.stop="miniVariant = !miniVariant"
|
||||
@click="updateTreeview" :style="{
|
||||
backgroundColor: 'transparent',
|
||||
color: isDarkMode ? '#fff' : '#111',
|
||||
}" />
|
||||
<!-- <router-view :key="$route.fullPath"/> -->
|
||||
</div>
|
||||
<AdminMenu :miniVariant="miniVariant" :userNm="this.userInfo.userNm" :comId="this.userInfo.comId" v-if="false" />
|
||||
|
||||
<component ref="changePswdPop" :is="'ChangePswdPop'" v-show="false" :comId="this.userInfo.comId" />
|
||||
<v-treeview ref="treeview" :active.sync="activeTree" active-class="v-treeview-node--active"
|
||||
:items="treevieItems" activatable hoverable color="#3896ff" open-on-click @update:open="openNode">
|
||||
@ -130,14 +109,16 @@
|
||||
:class="miniVariant === false ? 'mr-2' : ''" size="9">
|
||||
$depth3rdBulletDark
|
||||
</v-icon>
|
||||
<span v-if="item.url">{{ item.menuNm }}
|
||||
<span v-if="item.url">
|
||||
{{ item.menuNm }}
|
||||
<!-- <span v-if="item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star</span>
|
||||
<span v-else-if="!item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star_border</span> -->
|
||||
</span>
|
||||
<span v-else-if="!item.url">{{ item.menuNm }}</span>
|
||||
<v-icon v-if="item.lvl >= 1 && item.childeVo && item.childeVo.length > 0 && !item.url">
|
||||
<!-- <v-icon v-if="item.lvl >= 1 && item.childeVo && item.childeVo.length > 0 && !item.url">
|
||||
mdi-chevron-down
|
||||
</v-icon>
|
||||
</v-icon> -->
|
||||
<a-icon type="down" v-if="item.lvl >= 1 && item.childeVo && item.childeVo.length > 0 && !item.url" />
|
||||
</button>
|
||||
</template>
|
||||
</v-treeview>
|
||||
@ -805,7 +786,7 @@ export default {
|
||||
// console.log('if isLoading stmt3');
|
||||
// return;
|
||||
// }
|
||||
alert("move to", url);
|
||||
// alert("move to", url);
|
||||
this.$router.push({
|
||||
path: url + "?prgmId=" + prgmId,
|
||||
});
|
||||
|
@ -5,22 +5,12 @@
|
||||
<v-card class="searchFilter">
|
||||
<v-row algin="end" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="역할ID"
|
||||
valueNm="roleId"
|
||||
:searchOption="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
<InputText :parentPrgmId="myPrgmId" label="역할ID" valueNm="roleId" :searchOption="true"
|
||||
customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="역할명"
|
||||
valueNm="roleNm"
|
||||
:searchOption="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
<InputText :parentPrgmId="myPrgmId" label="역할명" valueNm="roleNm" :searchOption="true"
|
||||
customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col class="text-right d-flex justify-end align-end mr-3">
|
||||
<BtnSearch size="large" />
|
||||
@ -30,81 +20,55 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-row ref="contents" >
|
||||
<v-col cols="12" lg="2" >
|
||||
<v-row ref="contents">
|
||||
<v-col cols="12" lg="3">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
<span class="custom-title-4">역할 리스트</span>
|
||||
</v-card-title>
|
||||
<div ref="gridParent" class="px-5" style="height: 60vh;">
|
||||
<component
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:ref="gridName + myPrgmId"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
/>
|
||||
<component :is="loadGrid ? 'Grid' : null" :ref="gridName + myPrgmId" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" />
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col cols="12" lg="10" >
|
||||
<v-col cols="12" lg="9">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
<span class="custom-title-4">역할 메뉴별 권한</span>
|
||||
</v-card-title>
|
||||
<v-row
|
||||
align="center"
|
||||
no-gutters
|
||||
:style="{ height: 'calc(100% - 62px)' }"
|
||||
class="px-5"
|
||||
>
|
||||
<v-col :cols="4" class="h100">
|
||||
<span
|
||||
class="body-1 font-weight-bold d-flex align-center"
|
||||
:style="{ minHeight: '36px' }"
|
||||
>[미배정]메뉴리스트</span
|
||||
>
|
||||
<v-row align="center" no-gutters :style="{ height: 'calc(100% - 62px)' }" class="px-5">
|
||||
<v-col class="h100" style="max-width: 400px;">
|
||||
<span class="body-1 font-weight-bold d-flex align-center"
|
||||
:style="{ minHeight: '36px' }">[미배정]메뉴리스트</span>
|
||||
<div ref="treeGridParent" class="px-0 mt-2" style="height: 60vh;">
|
||||
<!-- <div
|
||||
ref="treeGridParent"
|
||||
class="w100 h100"
|
||||
>
|
||||
</div> -->
|
||||
<component
|
||||
:is="loadTreeGrid ? 'Grid' : null"
|
||||
:ref="gridName2 + myPrgmId"
|
||||
:gridName="gridName2"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getUnAsgnRowData"
|
||||
/>
|
||||
<component :is="loadTreeGrid ? 'Grid' : null" :ref="gridName2 + myPrgmId"
|
||||
:gridName="gridName2" :parentPrgmId="myPrgmId" @getRowsData="getUnAsgnRowData" />
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
<ActionButtons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:leftGridName="gridName2"
|
||||
:rightGridName="gridName3"
|
||||
:btnActionsFnc="dualGridBtnActions"
|
||||
/>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="1.5">
|
||||
<ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3"
|
||||
:btnActionsFnc="dualGridBtnActions" />
|
||||
</v-col> -->
|
||||
<div class="pr-2">
|
||||
<ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3"
|
||||
:btnActionsFnc="dualGridBtnActions" />
|
||||
</div>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-row
|
||||
justify="space-between"
|
||||
align="center"
|
||||
no-gutters
|
||||
class="px-5"
|
||||
>
|
||||
<v-row justify="space-between" align="center" no-gutters class="px-5">
|
||||
<v-col :cols="11">
|
||||
<span class="body-1 font-weight-bold"
|
||||
>[배정]메뉴별권한 리스트</span
|
||||
>
|
||||
<span class="body-1 font-weight-bold d-flex align-center"
|
||||
:style="{ minHeight: '36px' }">[배정]메뉴별권한 리스트</span>
|
||||
<!-- <span class="body-1 font-weight-bold">[배정]메뉴별권한 리스트</span> -->
|
||||
</v-col>
|
||||
<v-col :cols="1" class="text-right">
|
||||
<Buttons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:bindingData="gridName3"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName3"
|
||||
:btnActionsFnc="btnActions" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
<div ref="treeGridParent2" class="px-0 mt-2" style="height: 60vh;">
|
||||
@ -113,14 +77,9 @@
|
||||
class="w100 h100"
|
||||
>
|
||||
</div> -->
|
||||
<component
|
||||
:is="loadTreeGrid2 ? 'Grid' : null"
|
||||
:ref="gridName3 + myPrgmId"
|
||||
:gridName="gridName3"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:editorGrid="true"
|
||||
@getRowsData="getAsgnRowData"
|
||||
/>
|
||||
<component :is="loadTreeGrid2 ? 'Grid' : null" :ref="gridName3 + myPrgmId"
|
||||
:gridName="gridName3" :parentPrgmId="myPrgmId" :editorGrid="true"
|
||||
@getRowsData="getAsgnRowData" />
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -286,8 +245,8 @@ export default {
|
||||
async gridInit() {
|
||||
//---------------------gridOption 설정 시작----------------------------
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 30;
|
||||
const treeGridHeight2 = this.$refs.treeGridParent2.offsetHeight - 30;
|
||||
const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 50;
|
||||
const treeGridHeight2 = this.$refs.treeGridParent2.offsetHeight - 50;
|
||||
// const gridHeight = this.$refs.contents.offsetHeight - 30;
|
||||
|
||||
const myOptions = {
|
||||
@ -316,8 +275,10 @@ export default {
|
||||
treeColumnOptions: {
|
||||
name: 'menuNm',
|
||||
},
|
||||
scrollX: false,
|
||||
// scrollY: false,
|
||||
rowHeight: 37,
|
||||
minRowHeight: 37,
|
||||
scrollX: true,
|
||||
scrollY: true,
|
||||
};
|
||||
|
||||
this.setGridOption({
|
||||
@ -342,11 +303,14 @@ export default {
|
||||
//---------------------gridOption 설정 끝----------------------------
|
||||
|
||||
//---------------------gridName3의 체크박스 설정 시작----------------------------
|
||||
class CustumChecbox {
|
||||
class CustomCheckbox {
|
||||
constructor(props) {
|
||||
const el = document.createElement('input');
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
el.type = 'checkbox';
|
||||
$(el).css('width', '16px');
|
||||
$(el).css('height', '16px');
|
||||
$(el).css('accent-color', '#1677FF');
|
||||
el.value = props.value;
|
||||
this.el = el;
|
||||
|
||||
@ -380,12 +344,12 @@ export default {
|
||||
const _this = this;
|
||||
|
||||
const myColumns = [
|
||||
{ header: '역할ID', name: 'roleId', align: 'center', minWidth: 70 },
|
||||
{ header: '역할명', name: 'roleNm', minWidth: 70 },
|
||||
{ header: '역할ID', name: 'roleId', align: 'left', minWidth: 70,width:120 },
|
||||
{ header: '역할명', name: 'roleNm', minWidth: 70, align: 'left',width:120 },
|
||||
{
|
||||
header: '사용여부',
|
||||
name: 'useFg',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
minWidth: 84,
|
||||
formatter({ value }) {
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
@ -408,6 +372,7 @@ export default {
|
||||
{
|
||||
header: '메뉴명',
|
||||
name: 'menuNm',
|
||||
maxWidth: 120,
|
||||
validation: {
|
||||
dataType: 'string',
|
||||
validatorFn: (value, row) => {
|
||||
@ -433,7 +398,7 @@ export default {
|
||||
name: 'useFg',
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustumChecbox,
|
||||
type: CustomCheckbox,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -441,7 +406,7 @@ export default {
|
||||
name: 'authCd1',
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustumChecbox,
|
||||
type: CustomCheckbox,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -449,7 +414,7 @@ export default {
|
||||
name: 'authCd2',
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustumChecbox,
|
||||
type: CustomCheckbox,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -457,7 +422,7 @@ export default {
|
||||
name: 'authCd3',
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustumChecbox,
|
||||
type: CustomCheckbox,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -465,7 +430,7 @@ export default {
|
||||
name: 'authCd4',
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustumChecbox,
|
||||
type: CustomCheckbox,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -473,7 +438,7 @@ export default {
|
||||
name: 'authCd5',
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustumChecbox,
|
||||
type: CustomCheckbox,
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -481,7 +446,7 @@ export default {
|
||||
name: 'authCd6',
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: CustumChecbox,
|
||||
type: CustomCheckbox,
|
||||
},
|
||||
},
|
||||
];
|
||||
@ -549,12 +514,12 @@ export default {
|
||||
//rowKey: 0,
|
||||
rowKey:
|
||||
this.pageData.rowGridSelectKey == '' ||
|
||||
this.pageData.rowGridSelectKey == null
|
||||
this.pageData.rowGridSelectKey == null
|
||||
? 0
|
||||
: this.pageData.rowGridSelectKey ==
|
||||
this.$refs[this.gridName + this.myPrgmId].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
this.$refs[this.gridName + this.myPrgmId].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
columnName: 'roleId',
|
||||
setScroll: true,
|
||||
});
|
||||
@ -609,8 +574,8 @@ export default {
|
||||
item.upMenuId && item.upMenuId != '0'
|
||||
? item.upMenuId
|
||||
: item.upMenuId == '0'
|
||||
? '00'
|
||||
: 'ROOT',
|
||||
? '00'
|
||||
: 'ROOT',
|
||||
};
|
||||
return newItem;
|
||||
});
|
||||
@ -649,8 +614,8 @@ export default {
|
||||
item.upMenuId && item.upMenuId != '0'
|
||||
? item.upMenuId
|
||||
: item.upMenuId == '0'
|
||||
? '00'
|
||||
: 'ROOT',
|
||||
? '00'
|
||||
: 'ROOT',
|
||||
};
|
||||
return newItem;
|
||||
});
|
||||
|
@ -127,13 +127,13 @@
|
||||
|
||||
<!-- 역할수정 -->
|
||||
<template v-else-if="item.id == 'AsgnRoleByUser'">
|
||||
<v-col :cols="3" class="h100">
|
||||
<v-col :cols="12" class="overflow-y-scroll grid-toggle-section">
|
||||
<v-card-title
|
||||
class="pa-0 custom-subtitle-tab"
|
||||
style="min-height:36px;"
|
||||
>역할리스트</v-card-title
|
||||
>
|
||||
<div style="height:calc(100% - 36px)" class="py-5">
|
||||
<div class="py-5">
|
||||
<component
|
||||
class="w100"
|
||||
:is="loadGridTab2 ? 'Grid' : null"
|
||||
@ -145,15 +145,16 @@
|
||||
/>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="1" class="d-flex justify-center">
|
||||
<v-col :cols="12" class="d-flex justify-center">
|
||||
<ActionButtons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:leftGridName="gridName2"
|
||||
:rightGridName="gridName3"
|
||||
:btnActionsFnc="dualGridBtnActions"
|
||||
directionBtn="vertically"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="8" class="h100">
|
||||
<v-col :cols="12" class="h100">
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<v-card-title class="pa-0 custom-subtitle-tab">
|
||||
사용자 역할</v-card-title
|
||||
@ -894,6 +895,7 @@ const defaultData = {
|
||||
};
|
||||
|
||||
const myColumns = [
|
||||
|
||||
{ header: '사용자No', name: 'userNo', align: 'center', hidden: true },
|
||||
{ header: '사용자명', name: 'userNm' },
|
||||
{ header: '사용자ID', name: 'userLoginId' },
|
||||
@ -909,6 +911,17 @@ const myColumns = [
|
||||
];
|
||||
|
||||
const unAsgnRoleByUserColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '역할ID', name: 'roleId', align: 'center' },
|
||||
{ header: '역할명', name: 'roleNm' },
|
||||
{ header: '적용시작일', name: 'aplyStartDt', hidden: true },
|
||||
@ -918,6 +931,7 @@ const unAsgnRoleByUserColumns = [
|
||||
];
|
||||
|
||||
const asgnRoleByUserColumns = [
|
||||
|
||||
{ header: '역할ID', name: 'roleId', align: 'center' },
|
||||
{ header: '역할명', name: 'roleNm' },
|
||||
{
|
||||
@ -931,7 +945,19 @@ const asgnRoleByUserColumns = [
|
||||
{ header: 'comId', name: 'comId', hidden: true },
|
||||
];
|
||||
|
||||
const asgnMenuByUserColumns = [{ header: '메뉴명', name: 'menuNm' }];
|
||||
const asgnMenuByUserColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '메뉴명', name: 'menuNm' }];
|
||||
|
||||
const myDetail = blocCdList => {
|
||||
return [
|
||||
@ -956,7 +982,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pl-4',
|
||||
iconShow: true,
|
||||
required: true,
|
||||
},
|
||||
@ -980,7 +1006,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pl-4',
|
||||
iconShow: true,
|
||||
required: true,
|
||||
},
|
||||
@ -1006,7 +1032,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pl-4',
|
||||
iconShow: true,
|
||||
},
|
||||
{
|
||||
@ -1029,7 +1055,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pl-4',
|
||||
iconShow: true,
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
@ -1053,7 +1079,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pl-4',
|
||||
iconShow: true,
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
|
@ -5,7 +5,6 @@
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<div></div>
|
||||
<v-col :cols="2.5">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
|
@ -3,22 +3,22 @@
|
||||
<CommonPageTitle />
|
||||
<!-- 리스트 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'list'" class="h1001">
|
||||
<v-card class="" >
|
||||
<v-card class="">
|
||||
<div class="pa-5">
|
||||
<v-row align="center" no-gutters >
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="12" class="d-flex align-center justify-space-between">
|
||||
<v-card-title class="pa-0 custom-title-4">공지사항</v-card-title>
|
||||
<div class="d-flex align-center">
|
||||
<!-- <v-btn @click="listPageButtonGroupClickEvent('view')" :ripple="false" class="mr-1">상세보기</v-btn> -->
|
||||
<a-button type="primary" size="large" @click="listPageButtonGroupClickEvent('write')" :ripple="false"
|
||||
<a-button type="primary" @click="listPageButtonGroupClickEvent('write')" :ripple="false"
|
||||
icon="edit" class="mr-1">작성</a-button>
|
||||
<!-- <v-btn @click="listPageButtonGroupClickEvent('delete')" :ripple="false">삭제</v-btn> -->
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="12" ref="contents" class="mt-5" style="min-height: calc(100% - 76px);">
|
||||
<div ref="gridParent" class="px-50" style="min-height: 70vh;">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData" />
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" />
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -27,22 +27,23 @@
|
||||
</div>
|
||||
<!-- 리스트 페이지 끝 -->
|
||||
<!-- 상세보기 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'view'" >
|
||||
<div v-if="pageActionFlag == 'view'">
|
||||
<v-card>
|
||||
<v-row class="pa-5">
|
||||
<v-col :cols="12" class="d-flex align-center justify-space-between ">
|
||||
<v-card-title class="pa-0 custom-title-4">공지사항</v-card-title>
|
||||
<v-card-title class="pa-0 custom-title-4">공지사항 보기</v-card-title>
|
||||
<div class="d-flex align-center">
|
||||
<a-button @click="viewPageButtonGroupClickEvent('list')" type="primary" :ripple="false" class="mr-1"
|
||||
icon="unordered-list">목록</a-button>
|
||||
<a-button @click="viewPageButtonGroupClickEvent('reply')" type="primary" :ripple="false" class="mr-1"
|
||||
icon="send-outlined">
|
||||
<a-button @click="viewPageButtonGroupClickEvent('list')" type="primary" :ripple="false"
|
||||
class="mr-1" icon="unordered-list">목록</a-button>
|
||||
<a-button @click="viewPageButtonGroupClickEvent('reply')" type="primary" :ripple="false"
|
||||
class="mr-1" icon="send-outlined">
|
||||
<v-icon small :class="['mr-2']">$icoSend</v-icon>
|
||||
답글
|
||||
</a-button>
|
||||
<a-button @click="viewPageButtonGroupClickEvent('update')" type="primary" :ripple="false" class="mr-1"
|
||||
icon="edit">수정</a-button>
|
||||
<a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost icon="delete">삭제</a-button>
|
||||
<a-button @click="viewPageButtonGroupClickEvent('update')" type="primary" :ripple="false"
|
||||
class="mr-1" icon="edit">수정</a-button>
|
||||
<a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost
|
||||
icon="delete">삭제</a-button>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="mt-5">
|
||||
@ -57,13 +58,12 @@
|
||||
<v-card-title class="custom-title-7 pa-0">
|
||||
파일목록
|
||||
</v-card-title>
|
||||
<div v-for="fileData in viewActionData.fileData"
|
||||
:key="fileData.apndFileId"
|
||||
class="file-item">
|
||||
<div v-for="fileData in viewActionData.fileData" :key="fileData.apndFileId" class="file-item">
|
||||
<a @click.prevent="downloadFile(fileData)">
|
||||
<div class="d-flex justify-start search-box-label">
|
||||
<v-icon>mdi-paperclip</v-icon>
|
||||
<span class="file-item-name ml-2">{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}</span>
|
||||
<span class="file-item-name ml-2">{{ fileData.apndFileNm + '.' +
|
||||
fileData.apndFileExt }}</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@ -73,12 +73,12 @@
|
||||
</div>
|
||||
<!-- 상세보기 페이지 끝 -->
|
||||
<!-- 작성 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'write'" >
|
||||
<div v-if="pageActionFlag == 'write'">
|
||||
<v-card>
|
||||
<div class="pa-5">
|
||||
<v-row class="pa-50">
|
||||
<v-col :cols="12" class="">
|
||||
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
||||
<v-card-title class="custom-title-4 pa-0">공지사항 작성</v-card-title>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="mt-4">
|
||||
<v-card-title class="custom-title-7 pa-0">제목</v-card-title>
|
||||
@ -88,37 +88,31 @@
|
||||
<v-col :cols="12" style="min-height: calc(100vh - 450px);">
|
||||
<editor ref="tuiEditor" height="100%" initialEditType="wysiwyg" />
|
||||
</v-col>
|
||||
|
||||
|
||||
<v-col :cols="6" class="mt-5">
|
||||
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||
<div class="" v-if="writeActionData.fileData">
|
||||
<div
|
||||
v-for="(fileData, index) in writeActionData.fileData"
|
||||
:key="fileData.apndFileId"
|
||||
<div v-for="(fileData, index) in writeActionData.fileData" :key="fileData.apndFileId"
|
||||
class="file-item d-flex justify-space-between">
|
||||
<div class="file-item-detail">
|
||||
<v-icon>mdi-paperclip</v-icon>
|
||||
<span href="#" class="file-item-name">{{ fileData.name }}</span>
|
||||
</div>
|
||||
<a-icon type="delete" class="v-icon pointer" @click="writeActionData.fileData.splice(index, 1)" />
|
||||
<a-icon type="delete" class="v-icon pointer"
|
||||
@click="writeActionData.업로드fileData.splice(index, 1)" />
|
||||
</div>
|
||||
</div>
|
||||
<a-button class="mt-2" icon="upload" @click="$refs.writeInputFile.$refs.input.click()" >
|
||||
<a-button class="mt-2" icon="upload" @click="$refs.writeInputFile.$refs.input.click()">
|
||||
업로드
|
||||
</a-button>
|
||||
<v-file-input
|
||||
ref="writeInputFile"
|
||||
v-model="writeActionData.fileData"
|
||||
multiple
|
||||
outlined
|
||||
hide-input
|
||||
class="d-none"
|
||||
prepend-icon="mdi-tray-arrow-up"
|
||||
></v-file-input>
|
||||
<v-file-input ref="writeInputFile" v-model="writeActionData.fileData" multiple outlined
|
||||
hide-input class="d-none" prepend-icon="mdi-tray-arrow-up"></v-file-input>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="text-right">
|
||||
<a-button @click="writePageButtonGroupClickEvent('cancel')" :ripple="false" class="mr-2">취소</a-button>
|
||||
<a-button @click="writePageButtonGroupClickEvent('write')" :ripple="false" type="primary">등록</a-button>
|
||||
<a-button @click="writePageButtonGroupClickEvent('cancel')" :ripple="false"
|
||||
class="mr-2">취소</a-button>
|
||||
<a-button @click="writePageButtonGroupClickEvent('write')" :ripple="false"
|
||||
type="primary">등록</a-button>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
@ -126,7 +120,7 @@
|
||||
</div>
|
||||
<!-- 작성 페이지 끝 -->
|
||||
<!-- 답글 작성 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'reply'" >
|
||||
<div v-if="pageActionFlag == 'reply'">
|
||||
<v-card class="pa-5">
|
||||
<v-row align="center" class="mt-0">
|
||||
<v-col :cols="12" class="">
|
||||
@ -134,8 +128,7 @@
|
||||
</v-col>
|
||||
<v-col :cols="12" class="mt-4">
|
||||
<v-card-title class="custom-title-7 pa-0">제목</v-card-title>
|
||||
<v-text-field v-model="replyActionData.title" class="v-input__custom" outlined
|
||||
hide-details>
|
||||
<v-text-field v-model="replyActionData.title" class="v-input__custom" outlined hide-details>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-2">
|
||||
@ -144,72 +137,73 @@
|
||||
<v-col :cols="6" class="mt-5">
|
||||
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||
<div class="" v-if="replyActionData.fileData">
|
||||
<div
|
||||
v-for="(fileData, index) in replyActionData.fileData"
|
||||
:key="fileData.apndFileId"
|
||||
<div v-for="(fileData, index) in replyActionData.fileData" :key="fileData.apndFileId"
|
||||
class="file-item d-flex justify-space-between">
|
||||
<div class="file-item-detail">
|
||||
<v-icon>mdi-paperclip</v-icon>
|
||||
<span href="#" class="file-item-name">{{ fileData.name }}</span>
|
||||
</div>
|
||||
<a-icon type="delete" class="v-icon pointer" @click="replyActionData.fileData.splice(index, 1)" />
|
||||
<a-icon type="delete" class="v-icon pointer"
|
||||
@click="replyActionData.fileData.splice(index, 1)" />
|
||||
</div>
|
||||
</div>
|
||||
<a-button class="mt-3" icon="upload" @click="$refs.replyInputFile.$refs.input.click()" >
|
||||
<a-button class="mt-3" icon="upload" @click="$refs.replyInputFile.$refs.input.click()">
|
||||
업로드
|
||||
</a-button>
|
||||
<v-file-input ref="replyInputFile" multiple show-size v-model="replyActionData.fileData" hide-details="true" class="d-none">
|
||||
<v-file-input ref="replyInputFile" multiple show-size v-model="replyActionData.fileData"
|
||||
hide-details="true" class="d-none">
|
||||
</v-file-input>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="text-right">
|
||||
<a-button @click="replyPageButtonGroupClickEvent('cancel')" :ripple="false">취소</a-button>
|
||||
<a-button @click="replyPageButtonGroupClickEvent('reply')" :ripple="false" type="primary">등록</a-button>
|
||||
<a-button @click="replyPageButtonGroupClickEvent('reply')" :ripple="false"
|
||||
type="primary">등록</a-button>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
</div>
|
||||
<!-- 답글 작성 페이지 끝 -->
|
||||
<!-- 수정 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'update'" >
|
||||
<div v-if="pageActionFlag == 'update'">
|
||||
<v-card>
|
||||
<div class="pa-5">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="12">
|
||||
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
||||
<v-card-title class="custom-title-4 pa-0">공지사항 수정</v-card-title>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="mt-4">
|
||||
<v-card-title class="custom-title-7 pa-0">제목</v-card-title>
|
||||
<v-text-field v-model="updateActionData.title" class="v-input__custom" hide-details outlined>
|
||||
<v-text-field v-model="updateActionData.title" class="v-input__custom" hide-details
|
||||
outlined>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4" >
|
||||
<v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4">
|
||||
<editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg"
|
||||
:initialValue="updateActionData.content" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="mt-5">
|
||||
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||
<div class="" v-if="updateActionData.fileData">
|
||||
<div
|
||||
v-for="(fileData, index) in updateActionData.fileData"
|
||||
:key="fileData.apndFileId"
|
||||
class="file-item d-flex justify-space-between">
|
||||
<div class="file-item-detail">
|
||||
<v-icon>mdi-paperclip</v-icon>
|
||||
<span href="#" class="file-item-name">{{ fileData.name }}</span>
|
||||
</div>
|
||||
<a-icon type="delete" class="v-icon pointer" @click="updateActionData.fileData.splice(index, 1)" />
|
||||
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||
<div class="" v-if="updateActionData.fileData">
|
||||
<div v-for="(fileData, index) in updateActionData.fileData" :key="fileData.apndFileId"
|
||||
class="file-item d-flex justify-space-between">
|
||||
<div class="file-item-detail">
|
||||
<v-icon>mdi-paperclip</v-icon>
|
||||
<span href="#" class="file-item-name">{{ fileData.name }}</span>
|
||||
</div>
|
||||
<a-icon type="delete" class="v-icon pointer"
|
||||
@click="updateActionData.fileData.splice(index, 1)" />
|
||||
</div>
|
||||
<a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()" >
|
||||
업로드
|
||||
</a-button>
|
||||
<v-file-input ref="updateInputFile" multiple show-size v-model="updateActionData.fileData"
|
||||
hide-details="true" class="d-none">
|
||||
</v-file-input>
|
||||
</div>
|
||||
<a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()">
|
||||
업로드
|
||||
</a-button>
|
||||
<v-file-input ref="updateInputFile" multiple show-size v-model="updateActionData.fileData"
|
||||
hide-details="true" class="d-none">
|
||||
</v-file-input>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="text-right">
|
||||
<a-button @click="updatePageButtonGroupClickEvent('cancel')" >취소</a-button>
|
||||
<a-button @click="updatePageButtonGroupClickEvent('update')" type="primary" >등록</a-button>
|
||||
<a-button @click="updatePageButtonGroupClickEvent('cancel')">취소</a-button>
|
||||
<a-button @click="updatePageButtonGroupClickEvent('update')" type="primary">등록</a-button>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
@ -295,8 +289,6 @@ export default {
|
||||
postGrpOrd: null,
|
||||
postOrgNo: null,
|
||||
},
|
||||
dataPathMock: {},
|
||||
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -341,7 +333,7 @@ export default {
|
||||
chkOpenTabList: 'chkOpenTabList',
|
||||
getDomain: 'modules/list/getDomain',
|
||||
}),
|
||||
onTest(){
|
||||
onTest() {
|
||||
console.log(this.writeActionData.fileData);
|
||||
},
|
||||
async init() {
|
||||
@ -400,7 +392,11 @@ export default {
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.contents.offsetHeight - 76;
|
||||
|
||||
const myOptions = {};
|
||||
const myOptions = {
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
value: Object.assign(Utility.defaultGridOption(gridHeight), myOptions),
|
||||
@ -421,7 +417,7 @@ export default {
|
||||
align: 'center',
|
||||
hidden: true,
|
||||
},
|
||||
{ header: '번호', name: 'postNo', width: 150, align: 'center' },
|
||||
{ header: '번호', name: 'postNo', width: 150, align: 'right' },
|
||||
{
|
||||
header: '원글번호',
|
||||
name: 'postOrgNo',
|
||||
@ -451,9 +447,9 @@ export default {
|
||||
hidden: true,
|
||||
},
|
||||
{ header: '제목', name: 'title', align: 'left' },
|
||||
{ header: '작성자', name: 'regUserNo', width: 250, align: 'center' },
|
||||
{ header: '작성자', name: 'regUserNo', width: 250, align: 'right' },
|
||||
{ header: '작성일', name: 'regDttm', width: 250, align: 'center' },
|
||||
{ header: '조회수', name: 'viewCnt', width: 150, align: 'center' },
|
||||
{ header: '조회수', name: 'viewCnt', width: 150, align: 'right' },
|
||||
// {header: "파일아이디", name:"apndFileUuid", width:150, align:"center"}, // 수정필요
|
||||
];
|
||||
|
||||
@ -475,7 +471,7 @@ export default {
|
||||
resKey: 'postData',
|
||||
sendParam: params,
|
||||
});
|
||||
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: res,
|
||||
@ -1020,15 +1016,6 @@ const defaultData = {
|
||||
},
|
||||
};
|
||||
|
||||
import { getPathDataExample } from '@/const/const'
|
||||
const dataPathDataExample = getPathDataExample({
|
||||
postNo: '18',
|
||||
title: '오픈공지',
|
||||
regUserNo: '1',
|
||||
regDttm: '2023-01-09 09:39:41',
|
||||
viewCnt: '1'
|
||||
}, 10);
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@ -1042,23 +1029,41 @@ const dataPathDataExample = getPathDataExample({
|
||||
margin: 2px 0;
|
||||
padding: 4px;
|
||||
background-color: #0000000A;
|
||||
.file-item-name{
|
||||
|
||||
.file-item-name {
|
||||
color: #1677FF;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
.v-input__slot {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.custom-view {
|
||||
border: 1px solid;
|
||||
border-radius: 6px;
|
||||
height: 100%;
|
||||
|
||||
@each $theme in dark, light {
|
||||
@include theme($theme);
|
||||
border-color: map-deep-get($config, #{$theme}, "v-input-textarea-border");;
|
||||
border-color: map-deep-get($config, #{$theme}, "v-input-textarea-border");
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
.toastui-editor-mode-switch {
|
||||
font-family: Inter !important;
|
||||
font-size: 1.0rem !important;
|
||||
}
|
||||
|
||||
.toastui-editor-mode-switch .tab-item.active {
|
||||
color: #1677FF
|
||||
}
|
||||
|
||||
.toastui-editor-mode-switch .tab-item {
|
||||
color: #000000E0
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -7,28 +7,15 @@
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'사용여부'"
|
||||
:dataKey="'selectUseFg'"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'"
|
||||
:dataKey="'selectUseFg'" :sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="프로그램명"
|
||||
valueNm="prgmNm"
|
||||
:searchOption="true"
|
||||
:labelCols="12"
|
||||
:textCols="12"
|
||||
customClass="input-large"
|
||||
/>
|
||||
<InputText :parentPrgmId="myPrgmId" label="프로그램명" valueNm="prgmNm" :searchOption="true"
|
||||
:labelCols="12" :textCols="12" customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col :cols="5" class="text-right">
|
||||
<v-col :cols="6" class="text-right">
|
||||
<BtnSearch size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -38,46 +25,32 @@
|
||||
|
||||
<v-row ref="contents">
|
||||
<!-- 프로그램 리스트 -->
|
||||
<v-col :cols="5" >
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-5">
|
||||
<v-col :cols="5">
|
||||
<v-card class="pa-5">
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<v-card-title class="pa-0">프로그램 리스트</v-card-title>
|
||||
<div>
|
||||
<Buttons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:bindingData="gridName"
|
||||
:detailList="detailList"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||
:btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
</div>
|
||||
<div ref="gridParent" style="height: 60vh">
|
||||
<div ref="gridParent" class="pt-5" style="height: 60vh">
|
||||
<!-- <div ref="gridParent" class="px-5 h100">
|
||||
</div> -->
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:gridName="gridName"
|
||||
@getRowsData="getRowData"
|
||||
/>
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
|
||||
:gridName="gridName" @getRowsData="getRowData" />
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<!-- 프로그램 상세 -->
|
||||
<v-col :cols="7" >
|
||||
<v-col :cols="7">
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-5">
|
||||
<v-card-title class="pa-0">프로그램 상세</v-card-title>
|
||||
</div>
|
||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
||||
<component
|
||||
:is="'Form'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:bindingData="gridName"
|
||||
:detailList="detailList"
|
||||
@gridEditingFinish="gridEditingFinish"
|
||||
/>
|
||||
<component :is="'Form'" :parentPrgmId="myPrgmId" :bindingData="gridName"
|
||||
:detailList="detailList" @gridEditingFinish="gridEditingFinish" />
|
||||
<!-- <div class="w100">
|
||||
</div> -->
|
||||
</div>
|
||||
@ -132,21 +105,19 @@ export default {
|
||||
detailList: myDetail,
|
||||
|
||||
dataPathMock: {
|
||||
'rowGrid': {
|
||||
column: [
|
||||
{ header: '프로그램ID', name: 'field1', align: 'left' },
|
||||
{ header: '프로그램덤', name: 'field2', align: 'left' },
|
||||
{ header: '타임', name: 'field3', align: 'left' },
|
||||
{ header: '사용여부', name: 'field4', align: 'left' }
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {
|
||||
'rowGrid': {
|
||||
column: [
|
||||
{ header: '프로그램ID', name: 'field1', align: 'left' },
|
||||
{ header: '프로그램덤', name: 'field2', align: 'left' },
|
||||
{ header: '타임', name: 'field3', align: 'left' },
|
||||
{ header: '사용여부', name: 'field4', align: 'left' }
|
||||
],
|
||||
option: {
|
||||
scrollY: false,
|
||||
scrollX: false,
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -295,7 +266,7 @@ export default {
|
||||
value: newRes,
|
||||
});
|
||||
this.loadGrid = true;
|
||||
|
||||
|
||||
this.$nextTick(() => {
|
||||
if (newRes.length > 0) {
|
||||
this.$refs[this.gridName].focus({
|
||||
@ -303,12 +274,12 @@ export default {
|
||||
//rowKey: this.chkRowGridSelectKey || 0,
|
||||
rowKey:
|
||||
this.pageData.rowGridSelectKey == '' ||
|
||||
this.pageData.rowGridSelectKey == null
|
||||
this.pageData.rowGridSelectKey == null
|
||||
? 0
|
||||
: this.pageData.rowGridSelectKey ==
|
||||
this.$refs[this.gridName].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
this.$refs[this.gridName].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
setScroll: true,
|
||||
});
|
||||
}
|
||||
@ -331,7 +302,7 @@ export default {
|
||||
rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectData: data,
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
compareData(type, newDt) {
|
||||
if (this.selectedCommCdData[type] == newDt) {
|
||||
@ -487,7 +458,7 @@ const myDetail = [
|
||||
valueNm: 'prgmTpCd',
|
||||
essential: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pt-5',
|
||||
list: [
|
||||
{ text: '프로그램', value: '1' },
|
||||
{ text: '팝업', value: '2' },
|
||||
@ -502,10 +473,11 @@ const myDetail = [
|
||||
essential: true,
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pt-13',
|
||||
value: { '1': true, '0': false },
|
||||
required: true,
|
||||
textCols: 12,
|
||||
labelCols:12,
|
||||
iconShow: true
|
||||
},
|
||||
{
|
||||
@ -514,7 +486,7 @@ const myDetail = [
|
||||
valueNm: 'url',
|
||||
disabled: false,
|
||||
cols: 12,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pt-4',
|
||||
required: true,
|
||||
textCols: 12,
|
||||
iconShow: true
|
||||
@ -525,7 +497,7 @@ const myDetail = [
|
||||
valueNm: 'regUserNo',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pt-5',
|
||||
placeholder: '시스템 자동입력',
|
||||
textCols: 12,
|
||||
iconShow: true
|
||||
@ -536,7 +508,7 @@ const myDetail = [
|
||||
valueNm: 'regDttm',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pt-5',
|
||||
placeholder: '시스템 자동입력',
|
||||
textCols: 12,
|
||||
iconShow: true
|
||||
@ -547,7 +519,7 @@ const myDetail = [
|
||||
valueNm: 'procUserNo',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pt-5',
|
||||
placeholder: '시스템 자동입력',
|
||||
textCols: 12,
|
||||
iconShow: true
|
||||
@ -558,19 +530,10 @@ const myDetail = [
|
||||
valueNm: 'procDttm',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pt-5',
|
||||
placeholder: '시스템 자동입력',
|
||||
textCols: 12,
|
||||
iconShow: true
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
import { getPathDataExample } from '@/const/const'
|
||||
const dataPathDataExample = getPathDataExample({
|
||||
field1: 'PRG0001',
|
||||
field2: '대시보드',
|
||||
field3: '프로그램',
|
||||
field4: '사용'
|
||||
});
|
||||
</script>
|
||||
|
@ -803,7 +803,7 @@ export default {
|
||||
header: "NO",
|
||||
name: "rowNum",
|
||||
width: 70,
|
||||
align: "center",
|
||||
align: "right",
|
||||
// hidden: true,
|
||||
},
|
||||
{
|
||||
|
@ -18,7 +18,7 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents" class="pt-2">
|
||||
<v-col :cols="5" style="height:100%" class="pr-2">
|
||||
<v-col :cols="5" class="pr-2">
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4">효율지표 리스트</v-card-title>
|
||||
@ -33,11 +33,11 @@
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" style="height:100%" class="pl-2">
|
||||
<v-col :cols="7" class="pl-2">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="custom-title-4 pa-4 pb-2">효율지표 상세
|
||||
</v-card-title>
|
||||
<div class="px-4" style="height:calc(100% - 76px)">
|
||||
<div class="px-4" >
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab v-for="item in items" :key="item.id" :disabled="(item.id == 'EffcIdxAddInfoTab'
|
||||
? isInfoTabDisabled
|
||||
@ -162,7 +162,7 @@ import EffcIdxAddInfoTab from '@/components/pages/ems/EffcIdxInfo/EffcIdxAddInfo
|
||||
import Grid from '~/components/common/Grid';
|
||||
import Utility from '~/plugins/utility';
|
||||
import SelectBox from '@/components/common/select/SelectBox';
|
||||
import CheckBox from '~/components/common/checkbox/CheckBox';
|
||||
import CheckBox from '~/components/common/CheckBox';
|
||||
import EqpmCalcPop from '~/components/common/modal/EqpmCalcPop';
|
||||
import TextArea from '@/components/common/form/TextArea';
|
||||
|
||||
@ -214,64 +214,6 @@ export default {
|
||||
},
|
||||
],
|
||||
loadGrid: false,
|
||||
// "effcIdxGrid": {
|
||||
// data: [
|
||||
// {
|
||||
// "effcIdxId": "E001",
|
||||
// "effcIdxNm": "에너지 소비 효율",
|
||||
// "effcKind": "환경"
|
||||
// },
|
||||
// {
|
||||
// "effcIdxId": "E002",
|
||||
// "effcIdxNm": "작업 시간 대비 생산량",
|
||||
// "effcKind": "생산성"
|
||||
// },
|
||||
// {
|
||||
// "effcIdxId": "E003",
|
||||
// "effcIdxNm": "장비 가동률",
|
||||
// "effcKind": "운영"
|
||||
// },
|
||||
// {
|
||||
// "effcIdxId": "E004",
|
||||
// "effcIdxNm": "불량률",
|
||||
// "effcKind": "품질"
|
||||
// },
|
||||
// {
|
||||
// "effcIdxId": "E005",
|
||||
// "effcIdxNm": "재고 회전율",
|
||||
// "effcKind": "물류"
|
||||
// }
|
||||
// ]
|
||||
// ,
|
||||
// column: [
|
||||
// {
|
||||
// header: '효율지표 ID',
|
||||
// name: 'effcIdxId',
|
||||
// align: 'center',
|
||||
// // hidden:true
|
||||
// },
|
||||
// {
|
||||
// header: '효율지표명',
|
||||
// name: 'effcIdxNm',
|
||||
// align: 'left',
|
||||
// minWidth: 150,
|
||||
// // hidden:true
|
||||
// },
|
||||
|
||||
// {
|
||||
// header: '효율지표종류',
|
||||
// name: 'effcKind',
|
||||
// align: 'left',
|
||||
// // hidden: true,
|
||||
// },
|
||||
// // { header: '등록 사용자', name: 'regUserNo', hidden: true },
|
||||
// // { header: '등록 일자', name: 'regDttm', hidden: true },
|
||||
// // { header: '수정 사용자', name: 'procUserNo', hidden: true },
|
||||
// // { header: '수정 일자', name: 'procDttm', hidden: true },
|
||||
// ],
|
||||
|
||||
// }
|
||||
// },
|
||||
initFlag: false,
|
||||
selectValueList01: [],
|
||||
selectValueList02: [],
|
||||
@ -919,7 +861,6 @@ export default {
|
||||
{
|
||||
header: '효율지표 ID',
|
||||
name: 'effcIdxId',
|
||||
align: 'center',
|
||||
// hidden:true
|
||||
},
|
||||
{
|
||||
|
@ -3,7 +3,7 @@
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="2.5">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
@ -12,8 +12,6 @@
|
||||
dataKey="searchLocKind"
|
||||
:sendParam="{ commGrpCd: 'EM_LOC_KIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
@ -24,12 +22,10 @@
|
||||
dataKey="searchEccKind"
|
||||
:sendParam="{ commGrpCd: 'EM_ECC_KIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<!-- 사업장 -->
|
||||
<!-- <v-col :cols="3">
|
||||
사업장
|
||||
<div style="visibility:hidden">
|
||||
<component
|
||||
:is="'SelectBlocMstr'"
|
||||
@ -46,8 +42,6 @@
|
||||
dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
@ -55,14 +49,17 @@
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="공정명"
|
||||
valueNm="eccNm"
|
||||
:labelCols="12"
|
||||
:textCols="12"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:searchOption="true"
|
||||
:iconShow="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
<BtnSearch @click="search" size="large" />
|
||||
<v-col class="text-right">
|
||||
<BtnSearch @click="search" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
|
||||
</v-row>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -79,17 +76,16 @@
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
||||
<div ref="gridParent" class="w100 h100 pb-2">
|
||||
<div class="px-5" style="height:calc(100% - 76px)">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -196,15 +192,13 @@ export default {
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
selectedRowKey: null,
|
||||
// rowSelectionStatus: {},
|
||||
dataPathMock : { },
|
||||
items: [
|
||||
{ name: '공정 정보', id: 'eccBaseInfoTab', disabledFlag: false },
|
||||
{ name: '공정 추가 정보', id: 'eccAddInfoTab', disabledFlag: false },
|
||||
{ name: '공정 연결 정보', id: 'eccIaoTab', disabledFlag: false },
|
||||
],
|
||||
detailList: myDetail,
|
||||
loadGrid: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -320,23 +314,11 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
this.$nextTick(() => {
|
||||
// const checkbox = document.getElementById('headerCheckbox');
|
||||
// if (checkbox) {
|
||||
// checkbox.addEventListener('change', this.handleHeaderCheckboxChange);
|
||||
// }
|
||||
});
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.chkOpenTabList({ key: 'destroy', prgmId: myPrgmId });
|
||||
},
|
||||
methods: {
|
||||
handleHeaderCheckboxChange(event) {
|
||||
const checked = event.target.checked;
|
||||
this.dataPathMock.rowGrid.data.forEach(row => {
|
||||
row.selected = checked;
|
||||
});},
|
||||
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
}),
|
||||
@ -351,41 +333,7 @@ export default {
|
||||
blocId: this.userInfo.blocId,
|
||||
});
|
||||
},
|
||||
gridInitTest() {
|
||||
const rowGrid = {
|
||||
column: [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '공정 정보', name: 'eccNm', align: 'left' },
|
||||
{ header: '현재 상태', name: 'status', align: 'center' },
|
||||
{ header: '공정 유형', name: 'eccKind', align: 'left' },
|
||||
{ header: '사용 여부', name: 'useFg', align: 'center' },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: {
|
||||
...gridOptions,
|
||||
},
|
||||
}
|
||||
this.dataPathMock = {rowGrid};
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
gridInit() {
|
||||
// Test
|
||||
this.gridInitTest(); return;
|
||||
// End test
|
||||
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const gridWidth = this.$refs.gridParent.offsetWidth;
|
||||
|
||||
@ -404,6 +352,17 @@ export default {
|
||||
|
||||
const _this = this;
|
||||
const myColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||
{
|
||||
header: '공정 명',
|
||||
@ -598,16 +557,6 @@ export default {
|
||||
});
|
||||
},
|
||||
async getRowData(data) {
|
||||
|
||||
//Progess and fake radio
|
||||
// const rowKey = data.rowKey;
|
||||
// this.selectedRowKey = rowKey;
|
||||
// Object.keys(this.rowSelectionStatus).forEach(key => {
|
||||
// this.$set(this.rowSelectionStatus, key, false);
|
||||
// });
|
||||
// this.$set(this.rowSelectionStatus, rowKey, true);
|
||||
|
||||
|
||||
this.setEccAddInfo(data);
|
||||
this.setEccIao(data);
|
||||
this.setGridSelectData({
|
||||
@ -623,9 +572,6 @@ export default {
|
||||
rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectData: Object.assign({}, data),
|
||||
});
|
||||
//fake radio need recheck
|
||||
// this.$refs[this.gridName]?.repaint?.();
|
||||
|
||||
},
|
||||
async setEccAddInfo(data) {
|
||||
this.setPageData({
|
||||
@ -1070,142 +1016,4 @@ const myDetail = [
|
||||
value: { '1': true, '0': false },
|
||||
},
|
||||
];
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
eccId: 'ECC000001',
|
||||
eccNm: 'EGP_HVAC_LT_CH001',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000002',
|
||||
eccNm: 'B01',
|
||||
status: '대기',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000005',
|
||||
eccNm: 'B01-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000009',
|
||||
eccNm: 'B01-1-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000010',
|
||||
eccNm: 'B01-1-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000011',
|
||||
eccNm: 'B01-1-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000006',
|
||||
eccNm: 'B01-2',
|
||||
status: '점검중',
|
||||
eccKind: '공정',
|
||||
useFg: '0',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC0000013',
|
||||
eccNm: 'B01-2-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000014',
|
||||
eccNm: 'B01-1-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000015',
|
||||
eccNm: 'B01-1-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000007',
|
||||
eccNm: 'B01-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000009',
|
||||
eccNm: 'B01-3-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000010',
|
||||
eccNm: 'B01-3-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000011',
|
||||
eccNm: 'B01-3-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000003',
|
||||
eccNm: 'B02',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000004',
|
||||
eccNm: 'B03',
|
||||
status: '점검중',
|
||||
eccKind: '공정',
|
||||
useFg: '0',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const gridOptions = {
|
||||
treeColumnOptions: {
|
||||
name: 'eccNm', // Showing tree table
|
||||
useIcon: false, // Not using icon
|
||||
indentWidth: 10,// spacing when showing children
|
||||
},
|
||||
header: {
|
||||
height: 40,
|
||||
},
|
||||
rowHeight: 35,
|
||||
showCheckbox: false,
|
||||
};
|
||||
</script>
|
||||
</script>
|
@ -342,7 +342,6 @@ export default {
|
||||
header: '개소 종류',
|
||||
name: 'plcKind',
|
||||
minWidth: 100,
|
||||
align: 'center',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.plcKindList.filter(
|
||||
@ -392,7 +391,6 @@ export default {
|
||||
header: '사용 여부',
|
||||
name: 'useFg',
|
||||
minWidth: 100,
|
||||
align: 'center',
|
||||
formatter({ value }) {
|
||||
value = value === true ? '1' : '0';
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
|
@ -980,7 +980,7 @@ export default {
|
||||
var columnList = [
|
||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||
{ header: '물리량 ID', name: 'pysclQtyId', hidden: true },
|
||||
{ header: '순번', name: 'argSeq', editor: 'text' },
|
||||
{ header: '순번', name: 'argSeq', editor: 'text', align: 'right' },
|
||||
{ header: '물리량 ID', name: 'argPysclQtyId' },
|
||||
{
|
||||
header: '설비그룹',
|
||||
|
@ -167,7 +167,7 @@ export default {
|
||||
header: '설비종류ID',
|
||||
name: 'eqpmKindId',
|
||||
width: gridWidth * 0.5,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
header: '설비종류명',
|
||||
@ -359,7 +359,7 @@ const myDetail = [
|
||||
label: '설비종류 ID',
|
||||
valueNm: 'eqpmKindId',
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 pt-1',
|
||||
iconShow: true,
|
||||
required: false,
|
||||
readonly: true,
|
||||
@ -373,7 +373,7 @@ const myDetail = [
|
||||
valueNm: 'eqpmKindNm',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 pt-1',
|
||||
iconShow: true,
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
|
@ -461,7 +461,7 @@ const myDetail = [
|
||||
valueNm: 'eqpmGrpId',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 pt-1',
|
||||
required: false,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
@ -474,7 +474,7 @@ const myDetail = [
|
||||
valueNm: 'eqpmGrpNm',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 pt-1',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
|
@ -53,7 +53,7 @@
|
||||
</v-col>
|
||||
<v-col :cols="7" >
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="custom-title-4" style="min-height:76px;">설비 상세</v-card-title>
|
||||
<v-card-title class="custom-title-4 pb-1" >설비 상세</v-card-title>
|
||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab v-for="item in items" :key="item.id" :disabled="item.disabledFlag">
|
||||
@ -382,7 +382,7 @@ export default {
|
||||
header: '사용 여부',
|
||||
name: 'useFg',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
item => item.commCd == value,
|
||||
|
@ -9,7 +9,7 @@
|
||||
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01"
|
||||
:itemList="selectValueList01" :label="'설비종류'" :iconShow="true"
|
||||
@update:propsValue="selectValue01 = $event" :labelCols="12" :textCols="12"
|
||||
:customClass="'select-large'" />
|
||||
:customClass="'select-large'" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<component :is="'SelectBox'" ref="SelectBox2" :propsValue="selectValue02"
|
||||
@ -19,10 +19,11 @@
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<InputText :parentPrgmId="myPrgmId" label="가이드명" :textCols="12" valueNm="gdIdxNm"
|
||||
:searchOption="true" :iconShow="true" :labelCols="12" :customClass="'input-large'"/>
|
||||
:searchOption="true" :iconShow="true" :labelCols="12" :customClass="'input-large'" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="text-right">
|
||||
<a-button icon="search" type="primary" @click="search()" class="search-button" size="large">조회</a-button>
|
||||
<a-button icon="search" type="primary" @click="search()" class="search-button"
|
||||
size="large">조회</a-button>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
@ -38,13 +39,13 @@
|
||||
:btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
<div class="h100 px-4" style="height:calc(100% - 70px)">
|
||||
<div ref="gridParent" style="height: 30%">
|
||||
<div ref="gridParent" style="height: 26%">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||
</div>
|
||||
<div class="d-flex py-4 mt-4" >
|
||||
<div class="d-flex py-4 mt-4">
|
||||
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -326,14 +327,12 @@ export default {
|
||||
header: 'COM ID',
|
||||
name: 'comId',
|
||||
width: 100,
|
||||
aling: 'center',
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
header: '가이드',
|
||||
name: 'gdIdxId',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
header: '가이드명',
|
||||
@ -345,7 +344,6 @@ export default {
|
||||
header: '설비그룹ID',
|
||||
name: 'eqpmGrpId',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
// hidden: true,
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
@ -362,7 +360,6 @@ export default {
|
||||
header: '상위집계방법',
|
||||
name: 'upTotMeth',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
// hidden: true,
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
@ -524,7 +521,7 @@ export default {
|
||||
async getRowGridData() {
|
||||
this.loadGrid = false;
|
||||
let res = [];
|
||||
|
||||
|
||||
res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmGdIdxDataList',
|
||||
resKey: 'eqpmGdIdxDataList',
|
||||
@ -1122,14 +1119,7 @@ const myDetail = [
|
||||
required: true,
|
||||
iconShow: true
|
||||
},
|
||||
// {
|
||||
// // 공백 처리
|
||||
// type: 'Label',
|
||||
// cols: 3,
|
||||
// class: 'py-2',
|
||||
// // label: "* '주의기준값' 또는 '경고기준값' 중 하나는 필수로 입력해 주세요.",
|
||||
// disabled: false,
|
||||
// },
|
||||
|
||||
// {
|
||||
// type: 'CheckBox',
|
||||
// label: '설비기준적용',
|
||||
@ -1195,7 +1185,8 @@ const myDetail = [
|
||||
// required: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true
|
||||
iconShow: true,
|
||||
inputType: 'number',
|
||||
},
|
||||
// {
|
||||
// // 공백 처리
|
||||
@ -1243,7 +1234,15 @@ const myDetail = [
|
||||
{
|
||||
// 공백 처리
|
||||
type: 'Label',
|
||||
cols: 9,
|
||||
cols: 3,
|
||||
class: 'py-2',
|
||||
// label: "* '주의기준값' 또는 '경고기준값' 중 하나는 필수로 입력해 주세요.",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
// 공백 처리
|
||||
type: 'Label',
|
||||
cols: 6,
|
||||
class: 'py-3',
|
||||
// label: "* '주의기준값' 또는 '경고기준값' 중 하나는 필수로 입력해 주세요.",
|
||||
disabled: false,
|
||||
@ -1442,9 +1441,3 @@ const myDetail = [
|
||||
},
|
||||
];
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.searchFilter {
|
||||
border-radius: 6px;
|
||||
box-shadow: none;
|
||||
}
|
||||
</style>
|
||||
|
@ -33,11 +33,11 @@
|
||||
<v-row ref="contents" class="mt-3">
|
||||
<v-col :cols="12" style="height: 100%">
|
||||
<!-- <v-card class="py-5"> -->
|
||||
<v-card style="height: 60%">
|
||||
<v-card style="height: auto;">
|
||||
<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="d-flex align-end justify-space-between px-4 py-2">
|
||||
<div class="d-flex align-end justify-space-between px-4 py-2 pb-4">
|
||||
<v-row :cols="12" class="align-end">
|
||||
<!-- 가이드 및 설비그룹 라인 시작 -->
|
||||
<v-col :cols="3" class="pa-2">
|
||||
@ -116,9 +116,9 @@
|
||||
|
||||
</v-card>
|
||||
|
||||
<v-row style="height: 40%" class="mt-3">
|
||||
<v-col :cols="6" style="height: 100%" class="pr-2">
|
||||
<v-card class="pb-5">
|
||||
<v-row class="mt-3" >
|
||||
<v-col :cols="6" class="pr-2">
|
||||
<v-card >
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4 ">설비상세 리스트</v-card-title>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||
@ -132,8 +132,8 @@
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="6" style="height: 100%" class="pl-2">
|
||||
<v-card class="pb-5">
|
||||
<v-col :cols="6" class="pl-2">
|
||||
<v-card >
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4">설비가이드 기준 정보</v-card-title>
|
||||
</div>
|
||||
|
@ -16,7 +16,8 @@
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<!-- 대상일 -->
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'조회기간'" :textCols="12" />
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'조회기간'" :textCols="12"
|
||||
customClass="datepicker-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||
<BtnExcelDownload class="mr-1" :parentPrgmId="myPrgmId" :gridName="gridName" type="primary"
|
||||
@ -391,6 +392,7 @@ export default {
|
||||
resKey: 'pastRslPageTotal',
|
||||
sendParam: sendParams
|
||||
});
|
||||
|
||||
this.totalCount = res2[0].totalcount;
|
||||
|
||||
this.setGridData({
|
||||
|
@ -43,6 +43,7 @@
|
||||
:is="'Datepicker'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'조회기간'"
|
||||
customClass="datepicker-large"
|
||||
/>
|
||||
</v-col>
|
||||
<div class="d-flex">
|
||||
|
@ -1,61 +1,43 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<!-- 사업장 -->
|
||||
<component
|
||||
:is="'SelectBlocMstr'"
|
||||
ref="SelectBlocMstr"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId"
|
||||
:textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'측정 Data 유형'"
|
||||
dataKey="searchReadDataType"
|
||||
:sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'측정 Data 유형'"
|
||||
dataKey="searchReadDataType" :sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
|
||||
:addAll="true" :textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'SelectReadObj'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'측정대상'"
|
||||
dataKey="searchReadObj"
|
||||
:sendParam="{ useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3" class="text-right">
|
||||
<BtnSearch @click="search" />
|
||||
<component :is="'SelectReadObj'" :parentPrgmId="myPrgmId" :label="'측정대상'"
|
||||
dataKey="searchReadObj" :sendParam="{ useFg: '1' }" :labelCols="12" :textCols="12"
|
||||
:addAll="true" customClass="select-large" />
|
||||
</v-col>
|
||||
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'사용여부'"
|
||||
dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'" dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :textCols="12"
|
||||
customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="TAG명"
|
||||
valueNm="tagNm"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:searchOption="true"
|
||||
/>
|
||||
<v-col :cols="3">
|
||||
<InputText :parentPrgmId="myPrgmId" label="TAG ID" valueNm="tagId" :labelCols="12"
|
||||
:textCols="12" :searchOption="true" customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<InputText :parentPrgmId="myPrgmId" label="TAG명" valueNm="tagNm" :labelCols="12"
|
||||
:textCols="12" :searchOption="true" customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
@ -66,63 +48,33 @@
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex justify-space-between align-end">
|
||||
<span class="tit ft-size_20 ft-weight_600">TAG 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:bindingData="gridName"
|
||||
:detailList="detailList"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||
:btnActionsFnc="btnActions" />
|
||||
</v-card-title>
|
||||
<v-card-actions>
|
||||
<div
|
||||
ref="gridParent"
|
||||
class="w100"
|
||||
style="height: calc(100vh - 360px)"
|
||||
>
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
/>
|
||||
<div ref="gridParent" class="w100" style="height: calc(100vh - 400px)">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
|
||||
</div>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" class="">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>TAG 상세</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 70px)">
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab
|
||||
v-for="item in items"
|
||||
:key="item.id"
|
||||
:disabled="item.disabledFlag"
|
||||
>
|
||||
<v-tab v-for="item in items" :key="item.id" :disabled="item.disabledFlag">
|
||||
{{ item.name }}
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
<v-tabs-items
|
||||
v-model="tab"
|
||||
style="height: calc(100% - 65px);"
|
||||
class="py-6"
|
||||
>
|
||||
<v-tabs-items v-model="tab" style="height: calc(100% - 65px);" class="py-6">
|
||||
<v-tab-item v-for="(item, idx) in items" :key="item.id">
|
||||
<component
|
||||
v-if="item.id == 'tagBaseInfoTab'"
|
||||
:is="'Form'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:detailList="detailList"
|
||||
@gridEditingFinish="gridEditingFinish"
|
||||
/>
|
||||
<TagAddInfoTab
|
||||
v-if="item.id == 'tagAddInfoTab'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }"
|
||||
/>
|
||||
<component v-if="item.id == 'tagBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId"
|
||||
:detailList="detailList" @gridEditingFinish="gridEditingFinish" />
|
||||
<TagAddInfoTab v-if="item.id == 'tagAddInfoTab'" :parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }" />
|
||||
</v-tab-item>
|
||||
</v-tabs-items>
|
||||
</div>
|
||||
@ -134,6 +86,7 @@
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import mixinGlobal from '@/mixin/global.js';
|
||||
import { resize } from '@/mixin/resize.js';
|
||||
import BtnSearch from '~/components/common/button/BtnSearch';
|
||||
import Buttons from '~/components/common/button/Buttons';
|
||||
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
|
||||
@ -149,7 +102,7 @@ let myTitle;
|
||||
// const myPrgmId = "PRG0051";
|
||||
let myPrgmId;
|
||||
export default {
|
||||
mixins: [mixinGlobal],
|
||||
mixins: [mixinGlobal, resize],
|
||||
async asyncData(context) {
|
||||
const myState = context.store.state;
|
||||
// context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
|
||||
@ -219,15 +172,19 @@ export default {
|
||||
},
|
||||
chkBlocId() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkReadDataType() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkReadObj() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkUseFg() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
},
|
||||
async beforeCreate() {
|
||||
@ -297,12 +254,16 @@ export default {
|
||||
this.gridInit();
|
||||
},
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 16;
|
||||
|
||||
const myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
scrollX: true,
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -316,21 +277,21 @@ export default {
|
||||
header: 'TAG ID',
|
||||
name: 'tagId',
|
||||
width: 'auto',
|
||||
minWidth: 280,
|
||||
minWidth: 340,
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
header: 'TAG 명',
|
||||
name: 'tagNm',
|
||||
width: 'auto',
|
||||
minWidth: 140,
|
||||
minWidth: 220,
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
header: '측정 값 유형',
|
||||
name: 'readDataTypeCd',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
width: 90,
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.readDataTypeCdList.filter(
|
||||
@ -346,7 +307,7 @@ export default {
|
||||
header: '측정대상',
|
||||
name: 'readObjId',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.readObjList.filter(
|
||||
@ -363,7 +324,7 @@ export default {
|
||||
header: '단위',
|
||||
name: 'unitCd',
|
||||
width: 80,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.unitCdList.filter(
|
||||
@ -493,6 +454,7 @@ export default {
|
||||
readObjId: this.pageData.searchReadObj,
|
||||
useFg: this.pageData.useFg,
|
||||
tagNmLike: this.pageData.tagNm,
|
||||
tagIdLike: this.pageData.tagId,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
@ -751,7 +713,8 @@ export default {
|
||||
});
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.setPageData({ isFind: true });
|
||||
this.search();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
@ -818,6 +781,7 @@ function isValidAlrmVal(obj) {
|
||||
|
||||
const defaultData = {
|
||||
/* 검색옵션 */
|
||||
tagId: '',
|
||||
tagNm: '',
|
||||
blocId: '',
|
||||
blocMstrList: [],
|
||||
@ -907,30 +871,39 @@ const myDetail = [
|
||||
label: 'TAG ID',
|
||||
valueNm: 'tagId',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4',
|
||||
required: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
label: 'TAG 명',
|
||||
valueNm: 'tagNm',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4',
|
||||
required: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
label: '측정 값 유형',
|
||||
valueNm: 'readDataTypeCd',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
list: 'readDataTypeCdList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -938,11 +911,14 @@ const myDetail = [
|
||||
valueNm: 'readObjId',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
list: 'readObjList',
|
||||
itemText: 'readObjNm',
|
||||
itemValue: 'readObjId',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -950,8 +926,11 @@ const myDetail = [
|
||||
valueNm: 'mgnf',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -959,10 +938,13 @@ const myDetail = [
|
||||
valueNm: 'unitCd',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
list: 'unitCdList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -970,7 +952,10 @@ const myDetail = [
|
||||
valueNm: 'rangMin',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -978,7 +963,10 @@ const myDetail = [
|
||||
valueNm: 'rangMax',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -986,7 +974,10 @@ const myDetail = [
|
||||
valueNm: 'alrmHihi',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -994,7 +985,10 @@ const myDetail = [
|
||||
valueNm: 'alrmHi',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -1002,7 +996,10 @@ const myDetail = [
|
||||
valueNm: 'alrmLo',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -1010,7 +1007,10 @@ const myDetail = [
|
||||
valueNm: 'alrmLolo',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'CheckBox',
|
||||
@ -1018,8 +1018,11 @@ const myDetail = [
|
||||
valueNm: 'totFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
value: { '1': true, '0': false },
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'CheckBox',
|
||||
@ -1027,9 +1030,12 @@ const myDetail = [
|
||||
valueNm: 'useFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
value: { '1': true, '0': false },
|
||||
required: false,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -1056,4 +1062,4 @@ const myDetail = [
|
||||
class: 'py-2',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
</script>
|
@ -69,7 +69,7 @@
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" class="">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>TAG 상세</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 70px)">
|
||||
|
@ -27,7 +27,7 @@
|
||||
</v-col>
|
||||
<v-col class="text-right d-flex align-end align-self-end justify-end">
|
||||
<a-button @click="jamoviClickEvent('view')" type="primary" :ripple="false" class="mr-1"
|
||||
depressed size="large">Jamovi</a-button>
|
||||
depressed size="large">JAMOVI</a-button>
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -283,7 +283,7 @@ export default {
|
||||
{
|
||||
header: '모델링 DataSet ID',
|
||||
name: 'dataSetId',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
width: 180,
|
||||
},
|
||||
{
|
||||
|
@ -49,7 +49,7 @@
|
||||
<v-col :cols="3">
|
||||
<!-- 대상일 -->
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="12"
|
||||
:textCols="12" :customClass="'input-large'" />
|
||||
:textCols="12" :customClass="'datepicker-large'" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="text-right">
|
||||
<!-- 조회버튼 -->
|
||||
|
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -25,7 +26,7 @@
|
||||
<component
|
||||
:is="'Datepicker'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:customClass="'select-large'"
|
||||
:customClass="'datepicker-large'"
|
||||
:label="'대상일'"
|
||||
:labelCols="3"
|
||||
/>
|
||||
@ -99,7 +100,6 @@ export default {
|
||||
async asyncData(context) {
|
||||
const myState = context.store.state;
|
||||
myPrgmId = context.route.query.prgmId;
|
||||
console.log("active menu:", myState.menuData);
|
||||
await context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
|
||||
myTitle = await myState.activeMenuInfo.menuNm;
|
||||
},
|
||||
@ -319,8 +319,7 @@ export default {
|
||||
},
|
||||
};
|
||||
|
||||
console.log("data : ", data);
|
||||
data.map((item) => {
|
||||
data.map((item) => {
|
||||
xAxisData.push(item.fabNm);
|
||||
});
|
||||
|
||||
@ -374,8 +373,6 @@ export default {
|
||||
];
|
||||
}
|
||||
|
||||
// console.log("xAxisData : ", xAxisData);
|
||||
console.log("seriesData : ", seriesData);
|
||||
var chartOption = {
|
||||
legend: {
|
||||
top: xAxisData.length > 7 ? "top" : "bottom",
|
||||
|
@ -5,14 +5,14 @@
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="4">
|
||||
<v-col :cols="3">
|
||||
<!-- 차트목록 -->
|
||||
<component :is="'SelectBox'" ref="SelectBox" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||
:label="'차트'" @update:propsValue="selectValue01 = $event" :textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="4">
|
||||
<v-col :cols="3">
|
||||
<!-- 대상일 -->
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="3" />
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="3" customClass="datepicker-large" />
|
||||
</v-col>
|
||||
<v-col :cols="4" class="text-right">
|
||||
<BtnSearch @click="search" size="large" />
|
||||
|
@ -21,22 +21,21 @@
|
||||
:itemList="selectValueList03" :label="'FAB'" :multiple="fabMultiple"
|
||||
@update:propsValue="selectValue03 = $event" :labelCols="12" :textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<!-- 효율지표 -->
|
||||
<component ref="effcIdxSelect" :is="'SelectBoxMulti'" :propsValue="selectValue04"
|
||||
:itemList="selectValueList04" :label="'효율지표'" :multiple="effcIdxMultiple"
|
||||
@update:propsValue="selectValue04 = $event" :labelCols="12" :textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<!-- 대상일 -->
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="3" />
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="3" customClass="datepicker-large" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="text-right d-flex align-end justify-end align-self-end">
|
||||
<v-col :cols="6.5" class="text-right d-flex align-end justify-end align-self-end">
|
||||
<!-- 조회버튼 -->
|
||||
<a-button type="primary" class="d-inline-flex-1 mr-1" size="large" @click="createExcel()">엑셀</a-button>
|
||||
<a-button icon="file-excel" class="d-inline-flex-1 mr-1" size="large" @click="createExcel()">엑셀</a-button>
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -62,15 +61,23 @@
|
||||
<v-col :cols="3">
|
||||
<v-card-title class="pa-0">설비별 효율지표 Trend</v-card-title>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="5"></v-col> -->
|
||||
<v-col :cols="4" class="d-flex justify-space-end" >
|
||||
<component class="text-right mr-2" ref="EqpmSelectPop" :is="'EqpmSelectPop'" :label="''" :labelCols="1"
|
||||
:textCols="12" :valueNm="'eqpmId'" :parentPrgmId="myPrgmId" :eqpmGrpDisabled="true"
|
||||
:fabDisabled="true" :isMulti="true" />
|
||||
<component
|
||||
class="text-right mr-2"
|
||||
ref="EqpmSelectPop"
|
||||
label=""
|
||||
placeholder="설비..."
|
||||
is="EqpmSelectPop"
|
||||
valueNm="eqpmId"
|
||||
:textCols="12"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:eqpmGrpDisabled="true"
|
||||
:fabDisabled="true"
|
||||
:iconShow="false"
|
||||
:isMulti="true"
|
||||
/>
|
||||
<a-button @click="getEqpmData()" type="primary" >조회</a-button>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="1">
|
||||
</v-col> -->
|
||||
</v-row>
|
||||
</div>
|
||||
<div ref="chartParent" style="height: 100%">
|
||||
@ -99,6 +106,8 @@ import EqpmSelectPop from '~/components/common/modal/EqpmSelectPop';
|
||||
import DateUtility from '~/plugins/dateUtility';
|
||||
import XLSX from 'xlsx';
|
||||
|
||||
import getLineChartOption from "~/components/common/chartoptions/LineChart";
|
||||
|
||||
let myTitle;
|
||||
let myPrgmId;
|
||||
|
||||
@ -314,6 +323,7 @@ export default {
|
||||
legend: {
|
||||
icon: 'circle',
|
||||
top: 'top',
|
||||
size: '8'
|
||||
},
|
||||
grid: {
|
||||
top: '10%',
|
||||
@ -764,22 +774,14 @@ export default {
|
||||
];
|
||||
}
|
||||
|
||||
var chartOption = {
|
||||
legend: {
|
||||
top: 'top',
|
||||
},
|
||||
grid: {
|
||||
top: '10%',
|
||||
bottom: '20%',
|
||||
},
|
||||
yAxis: {},
|
||||
xAxis: {
|
||||
data: xAxisData,
|
||||
},
|
||||
series: seriesData,
|
||||
tooltip: {},
|
||||
const chartOption = getLineChartOption({
|
||||
xAxisData: xAxisData,
|
||||
seriesData: seriesData,
|
||||
dataZoom: dataZoom,
|
||||
};
|
||||
// legendData: legendData,
|
||||
// isDarkMode: this.isDarkMode,
|
||||
});
|
||||
|
||||
this.setChartOption({ chartKey: this.chartName01, value: chartOption });
|
||||
// this.setChartYAxisData({ chartKey: this.chartName01, value: yAxisData });
|
||||
// this.setChartXAxisData({ chartKey: this.chartName01, value: xAxisData });
|
||||
@ -864,22 +866,13 @@ export default {
|
||||
];
|
||||
}
|
||||
|
||||
var chartOption = {
|
||||
legend: {
|
||||
top: 'top',
|
||||
},
|
||||
grid: {
|
||||
top: '10%',
|
||||
bottom: '20%',
|
||||
},
|
||||
yAxis: {},
|
||||
xAxis: {
|
||||
data: xAxisData,
|
||||
},
|
||||
series: seriesData,
|
||||
tooltip: {},
|
||||
const chartOption = getLineChartOption({
|
||||
xAxisData: xAxisData,
|
||||
seriesData: seriesData,
|
||||
dataZoom: dataZoom,
|
||||
};
|
||||
// legendData: legendData,
|
||||
// isDarkMode: this.isDarkMode,
|
||||
});
|
||||
|
||||
this.setChartOption({ chartKey: this.chartName02, value: chartOption });
|
||||
// this.setChartDataZoom({chartKey : this.chartName02,value: dataZoom});
|
||||
|
@ -97,7 +97,7 @@
|
||||
</v-row>
|
||||
<v-row ref="contents" style="height: calc(100vh - 230px)">
|
||||
<v-col :cols="12" style="height: 100%">
|
||||
<v-row class="pa-1" style="height: 37%; width: 100%">
|
||||
<v-row class="pa-1" style="height: 50%; width: 100%">
|
||||
<div style="width: 100%; height: 100%; overflow: hidden">
|
||||
<div style="height: 15%">
|
||||
<v-card-title
|
||||
@ -117,7 +117,7 @@
|
||||
v-for="(value, key, index) in contentData01"
|
||||
:key="'key1' + index"
|
||||
>
|
||||
<v-card>
|
||||
<v-card style="position: relative; overflow: hidden;" >
|
||||
<!-- Card header -->
|
||||
<div
|
||||
style="
|
||||
@ -133,23 +133,9 @@
|
||||
<v-card-title style="padding-left: 10px">{{
|
||||
value["gdIdxNm"]
|
||||
}}</v-card-title>
|
||||
<div class="v-box" style="height: 80%; padding: 3px; margin: 2px">
|
||||
<v-col :cols="12" style="height: 100%">
|
||||
<!-- <div style="height: 20%">
|
||||
<div
|
||||
style="
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 10px;
|
||||
width: 4px;
|
||||
height: 50px;
|
||||
background-color: #91caff;
|
||||
border-radius: 2px;
|
||||
"
|
||||
></div>
|
||||
<v-card-title>{{ value["gdIdxNm"] }}</v-card-title>
|
||||
</div> -->
|
||||
<div style="height: 95%">
|
||||
<div class="v-box" style="height: 80%; padding: 3px; margin: 10px;">
|
||||
<v-col :cols="12" style="height: 100%;">
|
||||
<div style="height: 85%;">
|
||||
<component
|
||||
class="w100 h100"
|
||||
:is="loadChart ? 'Chart' : null"
|
||||
@ -166,7 +152,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</v-row>
|
||||
<v-row class="pa-1" style="height: 33%; width: 100%">
|
||||
<v-row class="pa-1" style="height: 40%; width: 100%">
|
||||
<v-card class="pa-1" style="height: 100%; width: 100%; overflow: hidden">
|
||||
<div style="height: 25%">
|
||||
<v-card-title class="d-flex align-center justify-space-between pa-5">
|
||||
@ -746,10 +732,12 @@ export default {
|
||||
{
|
||||
type: "line",
|
||||
data: seriesData,
|
||||
symbol: "none",
|
||||
itemStyle: {
|
||||
color: "#D32029",
|
||||
},
|
||||
// symbol: "circle",
|
||||
showSymbol: true,
|
||||
connectNulls: true,
|
||||
},
|
||||
// {
|
||||
// type: "line",
|
||||
|
@ -6,34 +6,34 @@
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="2.5">
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연도'" />
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연도'" customClass="datepicker-large"/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||
:label="'FAB'" @update:propsValue="selectValue01 = $event" :iconShow="false" customClass="select-large" />
|
||||
:label="'FAB'" @update:propsValue="selectValue01 = $event" :iconShow="true" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<component :is="'SelectBox'" ref="SelectBox2" :propsValue="selectValue02" :itemList="selectValueList02"
|
||||
:label="'설비종류'" @update:propsValue="selectValue02 = $event" :iconShow="false" customClass="select-large"/>
|
||||
:label="'설비종류'" @update:propsValue="selectValue02 = $event" :iconShow="true" customClass="select-large"/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<component :is="'SelectBox'" ref="SelectBox3" :propsValue="selectValue03" :itemList="selectValueList03"
|
||||
:label="'설비그룹'" @update:propsValue="selectValue03 = $event" :iconShow="false" customClass="select-large" />
|
||||
:label="'설비그룹'" @update:propsValue="selectValue03 = $event" :iconShow="true" customClass="select-large" />
|
||||
</v-col>
|
||||
|
||||
<BtnSearch size="large" @click="search" />
|
||||
<!-- <v-col>
|
||||
</v-col> -->
|
||||
<component ref="EnrgUsePlanModiPop" :is="'EnrgUsePlanModiPop'" :label="'test'" :parentPrgmId="myPrgmId"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
</v-row>
|
||||
<component ref="EnrgUsePlanModiPop" :is="'EnrgUsePlanModiPop'" :label="'test'" :parentPrgmId="myPrgmId"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents">
|
||||
<v-col :cols="12" >
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<div class="d-flex align-center justify-space-between py-4 px-4">
|
||||
<v-card-title class="pa-0 custom-title-4">설비별 에너지 계획 리스트</v-card-title>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
@ -44,8 +44,6 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@ -106,9 +104,6 @@ export default {
|
||||
fromDt: new Date().getFullYear(),
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
dataPathMock: {
|
||||
// "grid01": {}
|
||||
},
|
||||
// gridName: 'rowGrid',
|
||||
};
|
||||
},
|
||||
@ -166,12 +161,8 @@ export default {
|
||||
defaultData: defaultData,
|
||||
});
|
||||
},
|
||||
created() { },
|
||||
created() {},
|
||||
async mounted() {
|
||||
// -------
|
||||
// this.initTest();
|
||||
// return;
|
||||
// ========End test===========
|
||||
await this.init();
|
||||
this.initedFlag = true;
|
||||
},
|
||||
@ -184,122 +175,6 @@ export default {
|
||||
getBlocMstrList: 'modules/search/getBlocMstrList',
|
||||
getAddInfoList: 'modules/search/getAddInfoList',
|
||||
}),
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
}),
|
||||
initTest() {
|
||||
let _this = this;
|
||||
// _this.setPageData({ popupDialogFg: true });
|
||||
|
||||
class MockCustumButton {
|
||||
constructor(props) {
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
const value = columnInfo.renderer.options.value;
|
||||
|
||||
const elDiv = document.createElement('div');
|
||||
elDiv.innerHTML = `<span>${value}</span>`;
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el = document.createElement('button');
|
||||
$(el).addClass('edit-btn blue--text');
|
||||
el.innerText = 'Edit';
|
||||
|
||||
el.addEventListener('click', function (event) {
|
||||
// console.log("------DEBUG----_this:", _this);
|
||||
// _this.setPageData({ eqpmNm: selectedGridData[0]?.eqpmNm });
|
||||
_this.setPageData({ popupDialogFg: true });
|
||||
});
|
||||
|
||||
elDiv.appendChild(el);
|
||||
this.elDiv = elDiv;
|
||||
}
|
||||
|
||||
getElement() {
|
||||
return this.elDiv;
|
||||
}
|
||||
}
|
||||
const mockData = {
|
||||
column: [
|
||||
{ header: 'No', name: 'rowNum', align: 'center', width: 40 },
|
||||
{ header: 'FAB', name: 'fab', align: 'left', width: 80 },
|
||||
{ header: '설비 그룹', name: 'eqpmGrpNm', align: 'left', minWidth: 150 },
|
||||
// {
|
||||
// header: '설비명', name: 'eqpmNm', align: 'left', minWidth: 150,
|
||||
// formatter: ({ value, row }) => {
|
||||
// return `
|
||||
// <div class="d-flex justify-space-between">
|
||||
// <span>${value}</span>
|
||||
// <button class="edit-btn blue--text" data-row='${JSON.stringify(row)}'>Edit</button
|
||||
// </div>
|
||||
// `;
|
||||
// }
|
||||
// },
|
||||
{
|
||||
header: '설비명',
|
||||
name: 'eqpmNm',
|
||||
width: 70,
|
||||
align: 'left',
|
||||
minWidth: 150,
|
||||
renderer: {
|
||||
type: MockCustumButton,
|
||||
options: {
|
||||
value: '계획수정',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
header: '구분', name: 'gubun', align: 'left', width: 80,
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
if (value == '1RSLT') {
|
||||
retVal = '전년실적';
|
||||
} else if (value == '2PLAN') {
|
||||
retVal = '계획';
|
||||
} else {
|
||||
retVal = value;
|
||||
}
|
||||
return retVal;
|
||||
},
|
||||
},
|
||||
|
||||
{ header: '1월', name: 'jan', align: 'right', width: 80 },
|
||||
{ header: '2월', name: 'feb', align: 'right', width: 80 },
|
||||
{ header: '3월', name: 'mar', align: 'right', width: 80 },
|
||||
{ header: '4월', name: 'apr', align: 'right', width: 80 },
|
||||
{ header: '5월', name: 'may', align: 'right', width: 80 },
|
||||
{ header: '6월', name: 'jun', align: 'right', width: 80 },
|
||||
{ header: '7월', name: 'jul', align: 'right', width: 80 },
|
||||
{ header: '8월', name: 'aug', align: 'right', width: 80 },
|
||||
{ header: '9월', name: 'sep', align: 'right', width: 80 },
|
||||
{ header: '10월', name: 'oct', align: 'right', width: 80 },
|
||||
{ header: '11월', name: 'nov', align: 'right', width: 80 },
|
||||
{ header: '12월', name: 'dec', align: 'right', width: 80 }
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 65,
|
||||
complexColumns: [
|
||||
{
|
||||
header: '2025 년',
|
||||
name: 'yyyyCol',
|
||||
childNames: [
|
||||
'jan', 'feb', 'mar', 'apr', 'may', 'jun',
|
||||
'jul', 'aug', 'sep', 'oct', 'nov', 'dec'
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
||||
};
|
||||
this.dataPathMock[this.gridName] = mockData;
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
async init() {
|
||||
await this.getFab();
|
||||
await this.getEqpmKind();
|
||||
@ -416,7 +291,7 @@ export default {
|
||||
},
|
||||
};
|
||||
|
||||
class CustumButton {
|
||||
class CustomButton {
|
||||
constructor(props) {
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
|
||||
@ -429,14 +304,14 @@ export default {
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el2 = document.createElement('button');
|
||||
$(el2).addClass('edit-btn blue--text');
|
||||
el2.innerText = 'Edit';
|
||||
el2.innerText = '편집하다';
|
||||
elDiv.appendChild(el2);
|
||||
|
||||
this.el = elDiv;
|
||||
|
||||
if (!this.disabled) {
|
||||
// click 이벤트
|
||||
el2.addEventListener('click', function (event) {
|
||||
this.el.addEventListener('click', function(event) {
|
||||
let gridData = grid.store.data.rawData;
|
||||
let rowNum = gridData[rowKey].rowNum;
|
||||
let selectedGridData = gridData.filter(item => {
|
||||
@ -477,7 +352,7 @@ export default {
|
||||
header: 'NO',
|
||||
name: 'rowNum',
|
||||
width: 40,
|
||||
align: 'center',
|
||||
align: 'right',
|
||||
// hidden: true,
|
||||
},
|
||||
{
|
||||
@ -514,7 +389,7 @@ export default {
|
||||
// `;
|
||||
// }
|
||||
renderer: {
|
||||
type: CustumButton,
|
||||
type: CustomButton,
|
||||
options: {
|
||||
value: '계획수정',
|
||||
},
|
||||
@ -527,7 +402,7 @@ export default {
|
||||
align: 'center',
|
||||
hidden: true,
|
||||
renderer: {
|
||||
type: CustumButton,
|
||||
type: CustomButton,
|
||||
options: {
|
||||
value: '계획수정',
|
||||
},
|
||||
@ -600,7 +475,7 @@ export default {
|
||||
let selectedGridData = gridData.filter(item => {
|
||||
return item.rowNum == data.rowNum;
|
||||
});
|
||||
await this.$nextTick(() => { });
|
||||
await this.$nextTick(() => {});
|
||||
this.setPageData({
|
||||
rowGrid2SelectData: selectedGridData,
|
||||
});
|
||||
@ -799,8 +674,8 @@ export default {
|
||||
dataArr[i][qty] == ''
|
||||
? null
|
||||
: parseInt(dataArr[i][qty]) == 0
|
||||
? 0
|
||||
: dataArr[i][qty];
|
||||
? 0
|
||||
: dataArr[i][qty];
|
||||
dataList.push(temp);
|
||||
}
|
||||
}
|
||||
@ -942,110 +817,18 @@ const defaultData = {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
rowNum: 1,
|
||||
fab: 'B01',
|
||||
eqpmGrpNm: '방송기술운',
|
||||
eqpmNm: 'U/T_LT_CH101',
|
||||
gubun: '전력량',
|
||||
jan: 110000,
|
||||
feb: 112000,
|
||||
mar: 115000,
|
||||
apr: 117000,
|
||||
may: 120000,
|
||||
jun: 118000,
|
||||
jul: 119000,
|
||||
aug: 121000,
|
||||
sep: 122000,
|
||||
oct: 123000,
|
||||
nov: 124000,
|
||||
dec: 125000
|
||||
},
|
||||
{
|
||||
rowNum: 2,
|
||||
fab: 'B02',
|
||||
eqpmGrpNm: '방송기술운',
|
||||
eqpmNm: 'U/T_LT_CH102',
|
||||
gubun: '전력량',
|
||||
jan: 81000,
|
||||
feb: 82000,
|
||||
mar: 83000,
|
||||
apr: 84000,
|
||||
may: 85000,
|
||||
jun: 86000,
|
||||
jul: 87000,
|
||||
aug: 88000,
|
||||
sep: 89000,
|
||||
oct: 90000,
|
||||
nov: 91000,
|
||||
dec: 92000
|
||||
},
|
||||
{
|
||||
rowNum: 3, fab: 'C01', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH124', gubun: '수도량',
|
||||
jan: 106178, feb: 104740, mar: 92283, apr: 116081, may: 98945, jun: 126579,
|
||||
jul: 90690, aug: 124243, sep: 97524, oct: 84072, nov: 88160, dec: 118183
|
||||
},
|
||||
{
|
||||
rowNum: 4, fab: 'B01', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH103', gubun: '가스량',
|
||||
jan: 80442, feb: 102867, mar: 114939, apr: 106335, may: 81743, jun: 83711,
|
||||
jul: 86114, aug: 97432, sep: 84146, oct: 84775, nov: 117921, dec: 119417
|
||||
},
|
||||
{
|
||||
rowNum: 5, fab: 'B01', eqpmGrpNm: '설비운영팀', eqpmNm: 'U/T_LT_CH156', gubun: '전력량',
|
||||
jan: 90341, feb: 94072, mar: 122754, apr: 85471, may: 90813, jun: 116831,
|
||||
jul: 90856, aug: 109437, sep: 94029, oct: 96075, nov: 127067, dec: 102503
|
||||
},
|
||||
{
|
||||
rowNum: 6, fab: 'B03', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH183', gubun: '가스량',
|
||||
jan: 104163, feb: 107012, mar: 104631, apr: 83055, may: 106311, jun: 117306,
|
||||
jul: 86434, aug: 117087, sep: 118414, oct: 91499, nov: 93829, dec: 94192
|
||||
},
|
||||
{
|
||||
rowNum: 7, fab: 'C01', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH158', gubun: '가스량',
|
||||
jan: 84821, feb: 128234, mar: 116883, apr: 116718, may: 114738, jun: 88297,
|
||||
jul: 93840, aug: 84700, sep: 98360, oct: 87021, nov: 113098, dec: 94734
|
||||
},
|
||||
{
|
||||
rowNum: 8, fab: 'B02', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH179', gubun: '가스량',
|
||||
jan: 128714, feb: 88797, mar: 124808, apr: 109283, may: 113141, jun: 82873,
|
||||
jul: 114993, aug: 129108, sep: 100885, oct: 125730, nov: 92127, dec: 122286
|
||||
},
|
||||
{
|
||||
rowNum: 9, fab: 'C01', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH191', gubun: '전력량',
|
||||
jan: 107258, feb: 108424, mar: 113604, apr: 116648, may: 124149, jun: 129978,
|
||||
jul: 112215, aug: 129602, sep: 93551, oct: 111272, nov: 89736, dec: 128423
|
||||
},
|
||||
{
|
||||
rowNum: 10, fab: 'B02', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH104', gubun: '전력량',
|
||||
jan: 82089, feb: 102793, mar: 96784, apr: 85238, may: 86153, jun: 123849,
|
||||
jul: 115095, aug: 129484, sep: 102109, oct: 80976, nov: 119841, dec: 106309
|
||||
},
|
||||
{
|
||||
rowNum: 11, fab: 'C02', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH139', gubun: '전력량',
|
||||
jan: 128592, feb: 95647, mar: 85982, apr: 126824, may: 87928, jun: 128967,
|
||||
jul: 94637, aug: 107530, sep: 122533, oct: 97546, nov: 112110, dec: 126250
|
||||
},
|
||||
{
|
||||
rowNum: 12, fab: 'C01', eqpmGrpNm: '설비운영팀', eqpmNm: 'U/T_LT_CH109', gubun: '전력량',
|
||||
jan: 106530, feb: 91716, mar: 111104, apr: 102663, may: 108912, jun: 91464,
|
||||
jul: 121245, aug: 90785, sep: 120586, oct: 105718, nov: 96191, dec: 111513
|
||||
}
|
||||
];
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
// @import '@/assets/scss/common.scss';
|
||||
@import '@/assets/scss/var.scss';
|
||||
|
||||
@each $theme in dark, light {
|
||||
.v-application.#{$theme}-mode {
|
||||
.tui-grid {
|
||||
|
||||
&-row-odd,
|
||||
&-row-even {
|
||||
&:hover>.colrowspan {
|
||||
background-color: map-deep-get($config,
|
||||
&:hover > .colrowspan {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
'tui-grid-cell-backgroundColor'
|
||||
) !important;
|
||||
@ -1055,10 +838,10 @@ const dataPathDataExample = [
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-cell {
|
||||
&.row-selected.colrowspan {
|
||||
background-color: map-deep-get($config,
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
'tui-grid-cell-backgroundColor'
|
||||
) !important;
|
||||
|
@ -24,6 +24,7 @@
|
||||
:is="'DatePicker'"
|
||||
:label="'대상연월'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:customClass="'datepicker-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3"> </v-col>
|
||||
@ -429,9 +430,6 @@ export default {
|
||||
var chartKey = null;
|
||||
var chartOption = null;
|
||||
|
||||
console.log("data key:", dataKeyList);
|
||||
console.log("data test:", data);
|
||||
|
||||
for (var i = 0; i < dataKeyList.length; i++) {
|
||||
for (var j = 0; j < data[dataKeyList[i]].chartData.length; j++) {
|
||||
currentChartData = data[dataKeyList[i]].chartData[j];
|
||||
|
@ -71,6 +71,7 @@
|
||||
:label="'대상년월'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:isRangeOption="false"
|
||||
:customClass="'datepicker-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="6"> </v-col>
|
||||
@ -103,7 +104,6 @@
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@dblClick="gridDoubleClickEvent"
|
||||
/>
|
||||
<!--
|
||||
<component
|
||||
@ -142,7 +142,6 @@ import SelectBox from "@/components/common/select/SelectBox";
|
||||
import SelectCmCycle from "@/components/common/select/SelectCmCycle";
|
||||
import DatePicker from "@/components/common/Datepicker";
|
||||
import Grid from "~/components/common/Grid";
|
||||
import PageTitle from "@/components/common/PageTitle";
|
||||
|
||||
let myTitle;
|
||||
let myPrgmId;
|
||||
@ -169,7 +168,6 @@ export default {
|
||||
SelectCmCycle,
|
||||
DatePicker,
|
||||
Grid,
|
||||
PageTitle,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -203,6 +201,7 @@ export default {
|
||||
computed: {
|
||||
...mapState({
|
||||
pageData: (state) => state.pageData[myPrgmId],
|
||||
isDarkMode: "isDarkMode",
|
||||
}),
|
||||
fromDt() {
|
||||
return this.pageData.fromDt;
|
||||
@ -236,6 +235,16 @@ export default {
|
||||
await this.search();
|
||||
}
|
||||
},
|
||||
isDarkMode(newVal) {
|
||||
// Switch mode for 10 tooltips
|
||||
for (let i = 0; i < 10; i++) {
|
||||
const tooltipEl = document.getElementById(`tooltipElement_${i}`);
|
||||
if (tooltipEl) {
|
||||
tooltipEl.classList.remove("light-mode", "dark-mode");
|
||||
tooltipEl.classList.add(newVal ? "dark-mode" : "light-mode");
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
async beforeCreate() {
|
||||
myPrgmId = this.$route.query.prgmId;
|
||||
@ -356,13 +365,79 @@ export default {
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const _this = this;
|
||||
// Define custom button
|
||||
class CustomButton {
|
||||
constructor(props,pageData) {
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
const gridData = grid.store.data.rawData;
|
||||
const value = gridData[rowKey][columnInfo.name];
|
||||
const onClickCallback = columnInfo.renderer.options.onClick;
|
||||
|
||||
this.disabled = columnInfo.renderer.options.disabled || false;
|
||||
const elDiv = document.createElement('div');
|
||||
elDiv.innerHTML = `<span>${value}</span>`;
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el2 = document.createElement('button');
|
||||
$(el2).addClass('edit-btn blue--text');
|
||||
el2.innerText = '보기';
|
||||
elDiv.appendChild(el2);
|
||||
this.el = elDiv;
|
||||
if (!this.disabled && typeof onClickCallback === 'function') {
|
||||
// click 이벤트
|
||||
this.el.addEventListener('click', function(event) {
|
||||
onClickCallback(rowKey);
|
||||
});
|
||||
}
|
||||
}
|
||||
getElement() {
|
||||
return this.el;
|
||||
}
|
||||
getValue() {
|
||||
// return this.el.value;
|
||||
}
|
||||
mounted() {
|
||||
// this.el.focus();
|
||||
}
|
||||
}
|
||||
|
||||
var columnList = [
|
||||
{ header: "NO", name: "no", align: "right", width: 80 },
|
||||
{ header: "fabId", name: "fabId", hidden: true },
|
||||
{ header: "FAB", name: "fabNm", align: "left" },
|
||||
{ header: "eqpmGrpId", name: "eqpmGrpId", hidden: true },
|
||||
{ header: "설비그룹", name: "eqpmGrpNm", align: "left", width: 200 },
|
||||
{ header: "설비그룹", name: "eqpmGrpNm", align: "left", width: 200,
|
||||
// Render custom button to switch page instead of double click on row
|
||||
renderer: {
|
||||
type: CustomButton,
|
||||
options: {
|
||||
value: '보기',
|
||||
onClick: (rowKey) => {
|
||||
const gridInstance = this.$refs[this.gridName].gridInstance;
|
||||
const eventRowData = gridInstance.invoke("getRow", rowKey);
|
||||
|
||||
const data = {
|
||||
cmCycle: this.pageData.cmCycle,
|
||||
fromDt: this.pageData.fromDt,
|
||||
fabId: this.selectValue01,
|
||||
eqpmKindId: this.selectValue02,
|
||||
eqpmGrpId: this.selectValue03,
|
||||
eqpmId: eventRowData.eqpmId,
|
||||
};
|
||||
const key = "tick_" + Math.random();
|
||||
this.$router.push({
|
||||
name: "ems-effc-EnrgUseEqpmDetlMntrPage",
|
||||
query: {
|
||||
prgmId: "PRG0082",
|
||||
},
|
||||
params: {
|
||||
...data,
|
||||
key: key,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{ header: "eqpmId", name: "eqpmId", hidden: true },
|
||||
{ header: "설비명", name: "eqpmNm", align: "left", width: 200 },
|
||||
{
|
||||
@ -471,6 +546,10 @@ export default {
|
||||
},
|
||||
],
|
||||
},
|
||||
pageOptions: {
|
||||
useClient: true,
|
||||
perPage: 3,
|
||||
}
|
||||
};
|
||||
|
||||
this.setGridOption({
|
||||
@ -692,53 +771,83 @@ function numberFormatter({ value }) {
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@for $i from 0 through 9 {
|
||||
#gridParent > * {
|
||||
// .tui-grid-content-area{
|
||||
background-color: red;
|
||||
color: red;
|
||||
overflow: visible;
|
||||
position: relative;
|
||||
}
|
||||
#tooltipTargetElement_#{$i} {
|
||||
overflow: visible;
|
||||
position: relative; // 테스트3번쨰
|
||||
white-space: nowrap; // 테스트3번쨰
|
||||
}
|
||||
#tooltipElement_#{$i} {
|
||||
display: none;
|
||||
overflow: visible;
|
||||
position: relative;
|
||||
}
|
||||
#tooltipTargetElement_#{$i}:hover #tooltipElement_#{$i} {
|
||||
display: block;
|
||||
position: absolute;
|
||||
min-width: 100%;
|
||||
bottom: 30px;
|
||||
z-index: 1000000000;
|
||||
align: "center";
|
||||
color: #f2f2f2;
|
||||
background-color: #7f7f7f;
|
||||
// width : 77px;
|
||||
width: 200%;
|
||||
left: -50%;
|
||||
border-radius: 3px;
|
||||
word-break: keep-all;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.tui-grid-rside-area {
|
||||
display: none;
|
||||
overflow: visible;
|
||||
overflow-x: visible;
|
||||
overflow-y: visible;
|
||||
}
|
||||
.tui-grid-header-area {
|
||||
border-style: solid;
|
||||
border-width: 0 0 1px;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
overflow-x: visible;
|
||||
overflow-y: visible;
|
||||
::v-deep {
|
||||
@for $i from 0 through 9 {
|
||||
#gridParent > * {
|
||||
// .tui-grid-content-area{
|
||||
background-color: red;
|
||||
color: red;
|
||||
overflow: visible;
|
||||
position: relative;
|
||||
}
|
||||
#tooltipTargetElement_#{$i} {
|
||||
overflow: visible;
|
||||
position: relative; // 테스트3번쨰
|
||||
white-space: nowrap; // 테스트3번쨰
|
||||
}
|
||||
#tooltipElement_#{$i} {
|
||||
display: none;
|
||||
overflow: visible;
|
||||
position: relative;
|
||||
}
|
||||
#tooltipTargetElement_#{$i}:hover #tooltipElement_#{$i} {
|
||||
display: block;
|
||||
position: absolute;
|
||||
min-width: 100%;
|
||||
bottom: 40px;
|
||||
z-index: 1000000000;
|
||||
align: "center";
|
||||
color: #f2f2f2;
|
||||
background-color: #000000d9;
|
||||
// width : 77px;
|
||||
width: 200%;
|
||||
left: -50%;
|
||||
border-radius: 4px;
|
||||
padding: 6px 0px;
|
||||
word-break: keep-all;
|
||||
white-space: pre-wrap;
|
||||
// Light mode
|
||||
&.light-mode {
|
||||
background-color: #000000d9;
|
||||
}
|
||||
// Dark mode
|
||||
&.dark-mode {
|
||||
background-color: #424242;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
margin-left: -6px;
|
||||
border-width: 6px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
&.light-mode::after {
|
||||
border-color: #000000d9 transparent transparent transparent;
|
||||
}
|
||||
|
||||
&.dark-mode::after {
|
||||
border-color: #424242 transparent transparent transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid-rside-area {
|
||||
display: none;
|
||||
overflow: visible;
|
||||
overflow-x: visible;
|
||||
overflow-y: visible;
|
||||
}
|
||||
.tui-grid-header-area {
|
||||
border-style: solid;
|
||||
border-width: 0 0 1px;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
overflow-x: visible;
|
||||
overflow-y: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -115,7 +115,7 @@ export class CustomCalcNumberEditor {
|
||||
}
|
||||
}
|
||||
|
||||
export class CustumChecbox {
|
||||
export class CustomCheckbox {
|
||||
constructor(props) {
|
||||
const el = document.createElement('input');
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
@ -169,7 +169,7 @@ export class CustumChecbox {
|
||||
}
|
||||
}
|
||||
|
||||
export class CustumButton {
|
||||
export class CustomButton {
|
||||
constructor(props) {
|
||||
const el = document.createElement('button');
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
@ -253,8 +253,9 @@ export class NewCustomRenderer {
|
||||
} else {
|
||||
el.type = 'text';
|
||||
|
||||
$(el).addClass('tui-grid-cell-content');
|
||||
$(el).addClass('tui-grid-cell-content w100');
|
||||
$(el).css('text-align', 'center');
|
||||
$(el).css('border', '0');
|
||||
}
|
||||
this.render(props);
|
||||
if(!this.disabled){
|
||||
@ -314,6 +315,8 @@ export class NewCustomEditor {
|
||||
this.rowKey = rowKey;
|
||||
this.columnInfo = columnInfo;
|
||||
this.grid = grid;
|
||||
const divEl = document.createElement('div');
|
||||
$(divEl).css('text-align', 'center');
|
||||
const el = document.createElement('input');
|
||||
if (
|
||||
props.grid.store.data.rawData[props.rowKey].addInfoDataKind == 'FG'
|
||||
@ -363,16 +366,20 @@ export class NewCustomEditor {
|
||||
}
|
||||
$(el).addClass('tui-grid-content-text');
|
||||
}
|
||||
|
||||
divEl.append(el);
|
||||
|
||||
// console.log('props: %o', props);
|
||||
// console.log('el: %o', el);
|
||||
this.el = el;
|
||||
this.divEl = divEl;
|
||||
|
||||
this.render(props);
|
||||
|
||||
}
|
||||
|
||||
getElement() {
|
||||
return this.el;
|
||||
return this.divEl;
|
||||
}
|
||||
|
||||
getValue() {
|
||||
@ -389,9 +396,9 @@ export class NewCustomEditor {
|
||||
}
|
||||
|
||||
mounted() {
|
||||
if (this.el.type == 'checkbox') {
|
||||
$(this.el.parentElement).css('text-align', 'center');
|
||||
}
|
||||
// if (this.el.type == 'checkbox') {
|
||||
// $(this.el.parentElement).css('text-align', 'center');
|
||||
// }
|
||||
this.el.select();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user