Compare commits

..

51 Commits

Author SHA1 Message Date
245444d5fa fix bug screen17 tab3 2025-08-12 16:38:22 +09:00
dev
541ae86068 Merge pull request 'fixbug screen 2 , screen 17 , screen 15' (#57) from dev-luannv24-fixbug-8/12 into dev
Reviewed-on: #57
2025-08-12 15:14:30 +09:00
5c43496282 refactor code 2025-08-12 15:12:06 +09:00
31413d1e48 update code 2025-08-12 12:58:41 +09:00
dev
dd24592eca Merge pull request 'Fix datepicker icon + add dash line in line chart' (#56) from dev-nghiantt-fix-bugs into dev
Reviewed-on: #56
2025-08-11 18:29:55 +09:00
e59078a19c Fix datepicker icon + add dash line in line chart 2025-08-11 17:58:25 +09:00
dev
bc96d2ae45 Merge pull request 'fix bug grid not load when change menu tab' (#55) from dev-manhph1-figbug into dev
Reviewed-on: #55
2025-08-11 16:55:41 +09:00
4fd2eac344 add check direction for actionbutton 2025-08-11 16:12:19 +09:00
c40352e37c fix bug grid not load when change menu tab 2025-08-11 15:12:01 +09:00
dev
6583d68ea7 Merge pull request 'fix bugs 47, 145' (#54) from dev-dungtv-0811 into dev
Reviewed-on: #54
2025-08-11 14:06:24 +09:00
dev
5859c5d681 Merge pull request 'Add pagination + fix bugs tooltip + fix bugs line chart' (#53) from dev-nghiantt-fix-bugs into dev
Reviewed-on: #53
2025-08-11 13:54:33 +09:00
d6dd66c4b3 fix bugs 47, 145 2025-08-11 11:51:28 +07:00
f666110a1a Add pagination + fix bugs tooltip + fix bugs line chart 2025-08-11 11:55:32 +09:00
dev
d22b09cc47 Merge pull request 'fixbug' (#52) from dev-luannv24-fixbug1 into dev
Reviewed-on: #52
2025-08-11 11:25:42 +09:00
ecfbeb3afa fixbug 2025-08-08 19:22:33 +09:00
dev
1ece377457 Merge pull request 'update code' (#51) from dev-luannv24-screen36-32-31-26-17-15 into dev
Reviewed-on: #51
2025-08-08 11:35:28 +09:00
335f93e6cf resovel conflix 2025-08-08 11:30:10 +09:00
dev
9979f32f8c Merge pull request 'dev-trungvq7-0729' (#50) from dev-trungvq7-0729 into dev
Reviewed-on: #50
2025-08-08 10:25:21 +09:00
71394443ac update code 2025-08-07 19:04:13 +09:00
dev
d8c5bd5323 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-trungvq7-0729 2025-08-07 18:54:21 +09:00
dev
c9bc9d3186 Merge 0729 2025-08-07 18:54:14 +09:00
dev
a06d2e553d Merge pull request 'dev-dungtv-0807' (#49) from dev-dungtv-0807 into dev
Reviewed-on: #49
2025-08-07 18:43:05 +09:00
dev
6a894df6ec Merge pull request 'add dark mode for editor' (#47) from dev-manhph1-figbug into dev
Reviewed-on: #47
2025-08-07 18:15:02 +09:00
dev
e194557753 Merge pull request 'dev-dungtv-0807' (#48) from dev-dungtv-0807 into dev
Reviewed-on: #48
2025-08-07 17:46:32 +09:00
d0572dc07c fixbug grid 2025-08-07 15:26:53 +07:00
ea4910db79 fix bugs screen 10, 20 2025-08-07 15:18:06 +07:00
c636db83bd fix bug screen 8 bug-32 2025-08-07 13:57:24 +07:00
6871d6034d fix bugs screen 20.1~20.4 2025-08-07 13:50:37 +07:00
dev
1352223416 Merge pull request 'Fix checkboxes in form' (#46) from dev-nghiantt-fix-bugs into dev
Reviewed-on: #46
2025-08-07 15:42:38 +09:00
fa68aa31e6 add dark mode for editor 2025-08-07 13:33:35 +07:00
439079eee8 Fix checkboxes in form 2025-08-07 12:49:14 +09:00
dev
93dd46c225 Merge pull request 'fixbugs screen 10' (#45) from dev-dungtv-0807 into dev
Reviewed-on: #45
2025-08-07 12:45:25 +09:00
537a16fbc7 fixbugs screen 10 2025-08-07 10:40:23 +07:00
dev
6f6f19349f Merge pull request 'fix bug 07/08/25' (#44) from dev-manhph1-figbug into dev
Reviewed-on: #44
2025-08-07 12:23:53 +09:00
2533d5bb7a fix bug 07/08/25 2025-08-07 09:58:49 +07:00
dev
19a634e3a5 Merge pull request 'dev-luannv24-s2s17s15-fixbug' (#41) from dev-luannv24-s2s17s15-fixbug into dev
Reviewed-on: #41
2025-08-07 11:42:33 +09:00
dev
e4331ad79f Merge pull request 'fix bug screen 10' (#42) from dev-dungtv-0807 into dev
Reviewed-on: #42
2025-08-07 11:37:15 +09:00
8c7a8d5b29 resolve commit code 2025-08-07 09:36:18 +07:00
140f73814f update 2025-08-07 11:29:24 +09:00
b53ce8bd83 refactor code 2025-08-07 11:27:51 +09:00
8bb0d56a80 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-luannv24-s2s17s15-fixbug 2025-08-07 11:23:58 +09:00
dev
f715405ad2 Merge pull request 'dev-trungvq7-0729' (#40) from dev-trungvq7-0729 into dev
Reviewed-on: #40
2025-08-07 10:58:23 +09:00
f80bfc5c71 fix bug screen 10 2025-08-07 08:37:59 +07:00
56607d0770 update code 2025-08-06 19:08:06 +09:00
dev
6db0ff96c0 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-trungvq7-0729 2025-08-06 19:03:14 +09:00
2cf00c0880 update code fixbug 2025-08-06 19:02:19 +09:00
dev
9155a2b55e commit 0608 2025-08-06 19:00:29 +09:00
dev
484d8879aa Merge pull request 'fix bugs' (#39) from dev-dungtv-0806 into dev
Reviewed-on: #39
2025-08-06 18:50:46 +09:00
38585f7b4f hotfix layout 2025-08-06 16:43:12 +07:00
b0ad70d33e fix bugs 2025-08-06 16:31:44 +07:00
dev
3f89707a01 Merge pull request 'fixbugs grid' (#38) from dev-dungtv-0805 into dev
Reviewed-on: #38
2025-08-06 12:13:45 +09:00
59 changed files with 2032 additions and 1165 deletions

View File

@ -9,6 +9,9 @@
@import "./common/card.scss"; @import "./common/card.scss";
@import "./common/tabs.scss"; @import "./common/tabs.scss";
@import "./common/numericInput.scss"; @import "./common/numericInput.scss";
@import "./common/pagination.scss";
@import "./common/editor.scss";
html, html,
body { body {
@ -441,6 +444,10 @@ a {
.v-application.#{$theme}-mode { .v-application.#{$theme}-mode {
min-width: 1000px; min-width: 1000px;
.icon-datepicker-color {
color: map-deep-get($config, #{$theme}, "icon-datepicker-color");
}
.head-logo { .head-logo {
gap: 8px; gap: 8px;
} }
@ -484,6 +491,10 @@ a {
border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-header-border"); border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-header-border");
} }
.custom-chart{
border: 1px solid map-deep-get($config, #{$theme}, "v-chart-border");
}
.btn-header { .btn-header {
background-color: map-deep-get($config, #{$theme}, "v-btn-header-background"); background-color: map-deep-get($config, #{$theme}, "v-btn-header-background");
border:1px solid map-deep-get($config, #{$theme}, "v-btn-header-border"); border:1px solid map-deep-get($config, #{$theme}, "v-btn-header-border");
@ -860,7 +871,7 @@ a {
); );
.day-label { .day-label {
color: map-deep-get($config, #{$theme}, "non-activate"); color: map-deep-get($config, #{$theme}, "card-text-title-color");
} }
} }
} }
@ -1166,14 +1177,14 @@ a {
} }
} }
.toastui-editor-contents { // .toastui-editor-contents {
* { // * {
color: map-deep-get($config, // color: map-deep-get($config,
#{$theme}, // #{$theme},
"tui-editor-contents-color" // "tui-editor-contents-color"
) !important; // ) !important;
} // }
} // }
.lnb-logo { .lnb-logo {
color: map-deep-get($config, #{$theme}, "v-dialog-card-text-color"); color: map-deep-get($config, #{$theme}, "v-dialog-card-text-color");

View File

@ -66,6 +66,12 @@
} }
} }
.custom-action-btn{
height: 24px;
width: 24px;
font-size: 12px;
}
.v-btn { .v-btn {
background-color: map-deep-get($config, background-color: map-deep-get($config,
#{$theme}, #{$theme},
@ -131,6 +137,12 @@
color:map-deep-get($config, #{$theme}, "ant-btn-default-color"); color:map-deep-get($config, #{$theme}, "ant-btn-default-color");
} }
&.ant-btn-popup-default {
background:map-deep-get($config, #{$theme}, "ant-btn-popup-bg");
color:map-deep-get($config, #{$theme}, "ant-btn-popup-color");
border: 1px solid map-deep-get($config, #{$theme}, "ant-btn-popup-border");
}
&.ant-btn-danger { &.ant-btn-danger {
&.ant-btn-background-ghost { &.ant-btn-background-ghost {
color:map-deep-get($config, #{$theme}, "ant-btn-danger-color"); color:map-deep-get($config, #{$theme}, "ant-btn-danger-color");

View File

@ -0,0 +1,474 @@
@charset "utf-8";
.toastui-editor-dark .toastui-editor-defaultUI {
border-color: #424242;
color: #eee;
}
.toastui-editor-dark .toastui-editor-md-container,
.toastui-editor-dark .toastui-editor-ww-container {
background-color: #212224;
}
.toastui-editor-dark .toastui-editor-defaultUI-toolbar {
background-color: #212224;
border-bottom-color: #303238;
}
.toastui-editor-dark .toastui-editor-toolbar-icons {
background-position-y: -49px;
border-color: #232428;
}
.toastui-editor-dark .toastui-editor-toolbar-icons:not(:disabled):hover {
background-color: #36383f;
border-color: #36383f;
}
.toastui-editor-dark .toastui-editor-toolbar-divider {
background-color: #303238;
}
.toastui-editor-dark .toastui-editor-tooltip {
background-color: #535662;
}
.toastui-editor-dark .toastui-editor-tooltip .arrow {
background-color: #535662;
}
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .scroll-sync::before {
color: #8f939f;
}
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .scroll-sync.active::before {
color: #67ccff;
}
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .switch {
background-color: #2b4455;
}
.toastui-editor-dark .toastui-editor-defaultUI-toolbar input:checked + .switch {
background-color: #2b4455;
}
.toastui-editor-dark .toastui-editor-defaultUI-toolbar .switch::before {
background-color: #8f939f;
}
.toastui-editor-dark .toastui-editor-defaultUI-toolbar input:checked + .switch::before {
background-color: #67ccff;
}
.toastui-editor-dark .toastui-editor-main .toastui-editor-md-splitter {
background-color: #303238;
}
.toastui-editor-dark .toastui-editor-mode-switch {
border-top-color: #424242;
background-color: #212224;
}
.toastui-editor-dark .toastui-editor-mode-switch .tab-item {
border-color: #424242;
background-color: #212224;
color: #eee;
}
.toastui-editor-dark .toastui-editor-mode-switch .tab-item.active {
border-top-color: #424242;
background-color: #212224;
color: #1677FF;
}
.toastui-editor-dark .toastui-editor-popup,
.toastui-editor-dark .toastui-editor-context-menu {
background-color: #121212;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08);
border-color: #494c56;
}
.toastui-editor-dark .toastui-editor-popup-add-heading ul li:hover {
background-color: #36383f;
}
.toastui-editor-dark .toastui-editor-popup-body label {
color: #9a9da3;
}
.toastui-editor-dark .toastui-editor-popup-body input[type='text'] {
background-color: transparent;
color: #eee;
border-color: #303238;
}
.toastui-editor-dark .toastui-editor-popup-body input[type='text']:focus {
outline-color: #67ccff;
}
.toastui-editor-dark .toastui-editor-popup-body input[type='text'].disabled {
color: #969aa5;
border-color: #303238;
background-color: rgba(48, 50, 56, 0.4);
}
.toastui-editor-dark .toastui-editor-popup-add-image .toastui-editor-tabs .tab-item {
border-bottom-color: #292e37;
color: #eee;
}
.toastui-editor-dark .toastui-editor-popup-add-image .toastui-editor-tabs .tab-item:hover {
border-bottom-color: #3c424d;
}
.toastui-editor-dark .toastui-editor-popup-add-image .toastui-editor-tabs .tab-item.active {
color: #67ccff;
border-bottom-color: #67ccff;
}
.toastui-editor-dark .toastui-editor-popup-body .toastui-editor-file-name {
border-color: #303238;
color: #eee;
}
.toastui-editor-dark .toastui-editor-popup-body .toastui-editor-file-select-button {
border-color: #303238;
background-color: #232428;
color: #eee;
}
.toastui-editor-dark .toastui-editor-popup-body .toastui-editor-file-select-button:hover {
border-color: #494c56;
}
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-close-button {
color: #eee;
border-color: #303238;
background-color: #232428;
}
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-close-button:hover {
border-color: #494c56;
}
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-ok-button {
color: #121212;
background-color: #67ccff;
}
.toastui-editor-dark.toastui-editor-defaultUI .toastui-editor-ok-button:hover {
color: #121212;
background-color: #32baff;
}
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-cell {
border-color: #303238;
background-color: #121212;
}
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-cell.header {
border-color: #303238;
background-color: #232428;
}
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-selection-layer {
border-color: rgba(103, 204, 255, 0.4);
background-color: rgba(103, 204, 255, 0.1);
}
.toastui-editor-dark .toastui-editor-popup-add-table .toastui-editor-table-description {
color: #eee
}
.toastui-editor-dark .toastui-editor-md-tab-container {
background-color: #232428;
border-bottom-color: #303238;
}
.toastui-editor-dark .toastui-editor-md-tab-container .tab-item {
border-color: #393b42;
background-color: #2d2f34;
color: #757a86;
}
.toastui-editor-dark .toastui-editor-md-tab-container .tab-item.active {
border-bottom-color: #121212;
background-color: #121212;
color: #eee;
}
.toastui-editor-dark .toastui-editor-context-menu .menu-group {
border-bottom-color: #303238;
color: #eee;
}
.toastui-editor-dark .toastui-editor-context-menu .menu-item span::before {
background-position-y: -126px;
}
.toastui-editor-dark .toastui-editor-context-menu li:not(.disabled):hover {
background-color: #36383f;
}
.toastui-editor-dark .toastui-editor-context-menu li.disabled {
color: #969aa5;
}
.toastui-editor-dark .toastui-editor-dropdown-toolbar {
border-color: #494c56;
background-color: #232428;
}
.toastui-editor-dark .ProseMirror,
.toastui-editor-dark .toastui-editor-contents p,
.toastui-editor-dark .toastui-editor-contents h1,
.toastui-editor-dark .toastui-editor-contents h2,
.toastui-editor-dark .toastui-editor-contents h3,
.toastui-editor-dark .toastui-editor-contents h4,
.toastui-editor-dark .toastui-editor-contents h5,
.toastui-editor-dark .toastui-editor-contents h6 {
color: #fff;
}
.toastui-editor-dark .toastui-editor-contents h1,
.toastui-editor-dark .toastui-editor-contents h2 {
border-color: #fff;
}
.toastui-editor-dark .toastui-editor-contents del {
color: #777980;
}
.toastui-editor-dark .toastui-editor-contents blockquote {
border-color: #303135;
}
.toastui-editor-dark .toastui-editor-contents blockquote p,
.toastui-editor-dark .toastui-editor-contents blockquote ul,
.toastui-editor-dark .toastui-editor-contents blockquote ol {
color: #777980;
}
.toastui-editor-dark .toastui-editor-contents pre {
background-color: #232428;
}
.toastui-editor-dark .toastui-editor-contents pre code {
background-color: transparent;
color: #fff;
}
.toastui-editor-dark .toastui-editor-contents code {
color: #c1798b;
background-color: #35262a;
}
.toastui-editor-dark .toastui-editor-contents div {
color: #fff;
}
.toastui-editor-dark .toastui-editor-ww-code-block-language {
border-color: #303238;
background-color: #121212;
}
.toastui-editor-dark .toastui-editor-ww-code-block-language input {
color: #fff;
}
.toastui-editor-dark .toastui-editor-contents .toastui-editor-ww-code-block:after {
background-color: #232428;
border: 1px solid #393b42;
color: #eee;
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuugiOydtOyWtF8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiCgkgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMwIDMwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I2ZmZjt9Cjwvc3R5bGU+CjxnPgoJPGc+CgkJPGc+CgkJCTxnPgoJCQkJPGc+CgkJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1LjUsMTIuNWwyLDJMMTIsMjBoLTJ2LTJMMTUuNSwxMi41eiBNMTgsMTBsMiwybC0xLjUsMS41bC0yLTJMMTgsMTB6Ii8+CgkJCQk8L2c+CgkJCTwvZz4KCQk8L2c+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==');
}
.toastui-editor-dark .toastui-editor-contents .toastui-editor-custom-block-editor {
background: #392d31;
color: #fff;
border-color: #327491;
}
.toastui-editor-dark .toastui-editor-custom-block.ProseMirror-selectednode .toastui-editor-custom-block-view {
color: #fff;
border-color: #327491;
}
.toastui-editor-dark .toastui-editor-custom-block-view button {
background-color: #232428;
border-color: #393b42;
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuugiOydtOyWtF8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiCgkgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzAgMzAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMwIDMwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I2ZmZjt9Cjwvc3R5bGU+CjxnPgoJPGc+CgkJPGc+CgkJCTxnPgoJCQkJPGc+CgkJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1LjUsMTIuNWwyLDJMMTIsMjBoLTJ2LTJMMTUuNSwxMi41eiBNMTgsMTBsMiwybC0xLjUsMS41bC0yLTJMMTgsMTB6Ii8+CgkJCQk8L2c+CgkJCTwvZz4KCQk8L2c+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==');
}
.toastui-editor-dark .toastui-editor-custom-block-view button:hover {
background-color: #232428;
border-color: #595c68;
}
.toastui-editor-dark .toastui-editor-custom-block-view .info {
color: #65acca;
}
.toastui-editor-dark .toastui-editor-contents table {
border-color: #303238;
}
.toastui-editor-dark .toastui-editor-contents table th,
.toastui-editor-dark .toastui-editor-contents table td {
border-color: #303238;
}
.toastui-editor-dark .toastui-editor-contents table th {
background-color: #3a3c42;
}
.toastui-editor-dark .toastui-editor-contents table td,
.toastui-editor-dark .toastui-editor-contents table td p {
color: #fff;
}
.toastui-editor-dark .toastui-editor-contents td.toastui-editor-cell-selected {
background-color: rgba(103, 204, 255, 0.5);
}
.toastui-editor-dark .toastui-editor-contents th.toastui-editor-cell-selected {
background-color: rgba(103, 204, 255, 0.3);
}
.toastui-editor-dark table.ProseMirror-selectednode {
outline-color: #67ccff;
}
.toastui-editor-dark .html-block.ProseMirror-selectednode {
outline-color: #67ccff;
}
.toastui-editor-dark .toastui-editor-contents ul,
.toastui-editor-dark .toastui-editor-contents menu,
.toastui-editor-dark .toastui-editor-contents ol,
.toastui-editor-dark .toastui-editor-contents dir {
color: #55575f;
}
.toastui-editor-dark .toastui-editor-contents ul > li::before {
background-color: #55575f;
}
.toastui-editor-dark .toastui-editor-contents hr {
border-color: #55575f;
}
.toastui-editor-dark .toastui-editor-contents a {
color: #4b96e6;
}
.toastui-editor-dark .toastui-editor-contents a:hover {
color: #1f70de;
}
.toastui-editor-dark .toastui-editor-contents .image-link:hover::before {
border-color: #393b42;
background-color: #232428;
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj4KICAgICAgICA8ZyBzdHJva2U9IiNFRUUiIHN0cm9rZS13aWR0aD0iMS41Ij4KICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNy42NjUgMTUuMDdsLTEuODE5LS4wMDJjLTEuNDg2IDAtMi42OTItMS4yMjgtMi42OTItMi43NDR2LS4xOTJjMC0xLjUxNSAxLjIwNi0yLjc0NCAyLjY5Mi0yLjc0NGgzLjg0NmMxLjQ4NyAwIDIuNjkyIDEuMjI5IDIuNjkyIDIuNzQ0di4xOTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDQ1IC0xNzQzKSB0cmFuc2xhdGUoMTA0MCAxNzM4KSB0cmFuc2xhdGUoNSA1KSBzY2FsZSgxIC0xKSByb3RhdGUoNDUgMzcuMjkzIDApIi8+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEyLjMyNiA0LjkzNGwxLjgyMi4wMDJjMS40ODcgMCAyLjY5MyAxLjIyOCAyLjY5MyAyLjc0NHYuMTkyYzAgMS41MTUtMS4yMDYgMi43NDQtMi42OTMgMi43NDRoLTMuODQ1Yy0xLjQ4NyAwLTIuNjkyLTEuMjI5LTIuNjkyLTIuNzQ0VjcuNjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDQ1IC0xNzQzKSB0cmFuc2xhdGUoMTA0MCAxNzM4KSB0cmFuc2xhdGUoNSA1KSBzY2FsZSgxIC0xKSByb3RhdGUoNDUgMzAuOTk2IDApIi8+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=');
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08);
}
.toastui-editor-dark .toastui-editor-contents .task-list-item::before {
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgc3Ryb2tlPSIjNTU1NzVGIj4KICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzMCAtMzE2KSB0cmFuc2xhdGUoNzg4IDE5MikgdHJhbnNsYXRlKDI0MiAxMjQpIj4KICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTciIGhlaWdodD0iMTciIHg9Ii41IiB5PSIuNSIgcng9IjIiLz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==');
background-color: transparent;
}
.toastui-editor-dark .toastui-editor-contents .task-list-item.checked::before {
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgZmlsbD0iIzRCOTZFNiI+CiAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2IDBjMS4xMDUgMCAyIC44OTUgMiAydjE0YzAgMS4xMDUtLjg5NSAyLTIgMkgyYy0xLjEwNSAwLTItLjg5NS0yLTJWMkMwIC44OTUuODk1IDAgMiAwaDE0em0tMS43OTMgNS4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNy41IDEwLjU4NSA1LjIwNyA4LjI5M2wtLjA5NC0uMDgzYy0uMzkyLS4zMDUtLjk2LS4yNzgtMS4zMi4wODMtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgMyAuMDk0LjA4M2MuMzkyLjMwNS45Ni4yNzggMS4zMi0uMDgzbDYtNiAuMDgzLS4wOTRjLjMwNS0uMzkyLjI3OC0uOTYtLjA4My0xLjMyeiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwNTAgLTI5NikgdHJhbnNsYXRlKDc4OCAxOTIpIHRyYW5zbGF0ZSgyNjIgMTA0KSIvPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K');
}
.toastui-editor-dark .toastui-editor-md-delimiter,
.toastui-editor-dark .toastui-editor-md-code.toastui-editor-md-delimiter,
.toastui-editor-dark .toastui-editor-md-thematic-break,
.toastui-editor-dark .toastui-editor-md-link,
.toastui-editor-dark .toastui-editor-md-table,
.toastui-editor-dark .toastui-editor-md-block-quote {
color: #55575f;
}
.toastui-editor-dark .toastui-editor-md-meta,
.toastui-editor-dark .toastui-editor-md-html {
color: #55575f;
}
.toastui-editor-dark .toastui-editor-md-link.toastui-editor-md-link-url.toastui-editor-md-marked-text {
color: #777980;
}
.toastui-editor-dark .toastui-editor-md-block-quote .toastui-editor-md-marked-text,
.toastui-editor-dark .toastui-editor-md-list-item .toastui-editor-md-meta {
color: #b3b5bc;
}
.toastui-editor-dark .toastui-editor-md-link.toastui-editor-md-link-desc.toastui-editor-md-marked-text,
.toastui-editor-dark .toastui-editor-md-list-item-style.toastui-editor-md-list-item-odd {
color: #4b96e6;
}
.toastui-editor-dark .toastui-editor-md-list-item-style.toastui-editor-md-list-item-even {
color: #ef6767;
}
.toastui-editor-dark .toastui-editor-md-table .toastui-editor-md-table-cell {
color: #fff;
}
.toastui-editor-dark .toastui-editor-md-code.toastui-editor-md-marked-text {
color: #c1798b;
}
.toastui-editor-dark .toastui-editor-md-code {
background-color: #35262a;
}
.toastui-editor-dark .toastui-editor-md-code-block-line-background {
background-color: #232428;
}
.toastui-editor-dark .toastui-editor-md-code-block .toastui-editor-md-meta {
color: #aaa;
}
.toastui-editor-dark .toastui-editor-md-custom-block {
color: #fff;
}
.toastui-editor-dark .toastui-editor-md-custom-block-line-background {
background-color: #392d31;
}
.toastui-editor-dark .toastui-editor-md-custom-block .toastui-editor-md-delimiter {
color: #327491;
}
.toastui-editor-dark .toastui-editor-md-custom-block .toastui-editor-md-meta {
color: #65acca;
}
.toastui-editor-dark .toastui-editor-contents .toastui-editor-md-preview-highlight::after {
background-color: rgba(255, 250, 193, 0.5);
}
.toastui-editor-dark .toastui-editor-contents th.toastui-editor-md-preview-highlight,
.toastui-editor-dark .toastui-editor-contents td.toastui-editor-md-preview-highlight {
background-color: rgba(255, 250, 193, 0.5);
}
.toastui-editor-dark .toastui-editor-contents th.toastui-editor-md-preview-highlight {
color: #fff;
}
.toastui-editor-dark .toastui-editor-contents th.toastui-editor-md-preview-highlight,
.toastui-editor-dark .toastui-editor-contents td.toastui-editor-md-preview-highlight {
background-color: rgba(255, 250, 193, 0.25);
}
.toastui-editor-dark .toastui-editor-contents .toastui-editor-md-preview-highlight::after {
background-color: rgba(255, 250, 193, 0.25);
}

View File

@ -17,18 +17,6 @@
border: 0 !important; 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 { &-lside-area .tui-grid-scrollbar-left-bottom {
display: none; display: none;
} }
@ -68,6 +56,12 @@
font-weight: 400; font-weight: 400;
} }
th[data-column-name="_checked"] {
padding-left: 0;
}
} }
.tui-grid-table{ .tui-grid-table{
@ -75,6 +69,13 @@
.tui-grid-cell-has-input .tui-grid-cell-content { .tui-grid-cell-has-input .tui-grid-cell-content {
padding: 8px; padding: 8px;
} }
th[data-column-name="_checked"] {
&.tui-grid-cell-header {
padding-left: 0;
}
}
} }
.treeGrid { .treeGrid {
@ -150,50 +151,28 @@
&-body-container{ &-body-container{
border-right: 0; border-right: 0;
// border-right-color: map-deep-get($config, // position: relative;
// #{$theme},
// "tui-grid-cell-borderColor"
// );
width: auto !important; width: auto !important;
.tui-grid-table-container{ .tui-grid-table-container{
width: 100% !important; // width: 100% !important;
.tui-grid-table { .tui-grid-table {
width: 100% !important; // width: 100% !important;
// table-layout: fixed;
// th, td {
// &:last-child{
// width: auto !important;
// }
// }
} }
} }
} }
&-container, &-summary-area,
&-summary-area { &-container {
font-family: Inter; font-family: Inter;
// color: #000000E0;
& ::-webkit-scrollbar {
width: 0 !important;
height: $scrollbar-width !important;
-webkit-appearance: initial;
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 {
&.tui-grid-cell-summary { &.tui-grid-cell-summary {
color: map-deep-get($config, color: map-deep-get($config,
#{$theme}, #{$theme},
@ -203,6 +182,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 { &-rside-area {
background-color: map-deep-get($config, #{$theme}, "scrollbar-track"); background-color: map-deep-get($config, #{$theme}, "scrollbar-track");
} }
@ -241,13 +246,13 @@
&-scrollbar-right-bottom { &-scrollbar-right-bottom {
width: $scrollbar-width !important; width: $scrollbar-width !important;
height: $scrollbar-width !important; height: $scrollbar-width !important;
// display: none !important;
border-color: map-deep-get($config, #{$theme}, "cardBackground"); border-color: map-deep-get($config, #{$theme}, "cardBackground");
background-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; // border: none !important;
// bottom: -1px; // bottom: -1px;
// right: -2px; // right: -2px;
box-sizing: border-box;
// display: none; // display: none;
} }
@ -358,10 +363,10 @@
#{$theme}, #{$theme},
"tui-grid-cell-backgroundColor" "tui-grid-cell-backgroundColor"
); );
width: 100% !important; // width: 100% !important;
.tui-grid-table { // .tui-grid-table {
width: 100% !important; // width: 100% !important;
} // }
} }
&-row-odd, &-row-odd,

View File

@ -50,6 +50,7 @@
} }
} }
.v-input__custom { .v-input__custom {
.v-input__slot { .v-input__slot {
@ -149,6 +150,11 @@
.v-input { .v-input {
margin-top: 0 !important; margin-top: 0 !important;
padding-top: 0 !important; padding-top: 0 !important;
&.v-text-field--outlined {
fieldset {
top: -4px
}
}
} }
.v-input__append-inner { .v-input__append-inner {
@ -230,6 +236,10 @@
} }
} }
input[type="checkbox"] {
width: 16px;
height: 16px
}
@each $theme in dark, light { @each $theme in dark, light {
@include theme($theme); @include theme($theme);
@ -237,11 +247,19 @@
.v-application.#{$theme}-mode { .v-application.#{$theme}-mode {
.ant-checkbox-wrapper { .ant-checkbox-wrapper {
.ant-checkbox {
.ant-checkbox-inner {
background-color: map-deep-get($config, #{$theme}, "ant-checkbox-bg"); // background for unchecked checkbox
border-color: map-deep-get($config, #{$theme}, "ant-checkbox-border");
}
}
.ant-checkbox-checked { .ant-checkbox-checked {
.ant-checkbox-inner { .ant-checkbox-inner {
background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); // background for checked checkbox
border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
color:map-deep-get($config, #{$theme}, "ant-btn-primary-color"); color:map-deep-get($config, #{$theme}, "ant-btn-primary-color");
&.ant-checkbox-inner::after { &.ant-checkbox-inner::after {
border-color: map-deep-get($config, #{$theme}, "ant-btn-primary-color"); border-color: map-deep-get($config, #{$theme}, "ant-btn-primary-color");
} }
@ -403,6 +421,13 @@
"v-input-textarea-border" "v-input-textarea-border"
); );
} }
input[type="checkbox"] {
accent-color: map-deep-get($config,
#{$theme},
"ant-btn-primary-bg"
);
}
} }
.v-radio { .v-radio {
@ -430,7 +455,7 @@
transform: none; transform: none;
&.mdi:before { &.mdi:before {
font-size: 16px; font-size: 20px;
} }
@if $theme ==dark { @if $theme ==dark {

View File

@ -0,0 +1,43 @@
@each $theme in dark, light {
// @include theme($theme);
.v-application.#{$theme}-mode {
.ant-pagination-item,
.ant-pagination-prev,
.ant-pagination-next {
// border: none !important;
// box-shadow: none !important;
background-color: map-deep-get($config, #{$theme}, "paging-background") !important;
color: map-deep-get($config, #{$theme}, "paging-text") !important;
border: 0.5px solid #424242;
.ant-pagination-item-link {
border: none;
background-color: map-deep-get($config, #{$theme}, "paging-background") !important;
}
}
.ant-pagination-item-active {
border-color: #1890ff !important;
color: #1890ff !important
}
.ant-pagination-options-size-changer {
.ant-select-selection {
border: 0.5px solid #424242;
background: map-deep-get($config, #{$theme}, "paging-background") !important;
color: map-deep-get($config, #{$theme}, "paging-text") !important;
}
.ant-select-arrow {
color: map-deep-get($config, #{$theme}, "paging-text") !important;
}
.ant-select-selection__rendered {
margin-right: 30px;
}
}
}
}

View File

@ -15,8 +15,16 @@
border-radius: 6px; border-radius: 6px;
border: solid 1px; border: solid 1px;
height: 32px; height: 32px;
// border-color: #424242; color: map-deep-get($config, #{$theme}, "v-input-fieldset-color") !important;
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color"); border-color: currentColor;
// border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
&:hover {
border-color: map-deep-get($config, #{$theme}, "v-input-fieldset-hover-color" ) !important;
}
&:has(.v-input--is-focused){
border-width: 2px;
}
&.datepicker-large { &.datepicker-large {
height: 40px; height: 40px;
@ -58,6 +66,10 @@
} }
} }
} }
.v-icon {
color: map-deep-get($config, #{$theme}, "v-icon-chevron-down") !important;
}
} }
.v-input__custom { .v-input__custom {

View File

@ -110,11 +110,11 @@ $config: (
tui-grid-border-horziontal-color: #212224, tui-grid-border-horziontal-color: #212224,
tui-grid-border-vertical-color: #FFFFFF0F, tui-grid-border-vertical-color: #FFFFFF0F,
tui-grid-cell-backgroundColor: #212224, tui-grid-cell-backgroundColor: #212224,
tui-grid-cell-color: #FFFFFFA6, tui-grid-cell-color: #FFFFFFD9,
tui-grid-cell-insert-color: #13636c, tui-grid-cell-insert-color: #2B2111,
tui-grid-cell-selected-color: #0A224F, tui-grid-cell-selected-color: #0A224F,
tui-grid-cell-modify-color: #13636c, tui-grid-cell-modify-color: #13636c,
tui-grid-cell-removed-color: #f6637b, tui-grid-cell-removed-color: #2A1215,
tui-grid-cell-disabled-color: rgb(170, 170, 170), tui-grid-cell-disabled-color: rgb(170, 170, 170),
tui-grid-cell-hover-backgroundColor: #2d4571, tui-grid-cell-hover-backgroundColor: #2d4571,
v-tabs-items-border-color: #FFFFFF0F, v-tabs-items-border-color: #FFFFFF0F,
@ -175,7 +175,16 @@ $config: (
btn-header-select-color:#FFFFFFD9, btn-header-select-color:#FFFFFFD9,
subtitle-tab: #FFFFFFA6, subtitle-tab: #FFFFFFA6,
v-header-border: #424242, v-header-border: #424242,
v-chart-border: #424242,
v-sidebar-border: #303030, v-sidebar-border: #303030,
ant-checkbox-bg: #212224,
ant-checkbox-border: #424242,
ant-btn-popup-bg: #212224,
ant-btn-popup-color: #FFFFFFD9,
ant-btn-popup-border: #424242,
paging-background: #212224,
paging-text: #FFFFFFD9,
icon-datepicker-color: #FFFFFF73,
), ),
light: (w-g5: $--color-gray_555, light: (w-g5: $--color-gray_555,
g5-w: $--color-white, g5-w: $--color-white,
@ -314,6 +323,15 @@ $config: (
btn-header-select-bg:#FFFFFF, btn-header-select-bg:#FFFFFF,
subtitle-tab: #000000A6, subtitle-tab: #000000A6,
v-header-border: #D9D9D9, v-header-border: #D9D9D9,
v-chart-border: #D9D9D9,
v-sidebar-border: #F0F0F0, v-sidebar-border: #F0F0F0,
ant-checkbox-bg: #FFFFFF,
ant-checkbox-border: #D9D9D9,
ant-btn-popup-bg: #FFFFFF,
ant-btn-popup-color: #000000E0,
ant-btn-popup-border: #D9D9D9,
paging-background: #FFFFFF,
paging-text: #000000E0,
icon-datepicker-color: #00000073,
), ),
); );

View File

@ -61,7 +61,8 @@ export default {
isDarkMode: 'isDarkMode', isDarkMode: 'isDarkMode',
chartOption(state) { chartOption(state) {
var dark_Col = [ var dark_Col = [
'#01AE6A', '#79B100',
// '#01AE6A',
'#FFB046', '#FFB046',
'#F6637B', '#F6637B',
'#944FE9', '#944FE9',
@ -194,7 +195,8 @@ export default {
var lightCol_dashReadplcStatus = ['#3cc380', '#ffb13b', '#f98694']; var lightCol_dashReadplcStatus = ['#3cc380', '#ffb13b', '#f98694'];
var light_Col = [ var light_Col = [
'#3CC380', '#3BAD43',
// '#3CC380',
'#FFB13B', '#FFB13B',
'#F98694', '#F98694',
'#CF74E5', '#CF74E5',

View File

@ -7,8 +7,6 @@
</label> </label>
</v-col> </v-col>
<v-col :cols="label ? textCols : ''"> <v-col :cols="label ? textCols : ''">
<a-checkbox v-model="chkValue" :disabled="disabledFlag" :readonly="readonly || false" <a-checkbox v-model="chkValue" :disabled="disabledFlag" :readonly="readonly || false"
:required="required || false" @change="modifyValue"> :required="required || false" @change="modifyValue">
</a-checkbox> </a-checkbox>

View File

@ -19,8 +19,11 @@
readonly readonly
outlined outlined
> >
<template #append > <!-- <template #append >
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon> <v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
</template> -->
<template v-slot:append>
<a-icon class="v-icon" type="calendar" style="width: 14px; height: 14px;" />
</template> </template>
<template #append-outer> <template #append-outer>
<div ref="startpicker-container" id="startpicker-container"></div> <div ref="startpicker-container" id="startpicker-container"></div>
@ -426,7 +429,7 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/assets/scss/datepicker.scss"; // @import "@/assets/scss/datepicker.scss";
::v-deep { ::v-deep {
.tui-timepicker-row { .tui-timepicker-row {

View File

@ -9,7 +9,6 @@
@dblclick="dblClick" @dblclick="dblClick"
@mouseover="mouseoverEvent" @mouseover="mouseoverEvent"
@mouseout="mouseoutEvent" @mouseout="mouseoutEvent"
@mousedown="onMousedown"
@focusChange="focusChangeEvt" @focusChange="focusChangeEvt"
/> />
</template> </template>
@ -268,15 +267,7 @@ export default {
} }
}); });
}, },
onMousedown(evt) {
this.handleSelectedRow(evt);
},
focusChangeEvt(e) { focusChangeEvt(e) {
if(e.rowKey === 0) {
this.handleSelectedRow(e);
}
},
handleSelectedRow(e) {
// console.log('focusChangeEvt1...') // console.log('focusChangeEvt1...')
if (this.preventFocusChangeEvent(e)) { if (this.preventFocusChangeEvent(e)) {
// console.log('prevent focusChangeEvt') // console.log('prevent focusChangeEvt')
@ -299,7 +290,6 @@ export default {
startEditing(e) { startEditing(e) {
// console.log('startEditing1...') // console.log('startEditing1...')
if (this.preventFocusChangeEvent(e)) { if (this.preventFocusChangeEvent(e)) {
// console.log('prevent startEditing')
return; return;
} }
@ -311,7 +301,6 @@ export default {
// console.log('startEditing2...') // console.log('startEditing2...')
if (this.editorGrid && e.rowKey >= 0) { if (this.editorGrid && e.rowKey >= 0) {
this.editorStartKey = e.rowKey; this.editorStartKey = e.rowKey;
// console.log("E::", this.gridInstance.invoke("getRow", e.rowKey));
this.gridInstance.invoke('startEditing', e.rowKey, e.columnName); this.gridInstance.invoke('startEditing', e.rowKey, e.columnName);
this.$emit( this.$emit(
'getRowsData', 'getRowsData',
@ -617,8 +606,10 @@ export default {
list.map(item => this.gridInstance.invoke('check', item)); list.map(item => this.gridInstance.invoke('check', item));
}, },
refreshLayout() { refreshLayout() {
// console.log("---------DEBUG---refreshLayout: "); setTimeout(() => {
this.gridInstance.invoke('refreshLayout'); this.gridInstance.invoke('refreshLayout');
}, 150);
// this.gridInstance.invoke('refreshLayout');
}, },
refreshGrid() { refreshGrid() {
// console.log("refreshLayout",this.$refs['tuigrid' + this.gridName]) // console.log("refreshLayout",this.$refs['tuigrid' + this.gridName])

View File

@ -0,0 +1,93 @@
<template>
<div class="custom-pagination">
<a-pagination
:current="pageNum"
:total="totalCount"
:page-size="itemsPerPage"
:show-size-changer="useLimit"
:page-size-options="itemsPerPageArray.map(String)"
@change="handlePageChange"
@showSizeChange="changePageLeng"
/>
</div>
</template>
<script>
export default {
props: {
useLimit: {
type: Boolean,
default: true,
},
totalCount: {
type: Number,
default: 0,
},
pageNum: {
type: Number,
default: 0,
},
limit: {
type: Number,
default: 0,
},
itemsPerPageArray: {
type: Array,
default: () => [20, 50, 100],
},
},
data() {
return {
moveToPage: '',
};
},
computed: {
page: function() {
return this.numberOfPages + '-' + this.lastPage;
},
lastPage: function() {
//grid data가 없을 경우 1 리턴
if (this.totalCount == 0) return 1;
let pageLength = Math.floor(this.totalCount / this.itemsPerPage);
if (this.totalCount % this.itemsPerPage > 0) {
pageLength++;
}
return pageLength;
},
itemsPerPage: function() {
return this.limit;
},
numberOfPages: function() {
return Number(this.pageNum);
},
plusPage: function() {
return Number(this.pageNum) + 1;
},
minusPage: function() {
return Number(this.pageNum) - 1;
},
},
watch: {
totalCount: function(newData) {
return (this.moveToPage = newData > 0 ? this.moveToPage : '');
},
moveToPage: function() {
return (this.moveToPage = this.moveToPage.replaceAll(/[^0-9]/g, ''));
},
},
methods: {
handlePageChange(newPage) {
// Emit an event to the parent to load data for the selected page
this.$emit('loadData', newPage, this.itemsPerPage);
},
changePageLeng: function(current, newLimit) {
//부모 컴포넌트에서 loadData(데이터 조회) 구현
//this.$emit('loadData', this.pageNum, limit);
// limit 변경 시 1 페이지로 초기화
this.$emit('loadData', 1, newLimit);
},
},
};
</script>

View File

@ -2,9 +2,9 @@
<div class="d-flex justify-center align-center" <div class="d-flex justify-center align-center"
:class="directionBtn === 'vertically'?'flex-row':'flex-column'" :class="directionBtn === 'vertically'?'flex-row':'flex-column'"
style="gap: 12px"> style="gap: 12px">
<a-button @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost :icon="icons.remove" > <a-button @click="directionBtn === 'vertically' ? btnActionsFnc('removeRightToLeft') : btnActionsFnc('addLeftToRight')" type="primary" ghost :icon="directionBtn === 'vertically'? icons.remove :icons.add " class="custom-action-btn">
</a-button> </a-button>
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost :icon="icons.add"> <a-button @click="directionBtn === 'vertically' ? btnActionsFnc('removeRightToLeft') :btnActionsFnc('removeRightToLeft')" type="primary" ghost :icon="directionBtn === 'vertically'? icons.add :icons.remove" class="custom-action-btn">
</a-button> </a-button>
</div> </div>
</template> </template>

View File

@ -10,7 +10,7 @@ export default {
size: { size: {
type: String, type: String,
require: false, require: false,
default: "middle", // small, middle, large default: "default", // small, default, large
} }
}, },
methods: { methods: {

View File

@ -70,6 +70,7 @@ export default function getLineChartOption({
}, },
splitLine: { splitLine: {
lineStyle: { lineStyle: {
type: 'dashed', // Options: 'solid', 'dashed', 'dotted'
color: isDarkMode ? '#444444' : '#EEEEEE', color: isDarkMode ? '#444444' : '#EEEEEE',
}, },
}, },

View File

@ -0,0 +1,46 @@
// Sankey chart options
export function getSankeyChartOption({ isDarkMode = false, data = [], links = [] }) {
const chartOption = {
backgroundColor: '#FFFFFF',
series: [
{
data,
links,
layoutIterations: 0,
type: 'sankey',
left: 25.0,
top: 20.0,
right: 120,
bottom: 50.0,
nodeGap: 10,
nodeAlign: 'left',
lineStyle: {
color: 'source',
curveness: 0.5,
},
// nodeWidth:10,
// triggerEvent: true,
itemStyle: {
//color: '#1f77b4',
//borderColor: '#1f77b4'
},
label: {
color: isDarkMode
? '#FFFFFFD9'
: '#000000E0',
// fontFamily: 'Arial',
fontSize: 14,
},
},
],
tooltip: {
trigger: 'item',
},
};
return chartOption;
}
export default getSankeyChartOption;

View File

@ -12,15 +12,26 @@
</label> </label>
</v-col> </v-col>
<v-col :cols="item.label ? 7 : ''" > <v-col :cols="item.label ? 7 : ''" >
<v-checkbox <!-- <v-checkbox
v-model="chkValue" v-model="chkValue"
:disabled="disabledFlag" :disabled="disabledFlag"
:readonly="item.readonly || false" :readonly="item.readonly || false"
:required="item.required || false" :required="item.required || false"
:false-value="false" :false-value="false"
:color="isDarkMode ? '#fff' : '#1890ff'" :color="isDarkMode ? '#1668DC' : '#1890ff'"
@change="modifyValue" @change="modifyValue"
></v-checkbox> class="small-checkbox"
></v-checkbox> -->
<a-checkbox
v-model="chkValue"
:disabled="disabledFlag"
:readonly="item.readonly || false"
:required="item.required || false"
:false-value="false"
:color="isDarkMode ? '#1668DC' : '#1890ff'"
@change="modifyValue"
>
</a-checkbox>
</v-col> </v-col>
</v-row> </v-row>
</template> </template>
@ -141,7 +152,7 @@ export default {
modifyValue(e) { modifyValue(e) {
const dt = { const dt = {
columnName: this.item.valueNm, columnName: this.item.valueNm,
value: e, value: e.target.checked,
}; };
this.$emit('gridEditingFinish', dt); this.$emit('gridEditingFinish', dt);
}, },

View File

@ -3,12 +3,13 @@
<v-col v-if="item.label" :cols="item.labelCols !== undefined ? item.labelCols : item.cols == 12 ? 2 : 4"> <v-col v-if="item.label" :cols="item.labelCols !== undefined ? item.labelCols : item.cols == 12 ? 2 : 4">
<label for="" class="search-box-label"> <label for="" class="search-box-label">
<v-icon <v-icon
x-small v-if="item.iconShow"
:color="item.required ? '#fb8200' : 'primary'" small
class="mr-1" :class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
>mdi-record-circle</v-icon >$icoBulletPoint</v-icon
> >
{{ item.label }} {{ item.label }}
<span v-if="item.essential">*</span>
</label> </label>
<!-- <label for="" class="search-box-label ft-size_14 ft-clr_g-c"> <!-- <label for="" class="search-box-label ft-size_14 ft-clr_g-c">
{{ item.label }} {{ item.label }}
@ -39,12 +40,12 @@
</template> </template>
</v-col> </v-col>
<v-dialog v-model="dialog" scrollable width="540px"> <v-dialog v-model="dialog" scrollable width="504px">
<v-card style="height: 100%"> <v-card style="height: 100%">
<v-card-title> <v-card-title class="px-4">
<span class="custom-title-4">비밀번호 {{ isPassword }}</span> <span class="custom-title-4" style="padding-left: 1px;">비밀번호 {{ isPassword }}</span>
</v-card-title> </v-card-title>
<v-card-text class="pb-4"> <v-card-text class="pb-4 px-3">
<v-col> <v-col>
<label for="" class="search-box-label"> <label for="" class="search-box-label">
{{ isPassword }} 비밀번호를 입력하세요 {{ isPassword }} 비밀번호를 입력하세요
@ -75,8 +76,8 @@
<v-card-actions class="pb-4"> <v-card-actions class="pb-4">
<v-spacer></v-spacer> <v-spacer></v-spacer>
<!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> --> <!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> -->
<div class="pr-3"> <div class="d-flex" style="gap: 8px">
<a-button @click="close()" class="btn-default">삭제</a-button> <a-button @click="close()" class="ant-btn-popup-default">닫기</a-button>
<a-button type="primary" @click="setUpdate()" class="v-btn-add-text"> <a-button type="primary" @click="setUpdate()" class="v-btn-add-text">
확인 확인
</a-button> </a-button>

View File

@ -119,8 +119,7 @@
/> />
</div> --> </div> -->
<v-card-actions> <v-card-actions class="px-6 py-4 d-flex align-center justify-end">
<v-spacer></v-spacer>
<a-button color="primary" type="primary" @click="closePop()">확인</a-button> <a-button color="primary" type="primary" @click="closePop()">확인</a-button>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
@ -275,7 +274,12 @@ export default {
// const gridHeight = this.$refs.gridParent.offsetHeight - 30; // const gridHeight = this.$refs.gridParent.offsetHeight - 30;
const myOptions = { const myOptions = {
rowHeaders: ['rowNum'], rowHeaders: [
{
type: 'rowNum',
align: 'right',
},
],
columnOptions: { columnOptions: {
resizable: true, resizable: true,
minWidth: 100 minWidth: 100
@ -319,19 +323,19 @@ export default {
header: '주의', header: '주의',
width: 100, width: 100,
name: 'careStndVal', name: 'careStndVal',
align: 'center' align: 'right'
}, },
{ {
header: '경고', header: '경고',
width: 100, width: 100,
name: 'warnStndVal', name: 'warnStndVal',
align: 'center' align: 'right'
}, },
{ {
header: '가이드값', header: '가이드값',
width: 100, width: 100,
name: 'totVal', name: 'totVal',
align: 'center' align: 'right'
}, },
{ {
header: '알람내용', header: '알람내용',

View File

@ -37,6 +37,7 @@
:itemList="selectValueList01" :itemList="selectValueList01"
:label="'대상월'" :label="'대상월'"
@update:propsValue="selectValue01 = $event" @update:propsValue="selectValue01 = $event"
customClass="select-large"
/> />
</v-col> </v-col>
<v-col :cols="5.5" class="mr-2"> <v-col :cols="5.5" class="mr-2">
@ -49,9 +50,10 @@
:itemList="selectValueList02" :itemList="selectValueList02"
:label="'전년대비절감율'" :label="'전년대비절감율'"
@update:propsValue="selectValue02 = $event" @update:propsValue="selectValue02 = $event"
customClass="select-large"
/> />
</v-col> </v-col>
<a-button color="primary" dark @click="search()" icon="clock-circle" > <a-button class="ant-btn-popup-default" color="primary" dark @click="search()" icon="check-circle" size="large">
<!-- <template #icon> <!-- <template #icon>
<ClockCircleOutlined /> <ClockCircleOutlined />
</template> --> </template> -->
@ -65,13 +67,10 @@
<!-- <div id="chartParent" ref="chartParent" style="height: 100px"> --> <!-- <div id="chartParent" ref="chartParent" style="height: 100px"> -->
<div :style="'height: calc(50vh)'"> <div :style="'height: calc(50vh)'">
<div class="d-flex align-center justify-space-between pa-4" style="height: 10%">
<v-card-title class="pa-0 custom-title-4">사용량 계획</v-card-title>
</div>
<!-- <div id="chartParent" ref="chartParent" :style="'height: 80%'"> --> <!-- <div id="chartParent" ref="chartParent" :style="'height: 80%'"> -->
<div id="chartParent" ref="chartParent" style="height: 70%"> <div id="chartParent" ref="chartParent" style="height: 100%" class="px-6">
<component <component
class="w100 h100" class="w100 h100 py-7 custom-chart"
:is="loadChart ? 'Chart' : null" :is="loadChart ? 'Chart' : null"
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:modalId="modalId" :modalId="modalId"
@ -130,9 +129,8 @@
/> />
</div> --> </div> -->
<v-divider></v-divider>
<v-card-actions class="pa-5 d-flex align-center justify-end"> <v-card-actions class="pa-5 d-flex align-center justify-end">
<a-button color="primary" type="default" class="mr-2" dark @click="closePop()">취소</a-button> <a-button color="primary" class="mr-2 ant-btn-popup-default" dark @click="closePop()">취소</a-button>
<a-button color="primary" type="primary" dark @click="setUpdate()">확정</a-button> <a-button color="primary" type="primary" dark @click="setUpdate()">확정</a-button>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
@ -533,7 +531,7 @@ export default {
seriesData = data.map(item => ({ seriesData = data.map(item => ({
name: item.gubun == '2PLAN' ? '계획' : '전년실적', name: item.gubun == '2PLAN' ? '계획' : '전년실적',
type: item.gubun == '2PLAN' ? 'line' : 'bar', type: item.gubun == '2PLAN' ? 'line' : 'bar',
data: targetMonthList.map(obj => item[obj] || null) data: targetMonthList.map(obj => item[obj] || null),
// data: targetMonthList.map(obj => item[obj] || 0) // data: targetMonthList.map(obj => item[obj] || 0)
})); }));
this.nowSeriesData = seriesData; this.nowSeriesData = seriesData;
@ -558,7 +556,6 @@ export default {
series: seriesData, series: seriesData,
tooltip: tooltipData tooltip: tooltipData
}; };
// console.log('option', option);
await this.$nextTick(() => { await this.$nextTick(() => {
}); });
@ -601,7 +598,6 @@ export default {
sData2 = nowSeriesData.filter(item => { sData2 = nowSeriesData.filter(item => {
return item.name == '계획'; return item.name == '계획';
})[0]['data']; })[0]['data'];
// console.log('sData1', sData);
if(targetMonth.includes('qty')){ if(targetMonth.includes('qty')){
targetMonth = parseInt(targetMonth.slice(-2)); targetMonth = parseInt(targetMonth.slice(-2));
} }
@ -610,13 +606,11 @@ export default {
sData2[i] = sData[i] * targetRatio; sData2[i] = sData[i] * targetRatio;
} }
} }
// console.log('sData2', sData2);
seriesData = nowSeriesData.map(item => ({ seriesData = nowSeriesData.map(item => ({
...item, ...item,
data: item.name == '계획' ? sData2 : item.data data: item.name == '계획' ? sData2 : item.data
})); }));
// console.log('seriesData', seriesData);
await this.$nextTick(() => { await this.$nextTick(() => {
}); });

View File

@ -8,15 +8,8 @@
</label> </label>
</v-col> </v-col>
<v-col :cols="textCols"> <v-col :cols="textCols">
<v-text-field <v-text-field readonly v-model="selectValue" append-icon="" :class="['v-input__custom', customClass]"
readonly @click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true" :required="required || false"
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" :disabled="disabled || false"
:placeholder="placeholder" :placeholder="placeholder"
> >
@ -26,31 +19,29 @@
</template> </template>
</v-text-field> </v-text-field>
</v-col> </v-col>
<v-dialog ref="popModal" v-model="dialog" width="800" scrollable> <v-dialog ref="popModal" v-model="dialog" width="800" content-class="custom-dialog" scrollable>
<v-card style="height: 90vh;"> <v-card style="height: 100%;">
<v-card-title class="px-5 py-4 d-flex align-center justify-space-between"> <v-card-title class="px-5 py-4 d-flex align-center justify-space-between">
<span class="custom-title-4">설비 선택</span> <span class="custom-title-4">설비 선택</span>
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button> <a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
</v-card-title> </v-card-title>
<div class="pa-2 pt-0"> <div class="px-5 pt-2">
<!-- <v-card class="searchFilter"> <!-- <v-card class="searchFilter">
</v-card> --> </v-card> -->
<v-row align="end" class="searchFilter"> <v-row align="end">
<v-col :cols="3.5"> <v-col :cols="3.5">
<!-- 설비그룹 --> <!-- 설비그룹 -->
<component :is="'SelectBox'" :propsValue="selectValue01" :itemList="selectValueList01" <component :is="'SelectBox'" :propsValue="selectValue01" :itemList="selectValueList01"
:label="'설비그룹'" :disabled="eqpmGrpDisabled" :label="'설비그룹'" :disabled="eqpmGrpDisabled" @update:propsValue="selectValue01 = $event"
@update:propsValue="selectValue01 = $event" :labelCols="12" :textCols="12" :labelCols="12" :textCols="12" :iconShow="true" />
:iconShow="true" />
</v-col> </v-col>
<v-col :cols="3.5"> <v-col>
<!-- FAB --> <!-- FAB -->
<component :is="'SelectBoxMulti'" :propsValue="selectValue02" <component :is="'SelectBoxMulti'" :propsValue="selectValue02" :itemList="selectValueList02"
:itemList="selectValueList02" :label="'FAB'" :labelCols="12" :multiple="true" :label="'FAB'" :labelCols="12" :multiple="true" :disabled="fabDisabled"
:disabled="fabDisabled" @update:propsValue="selectValue02 = $event" :textCols="12" @update:propsValue="selectValue02 = $event" :textCols="12" :iconShow="true" />
:iconShow="true" />
</v-col> </v-col>
<v-col :cols="3.5"> <v-col >
<v-row> <v-row>
<v-col :cols="12" class="py-0"> <v-col :cols="12" class="py-0">
<label for="" class="search-box-label"> <label for="" class="search-box-label">
@ -59,9 +50,8 @@
</label> </label>
</v-col> </v-col>
<v-col :cols="12" class="pt-0"> <v-col :cols="12" class="pt-0">
<v-text-field append-icon="" class="v-input__custom" outlined <v-text-field append-icon="" class="v-input__custom" outlined :hide-details="true"
:hide-details="true" v-model="searchWord" @keyup.enter="search"><template v-model="searchWord" @keyup.enter="search"><template v-slot:append>
v-slot:append>
<!-- Custom SVG icon --> <!-- Custom SVG icon -->
<v-icon>$icoSearch</v-icon> <v-icon>$icoSearch</v-icon>
@ -70,7 +60,11 @@
</v-row> </v-row>
</v-col> </v-col>
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button> <v-col :cols="2" class="last-col mr-2">
<a-button icon="search" :ripple="false" type="primary" @click="search()"
class="search-button">조회</a-button>
</v-col>
</v-row> </v-row>
<!-- <v-row align="center" no-gutters style="margin-top: 14px;"> <!-- <v-row align="center" no-gutters style="margin-top: 14px;">
@ -91,13 +85,13 @@
</v-row> --> </v-row> -->
</div> </div>
<v-card-text class="px-2 w100"> <div class="pa-5" style="height:calc(100% - 30px)">
<div ref="modalGridParent" style="height: 450px;" class="h100 w100"> <div ref="modalGridParent" class="h100 w100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" <component :ref="gridName" :is="loadGrid ? 'Grid' : null"
:dataPath="searchParam.eqpmSelectPopData.eqpmSelectPop" :gridName="gridName" :dataPath="searchParam.eqpmSelectPopData.eqpmSelectPop" :gridName="gridName"
:parentPrgmId="parentPrgmId" @getRowsData="getRowData" /> :parentPrgmId="parentPrgmId" @getRowsData="getRowData" />
</div> </div>
</v-card-text> </div>
<v-card-actions class="px-6 py-4 d-flex align-center justify-end"> <v-card-actions class="px-6 py-4 d-flex align-center justify-end">
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button> <a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
@ -270,7 +264,7 @@ export default {
}, },
chkDialog() { chkDialog() {
if (this.isMulti) { if (this.isMulti) {
this.$store.state.pageData[this.parentPrgmId][this.modalDataKey][this.myModalKey][this.gridName].option.rowHeaders = [{ type: 'checkbox' }]; this.$store.state.pageData[this.parentPrgmId][this.modalDataKey][this.myModalKey][this.gridName].option.rowHeaders = [{ type: 'checkbox', width: 72 }];
} else { } else {
this.$store.state.pageData[this.parentPrgmId][this.modalDataKey][this.myModalKey][this.gridName].option.rowHeaders = []; this.$store.state.pageData[this.parentPrgmId][this.modalDataKey][this.myModalKey][this.gridName].option.rowHeaders = [];
} }
@ -410,8 +404,8 @@ export default {
rowHeight: 'auto', rowHeight: 'auto',
}; };
if (this.isMulti) { if (this.isMulti) {
// myOptions['rowHeaders'] = [{ type: 'checkbox' }]; myOptions['rowHeaders'] = [{ type: 'checkbox' }];
// myOptions['rowHeight'] = 'auto'; myOptions['rowHeight'] = 'auto';
} }
@ -437,18 +431,15 @@ export default {
{ {
header: 'FAB', header: 'FAB',
name: 'fabNm', name: 'fabNm',
align: 'center'
}, },
{ {
header: '설비ID', header: '설비ID',
name: 'eqpmId', name: 'eqpmId'
align: 'center',
// hidden:true // hidden:true
}, },
{ {
header: '설비명', header: '설비명',
name: 'eqpmNm', name: 'eqpmNm'
align: 'center'
}, },
{ {
header: 'eccId', header: 'eccId',
@ -537,7 +528,6 @@ export default {
this.getChecked(); this.getChecked();
} }
}); });
}, },
setUpdate() { setUpdate() {
if (this.isMulti) { if (this.isMulti) {
@ -588,3 +578,16 @@ var eqpmSelectPop = {
} }
</script> </script>
<style lang="scss" scoped>
::v-deep {
.last-col {
flex-basis: content;
}
.v-dialog {
overflow-y: hidden;
}
}
</style>

View File

@ -1,5 +1,5 @@
<template> <template>
<v-row class="search-box no-gutters" align="center"> <v-row class="search-box" align="center">
<v-col :cols="option.labelCols" class="py-0"> <v-col :cols="option.labelCols" class="py-0">
<label for="" class="search-box-label"> <label for="" class="search-box-label">
<v-icon v-if="item.iconShow" small <v-icon v-if="item.iconShow" small

View File

@ -81,6 +81,10 @@ export default {
type: String, type: String,
require: false, require: false,
}, },
required: {
type: Boolean,
default: false
},
}, },
data() { data() {
return {}; return {};

View File

@ -21,6 +21,7 @@
outlined outlined
append-icon="" append-icon=""
:class="['v-select__custom', customClass]" :class="['v-select__custom', customClass]"
:menu-props="{ top: false, offsetY: true }"
><template v-slot:append> ><template v-slot:append>
<v-icon>$icoChevronDown</v-icon> <v-icon>$icoChevronDown</v-icon>
</template></v-select> </template></v-select>

View File

@ -1,7 +1,10 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center" style="min-height: 80px;"> <div class="d-flex justify-space-between align-center pb-5" >
<span class="txt custom-subtitle-tab">Data Set TAG 연결 정보</span> <!-- <span class="txt custom-title-4">Data Set TAG 연결 정보</span> -->
<v-card-title class="pa-0">
Data Set TAG 연결 정보
</v-card-title>
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailDataSetTagList" <Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailDataSetTagList"
:btnActionsFnc="btnActions" /> :btnActionsFnc="btnActions" />
</div> </div>
@ -14,22 +17,20 @@
@gridEditingFinish="gridEditingFinish" /> @gridEditingFinish="gridEditingFinish" />
</div> </div>
<div ref="formParent" style="min-height: 100px;" class="w100 h100"> <div ref="formParent" class="h100">
<v-row ref="contents" class="w100"> <v-row align="end" ref="contents" class="">
<v-col :cols="6"> <v-col>
<component :is="'Datepicker'" :parentPrgmId="parentPrgmId" :label="'검색기간'" :labelCols="12" :textCols="12" /> <component :is="'Datepicker'" :parentPrgmId="parentPrgmId" :label="'검색기간'" :labelCols="12" :textCols="12" />
</v-col> </v-col>
<v-col :cols="4"> <v-col >
<component :is="'selectCodeList'" :parentPrgmId="parentPrgmId" :label="'주기'" dataKey="mdlDataTerm" <component :is="'selectCodeList'" :parentPrgmId="parentPrgmId" :label="'주기'" dataKey="mdlDataTerm"
:sendParam="{ commGrpCd: 'MDL_DATA_TERM', useFg: '1' }" :addAll="false" :labelCols="12" :textCols="12" :iconShow="true" /> :sendParam="{ commGrpCd: 'MDL_DATA_TERM', useFg: '1' }" :addAll="false" :labelCols="12" :textCols="12" :iconShow="true" />
</v-col> </v-col>
<v-col class="text-right align-self-end">
<a-button @click="jamoviProcClickEvent('view1')" type="primary" :ripple="false" class="mr-1">데이터 분석</a-button>
</v-col>
<!-- <v-card class="searchFilter w100">
<v-row align="center" no-gutters>
</v-row> </v-row>
</v-card> --> <v-row align="center" no-gutters class="searchFilter mt-2">
<v-col class="d-flex justify-end">
<a-button @click="jamoviProcClickEvent('view1')" type="primary" :ripple="false" class="mb-1">데이터 분석</a-button>
</v-col>
</v-row> </v-row>
</div> </div>
</div> </div>
@ -156,7 +157,7 @@ export default {
{ {
header: '모델 Data 구분', header: '모델 Data 구분',
name: 'mdlDataTypeCd', name: 'mdlDataTypeCd',
align: 'center', align: 'left',
width: 120, width: 120,
formatter({ value }) { formatter({ value }) {
var retVal = ''; var retVal = '';
@ -173,7 +174,7 @@ export default {
{ {
header: '사용여부', header: '사용여부',
name: 'useFg', name: 'useFg',
align: 'center', align: 'left',
width: 100, width: 100,
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
@ -189,7 +190,7 @@ export default {
// } // }
// } // }
}, },
{ header: '비고', name: 'rmrk', align: 'center' }, { header: '비고', name: 'rmrk', align: 'left' },
]; ];
this.setGridColumn({ this.setGridColumn({

View File

@ -4,7 +4,7 @@
class="d-flex justify-space-between align-center" class="d-flex justify-space-between align-center"
style="height: 80px;" style="height: 80px;"
> >
<span class="txt custom-title-4-new">공정 추가 정보</span> <span class="txt custom-subtitle-tab">공정 추가 정보</span>
<Buttons <Buttons
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:bindingData="gridName" :bindingData="gridName"

View File

@ -4,14 +4,14 @@
class="d-flex justify-space-between align-center" class="d-flex justify-space-between align-center"
style="height: 80px;" style="height: 80px;"
> >
<span class="txt custom-title-4-new">공정 입출력 정보</span> <span class="txt custom-subtitle-tab">공정 입출력 정보</span>
<Buttons <Buttons
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:bindingData="gridName" :bindingData="gridName"
:btnActionsFnc="btnActions" :btnActionsFnc="btnActions"
/> />
</div> </div>
<div ref="gridParent" style="height: calc(100vh - 760px);"> <div ref="gridParent" style="height: calc(90vh - 700px);">
<component <component
:ref="gridName" :ref="gridName"
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
@ -21,7 +21,7 @@
:innerTabGridInfo="innerTabGridInfo" :innerTabGridInfo="innerTabGridInfo"
/> />
</div> </div>
<div> <div style="height: 25vh;" class="mt-5">
<component <component
:is="'Form'" :is="'Form'"
:bindingData="gridName" :bindingData="gridName"
@ -98,17 +98,19 @@ export default {
watch: { watch: {
selectedObjId(val) { selectedObjId(val) {
if (val === 'TAG') { if (val === 'TAG') {
this.detailList[2].class = 'py-2 d-none'; this.detailList[1].class = 'd-none';
this.detailList[3].class = 'py-2 d-none'; this.detailList[2].class = 'd-block pl-4';
this.detailList[4].class = 'py-2'; this.detailList[3].class = 'd-block';
this.detailList[5].class = 'py-2';
} else { } else {
// }else if(val==="READ_PLC"){ // }else if(val==="READ_PLC"){
this.detailList[5].class = 'py-2 d-none'; this.detailList[3].class = 'd-block';
this.detailList[4].class = 'py-2 d-none'; this.detailList[2].class = 'd-none';
this.detailList[3].class = 'py-2'; this.detailList[1].class = 'd-block pl-4';
this.detailList[2].class = 'py-2';
} }
this.detailList[4].class = 'pl-4 mt-2';
console.log(val)
console.log(this.detailList)
}, },
}, },
created() {}, created() {},
@ -188,6 +190,7 @@ export default {
{ header: '대상 명', name: 'objNm', width: 300, align: 'left' }, { header: '대상 명', name: 'objNm', width: 300, align: 'left' },
{ {
header: '에너지원 명', header: '에너지원 명',
width: 150,
name: 'ercId', name: 'ercId',
align: 'left', align: 'left',
formatter({ value }) { formatter({ value }) {
@ -204,8 +207,9 @@ export default {
}, },
{ {
header: '대상 유형', header: '대상 유형',
width: 150,
name: 'objKind', name: 'objKind',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
var retVal = ''; var retVal = '';
@ -221,7 +225,8 @@ export default {
{ {
header: '투입 생산 유형', header: '투입 생산 유형',
name: 'inProdKind', name: 'inProdKind',
align: 'center', width: 150,
align: 'left',
formatter({ value }) { formatter({ value }) {
var retVal = ''; var retVal = '';
@ -237,7 +242,8 @@ export default {
{ {
header: '계산 여부', header: '계산 여부',
name: 'calcFg', name: 'calcFg',
align: 'center', width: 150,
align: 'left',
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
const newValue = _this.pageData.useFgList.filter( const newValue = _this.pageData.useFgList.filter(
@ -247,7 +253,7 @@ export default {
// return value === true ? "사용" : "사용안함"; // return value === true ? "사용" : "사용안함";
}, },
}, },
{ header: '분배율(1~100)', name: 'distRt', align: 'right' }, { header: '분배율(1~100)', name: 'distRt', align: 'right', width: 150 },
{ header: '사업장', name: 'blocId', align: 'center', hidden: true }, { header: '사업장', name: 'blocId', align: 'center', hidden: true },
{ header: '등록 사용자', name: 'regUserNo', hidden: true }, { header: '등록 사용자', name: 'regUserNo', hidden: true },
{ header: '등록 일자', name: 'regDttm', hidden: true }, { header: '등록 일자', name: 'regDttm', hidden: true },
@ -374,7 +380,7 @@ const myDetail = [
label: '대상 유형', label: '대상 유형',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4', class: 'pr-4',
list: 'emMapDivList', list: 'emMapDivList',
valueNm: 'objKind', valueNm: 'objKind',
itemText: 'commCdNm', itemText: 'commCdNm',
@ -391,7 +397,7 @@ const myDetail = [
valueNm: 'objId', valueNm: 'objId',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'pt-2 pb-0 mb-0 pl-4', class: 'pl-4 py-2',
required: true, required: true,
bindNm: 'objNm', bindNm: 'objNm',
labelCols: 12, labelCols: 12,
@ -400,24 +406,6 @@ const myDetail = [
noText: true, noText: true,
iconShow: true, iconShow: true,
}, },
{
// 공백 처리
type: 'Label',
cols: 6,
class: 'py-2 pr-4',
disabled: false,
},
{
type: 'InputText',
valueNm: 'objNm',
readonly: true,
disabled: true,
cols: 6,
class: 'pl-4',
labelCols: 12,
textCols: 12,
iconShow: true,
},
{ {
type: 'EvtObjPop', type: 'EvtObjPop',
labelContent: '대상 항목', labelContent: '대상 항목',
@ -428,16 +416,23 @@ const myDetail = [
disabled: true, disabled: true,
required: true, required: true,
cols: 6, cols: 6,
class: 'd-none pr-4', class: 'd-none pr-4 py-2',
disableContent: true, disableContent: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
}, },
{
// 공백 처리
type: 'Label',
cols: 6,
class: 'py-2 pr-4',
disabled: false,
},
{ {
type: 'InputText', type: 'InputText',
cols: 6, cols: 6,
class: 'd-none pt-0 pl-4', class: 'pt-0 pl-4 mt-2 py-2',
valueNm: 'objNm', valueNm: 'objNm',
readonly: true, readonly: true,
disabled: true, disabled: true,
@ -450,7 +445,7 @@ const myDetail = [
label: '에너지원', label: '에너지원',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
list: 'ercNmList', list: 'ercNmList',
valueNm: 'ercId', valueNm: 'ercId',
itemText: 'text', itemText: 'text',
@ -465,7 +460,7 @@ const myDetail = [
label: '투입생산유형', label: '투입생산유형',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
list: 'cmInoutList', list: 'cmInoutList',
valueNm: 'inProdKind', valueNm: 'inProdKind',
itemText: 'commCdNm', itemText: 'commCdNm',
@ -478,7 +473,7 @@ const myDetail = [
{ {
type: 'CheckBox', type: 'CheckBox',
cols: 6, cols: 6,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
label: '계산 여부', label: '계산 여부',
valueNm: 'calcFg', valueNm: 'calcFg',
disabled: false, disabled: false,
@ -495,7 +490,7 @@ const myDetail = [
valueNm: 'distRt', valueNm: 'distRt',
readonly: false, readonly: false,
cols: 6, cols: 6,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
required: true, required: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
@ -503,3 +498,10 @@ const myDetail = [
}, },
]; ];
</script> </script>
<style lang="scss" scoped>
::v-deep{
.tui-grid-layer-state{
top: 40px !important;
}
}
</style>

View File

@ -1,14 +1,16 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center my-5" > <div class="d-flex justify-space-between align-center mb-5" >
<span class="txt custom-subtitle-tab">설비 추가 정보</span> <v-card-title class="txt custom-title-4 pa-0">
설비 추가 정보
</v-card-title>
<Buttons <Buttons
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:bindingData="gridName" :bindingData="gridName"
:btnActionsFnc="btnActions" :btnActionsFnc="btnActions"
/> />
</div> </div>
<div ref="gridParent" style="height: calc(100vh - 520px);"> <div ref="gridParent" class="w100" style="height: calc(100vh - 520px);">
<Grid <Grid
:ref="gridName" :ref="gridName"
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
@ -120,10 +122,10 @@ export default {
bodyHeight: gridHeight, bodyHeight: gridHeight,
minBodyHeight: gridHeight, minBodyHeight: gridHeight,
header: { header: {
height: 28, height: 38,
}, },
rowHeight: 29, // rowHeight: 39,
minRowHeight: 29, // minRowHeight: 29,
selectionUnit: 'row', selectionUnit: 'row',
editingEvent: 'click', editingEvent: 'click',
}; };
@ -263,11 +265,12 @@ export default {
} }
return retVal; return retVal;
}, },
minWidth: 230,
}, },
{ {
header: 'Data 구분', header: 'Data 구분',
name: 'addInfoDataKind', name: 'addInfoDataKind',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
const newValue = addInfoDataKindList.filter( const newValue = addInfoDataKindList.filter(
@ -278,6 +281,7 @@ export default {
} }
return retVal; return retVal;
}, },
minWidth: 330,
}, },
{ {
header: '숫자 값', header: '숫자 값',
@ -296,7 +300,7 @@ export default {
{ {
header: '추가 정보 값', header: '추가 정보 값',
name: 'addInfoVal', name: 'addInfoVal',
align: 'center', align: 'left',
renderer: { renderer: {
type: CustomRenderer, type: CustomRenderer,
}, },
@ -308,6 +312,7 @@ export default {
// console.log('test :', test); // console.log('test :', test);
return data.row.addInfoDataKind; return data.row.addInfoDataKind;
}, },
minWidth: 330,
}, },
//{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text", //{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text",
//}, //},
@ -414,3 +419,4 @@ const dataPathDataExample = getPathDataExample({
type: '사용', note: '-' type: '사용', note: '-'
}); });
</script> </script>
<style lang="scss" scoped> </style>

View File

@ -1,7 +1,10 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center my-5" > <div class="d-flex justify-space-between align-center mb-5" >
<span class="txt custom-subtitle-tab">설비 상수 정보</span> <!-- <span class="txt custom-subtitle-tab">설비 상수 정보</span> -->
<v-card-title class="txt custom-title-4 pa-0">
설비 상수 정보
</v-card-title>
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" /> <Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
</div> </div>
<div ref="gridParent" style="min-height: calc(100vh - 800px);"> <div ref="gridParent" style="min-height: calc(100vh - 800px);">
@ -160,11 +163,11 @@ export default {
{ header: '회사 ID', name: 'comId', hidden: true }, { header: '회사 ID', name: 'comId', hidden: true },
{ header: '설비 번호', name: 'eqpmId', hidden: true }, { header: '설비 번호', name: 'eqpmId', hidden: true },
// { header: '대상항목', name: 'objId', align: 'center', hidden: true}, // { header: '대상항목', name: 'objId', align: 'center', hidden: true},
{ header: '물리량 ID', name: 'pysclQtyId', align: 'left' }, { header: '물리량 ID', name: 'pysclQtyId', align: 'left', minWidth: 230, },
{ header: '물리량 명', name: 'pysclQtyNm', align: 'left' }, { header: '물리량 명', name: 'pysclQtyNm', align: 'left', minWidth: 230, },
{ header: '물리량값', name: 'pysclQtyVal', align: 'left' }, { header: '물리량값', name: 'pysclQtyVal', align: 'left', minWidth: 230, },
// { header: '대상항목', name: 'objNm', align: 'left'}, // { header: '대상항목', name: 'objNm', align: 'left'},
{ header: '대상항목', name: 'objId', align: 'left' }, { header: '대상항목', name: 'objId', align: 'left', minWidth: 230, },
{ {
header: '에너지원 명', header: '에너지원 명',
name: 'ercId', name: 'ercId',
@ -386,7 +389,7 @@ const myEqpmConstDetail = [
required: true, required: true,
openMode: 'CONST', openMode: 'CONST',
cols: 6, cols: 6,
class: 'py-3 pl-4', class: 'pt-3 pb-1 pl-4',
eqpmGrpDisableFlag: true, eqpmGrpDisableFlag: true,
// eqpmGrpId:'', // eqpmGrpId:'',
labelCols: 12, labelCols: 12,
@ -406,7 +409,7 @@ const myEqpmConstDetail = [
disabled: true, disabled: true,
readonly: true, readonly: true,
cols: 6, cols: 6,
class: 'py-3 pt-1 pl-4', class: 'pb-3 pt-0 pl-4',
align: 'right', align: 'right',
// class: 'py-2 d-none', // class: 'py-2 d-none',
labelCols: 12, labelCols: 12,
@ -441,3 +444,11 @@ const dataPathDataExample = getPathDataExample({
field2: '2222', field2: '2222',
}); });
</script> </script>
<style lang="scss" scoped>
::v-deep {
.tui-grid-layer-state {
top: 40px !important;
}
}
</style>

View File

@ -1,14 +1,17 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center my-5" > <div class="d-flex justify-space-between align-center mb-5" >
<span class="txt custom-subtitle-tab">설비 입출력 정보</span> <!-- <span class="txt custom-subtitle-tab">설비 입출력 정보</span> -->
<v-card-title class="txt custom-title-4 pa-0">
설비 입출력 정보
</v-card-title>
<Buttons <Buttons
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:bindingData="gridName" :bindingData="gridName"
:btnActionsFnc="btnActions" :btnActionsFnc="btnActions"
/> />
</div> </div>
<div ref="gridParent" style="height: calc(100vh - 800px);"> <div ref="gridParent" style="height: calc(100vh - 700px);">
<Grid <Grid
:ref="gridName" :ref="gridName"
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
@ -18,7 +21,7 @@
:innerTabGridInfo="innerTabGridInfo" :innerTabGridInfo="innerTabGridInfo"
/> />
</div> </div>
<div style="min-height: calc(100vh - 900px);" class="mt-4"> <div style="height: 60vh;" class="mt-5">
<component <component
:is="'Form'" :is="'Form'"
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
@ -114,7 +117,7 @@ export default {
this.detailList[2].class = 'py-3 d-none'; this.detailList[2].class = 'py-3 d-none';
this.detailList[3].class = 'py-3 pl-4 pt-1 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[5].class = 'py-3 pl-4';
this.detailList[6].class = 'py-3 pl-4 pt-0'; this.detailList[6].class = 'py-3 pl-4 pt-0';
} else { } else {
@ -226,11 +229,12 @@ export default {
return retVal; return retVal;
}, },
minWidth: 150,
}, },
{ {
header: '대상 유형', header: '대상 유형',
name: 'objKind', name: 'objKind',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
var retVal = ''; var retVal = '';
@ -242,9 +246,10 @@ export default {
return retVal; return retVal;
}, },
minWidth: 150,
}, },
{ header: '물리량', name: 'pysclQtyId', align: 'left', hidden: true }, { header: '물리량', name: 'pysclQtyId', align: 'left', hidden: true },
{ header: '물리량', name: 'pysclQtyNm', align: 'left' }, { header: '물리량', name: 'pysclQtyNm', align: 'left', minWidth: 150, },
{ {
header: '물리량값', header: '물리량값',
name: 'pysclQtyVal', name: 'pysclQtyVal',
@ -261,7 +266,7 @@ export default {
{ {
header: '계산여부', header: '계산여부',
name: 'calcFg', name: 'calcFg',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
const newValue = _this.pageData.useFgList.filter( const newValue = _this.pageData.useFgList.filter(
@ -269,6 +274,7 @@ export default {
); );
return newValue[0].commCdNm; return newValue[0].commCdNm;
}, },
minWidth: 100,
}, },
{ header: '분배율', name: 'distRt', align: 'right' }, { header: '분배율', name: 'distRt', align: 'right' },
{ header: '등록 사용자', name: 'regUserNo', hidden: true }, { header: '등록 사용자', name: 'regUserNo', hidden: true },
@ -612,3 +618,10 @@ const myEqpmIaoDetail = [
}, },
]; ];
</script> </script>
<style lang="scss" scoped >
::v-deep {
.tui-grid-layer-state {
top: 40px !important;
}
}
</style>

View File

@ -1,8 +1,8 @@
<template> <template>
<div> <div>
<div <div
class="d-flex justify-space-between align-center" class="d-flex justify-space-between mb-3 pr-4"
style="height: 80px;" style="height: 45px;"
> >
<span class="txt custom-subtitle-tab">검침 대상 추가 정보</span> <span class="txt custom-subtitle-tab">검침 대상 추가 정보</span>
<Buttons <Buttons
@ -102,7 +102,7 @@ export default {
this.gridInit(); this.gridInit();
}, },
gridInit() { gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 30; const gridHeight = this.$refs.gridParent.offsetHeight - 31;
const myOptions = { const myOptions = {
columnOptions: { columnOptions: {
@ -113,8 +113,8 @@ export default {
header: { header: {
height: 28, height: 28,
}, },
rowHeight: 29, rowHeight: 36,
minRowHeight: 29, minRowHeight: 36,
selectionUnit: 'row', selectionUnit: 'row',
editingEvent: 'click', editingEvent: 'click',
}; };
@ -143,7 +143,6 @@ export default {
class CustomRenderer { class CustomRenderer {
constructor(props) { constructor(props) {
//const { min, max } = props.columnInfo.renderer.options; //const { min, max } = props.columnInfo.renderer.options;
//console.log('props: %o', props);
const el = document.createElement('input'); const el = document.createElement('input');
if ( if (
@ -215,15 +214,12 @@ export default {
} }
$(el).addClass('tui-grid-content-text'); $(el).addClass('tui-grid-content-text');
} }
// console.log('props: %o', props);
// console.log('el: %o', el);
this.el = el; this.el = el;
this.render(props); this.render(props);
} }
change(ev) { change(ev) {
//console.log('props: %o', ev);
if (ev.target.checked) { if (ev.target.checked) {
ev.target.value = 1; ev.target.value = 1;
} else { } else {
@ -245,7 +241,6 @@ export default {
} else { } else {
this.el.value = String(props.value); this.el.value = String(props.value);
} }
//console.log('props: %o', props);
} }
mounted() { mounted() {
@ -275,7 +270,7 @@ export default {
{ {
header: 'Data 구분', header: 'Data 구분',
name: 'addInfoDataKind', name: 'addInfoDataKind',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
const newValue = addInfoDataKindList.filter( const newValue = addInfoDataKindList.filter(
@ -323,8 +318,6 @@ export default {
}, },
//{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text", //{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text",
// formatter({ value, row , column}) { // formatter({ value, row , column}) {
// console.log("addInfoVal row : ", row);
// console.log("addInfoVal state : ", column);
// if(row.addInfoDataKind === "NUM"){ // if(row.addInfoDataKind === "NUM"){
// column.align = "right"; // column.align = "right";
// }else{ // }else{
@ -447,3 +440,15 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped >
::v-deep {
.tui-grid-layer-state {
top: 40px !important;
}
.tui-grid-cell-content-editor {
height: 36px !important;
}
}
</style>

View File

@ -332,7 +332,7 @@ const myReadPlcTagDetail = [
valueNm2: 'tagNm', valueNm2: 'tagNm',
disabled: true, disabled: true,
cols: 6, cols: 6,
class: 'pr-4 pb-2 py-3', class: 'pr-4 pb-2 py-2 mt-2',
required: true, required: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
@ -345,7 +345,7 @@ const myReadPlcTagDetail = [
valueNm: 'ercId', valueNm: 'ercId',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'pl-4 py-3', class: 'pl-4 pb-2 py-3 mt-2',
list: 'ercNmList', list: 'ercNmList',
itemText: 'text', itemText: 'text',
itemValue: 'value', itemValue: 'value',
@ -360,7 +360,7 @@ const myReadPlcTagDetail = [
readonly: true, readonly: true,
cols: 6, cols: 6,
textCols: 12, textCols: 12,
class: 'pt-1 py-3 pr-4', class: 'pt-1 py-3 pr-4 mt-2',
required: true, required: true,
}, },
{ {
@ -372,7 +372,7 @@ const myReadPlcTagDetail = [
valueNm: 'distRt', valueNm: 'distRt',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-3 pr-4', class: 'py-3 pr-4 mt-2',
inputType: 'number', inputType: 'number',
min: 1, min: 1,
max: 100, max: 100,
@ -387,7 +387,7 @@ const myReadPlcTagDetail = [
valueNm: 'reprTagFg', valueNm: 'reprTagFg',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-3 pl-4', class: 'py-3 pl-4 mt-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: true, required: true,
labelCols: 12, labelCols: 12,
@ -401,7 +401,7 @@ const myReadPlcTagDetail = [
valueNm: 'useFg', valueNm: 'useFg',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-3 pr-4', class: 'py-3 pr-4 mt-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: true, required: true,
labelCols: 12, labelCols: 12,
@ -414,7 +414,7 @@ const myReadPlcTagDetail = [
valueNm: 'rmrk', valueNm: 'rmrk',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-3 pl-4', class: 'py-3 pl-4 mt-2',
inputType: 'string', inputType: 'string',
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,

View File

@ -32,15 +32,18 @@
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<v-col cols="12" lg="9"> <v-col cols="12" lg="9" class="pl-0">
<v-card> <v-card>
<v-card-title> <v-card-title>
<span class="custom-title-4">역할 메뉴별 권한</span> <span class="custom-title-4">역할 메뉴별 권한</span>
</v-card-title> </v-card-title>
<v-row align="center" no-gutters :style="{ height: 'calc(100% - 62px)' }" class="px-5"> <v-row align="center" no-gutters :style="{ height: 'calc(100% - 62px)' }" class="px-5">
<v-col class="h100" style="max-width: 400px;"> <v-col class="h100" style="max-width: 400px;">
<span class="body-1 font-weight-bold d-flex align-center" <v-card-title class="pl-0 pb-3">
:style="{ minHeight: '36px' }">[미배정]메뉴리스트</span> <span class="custom-title-4">[미배정]메뉴리스트</span>
</v-card-title>
<!-- <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="px-0 mt-2" style="height: 60vh;">
<!-- <div <!-- <div
ref="treeGridParent" ref="treeGridParent"
@ -55,15 +58,18 @@
<ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3" <ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3"
:btnActionsFnc="dualGridBtnActions" /> :btnActionsFnc="dualGridBtnActions" />
</v-col> --> </v-col> -->
<div class="px-2"> <div class="pr-2 arrow-button">
<ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3" <ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3"
:btnActionsFnc="dualGridBtnActions"/> :btnActionsFnc="dualGridBtnActions"/>
</div> </div>
<v-col :cols="7" class="h100"> <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 pl-0">
<v-col :cols="11"> <v-col :cols="11">
<span class="body-1 font-weight-bold d-flex align-center" <v-card-title class="pl-0 pb-3">
:style="{ minHeight: '36px' }">[배정]메뉴별권한 리스트</span> <span class="custom-title-4">[배정]메뉴별권한 리스트</span>
</v-card-title>
<!-- <span class="body-1 font-weight-bold d-flex align-center"
:style="{ minHeight: '36px' }">[배정]메뉴별권한 리스트</span> -->
<!-- <span class="body-1 font-weight-bold">[배정]메뉴별권한 리스트</span> --> <!-- <span class="body-1 font-weight-bold">[배정]메뉴별권한 리스트</span> -->
</v-col> </v-col>
<v-col :cols="1" class="text-right"> <v-col :cols="1" class="text-right">
@ -805,4 +811,23 @@ function numberFormatter({ value }) {
return value; return value;
} }
} }
</script> </script>
<style lang="scss" scoped>
::v-deep {
.arrow-button button {
display: flex;
justify-content: center;
align-items: center;
width: 24px;
height: 24px;
}
.arrow-button svg {
width: 14px;
height: 14px;
}
}
</style>

View File

@ -1,5 +1,6 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<CommonPageTitle />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -205,12 +206,12 @@ export default {
const _this = this; const _this = this;
const myColumns = [ const myColumns = [
{ header: '역할ID', name: 'roleId', align: 'center' }, { header: '역할ID', name: 'roleId', align: 'left' },
{ header: '역할명', name: 'roleNm' }, { header: '역할명', name: 'roleNm' },
{ {
header: '사용여부', header: '사용여부',
name: 'useFg', name: 'useFg',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
const newValue = _this.pageData.useFgList.filter( const newValue = _this.pageData.useFgList.filter(
@ -431,7 +432,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: true, required: true,
}, },
@ -444,7 +445,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
}, },
// { // {
// type: "InputText", // type: "InputText",
@ -463,7 +464,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
{ {
@ -475,7 +476,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
{ {
@ -487,7 +488,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
{ {
@ -499,7 +500,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
]; ];

View File

@ -1,6 +1,7 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<!-- 조회조견 --> <!-- 조회조견 -->
<CommonPageTitle />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -12,8 +13,8 @@
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
:sendParam="{ comId }" :sendParam="{ comId }"
customClass="select-large" customClass="select-large"
labelCols="12" :labelCols="12"
textCols="12" :textCols="12"
/> />
<!-- <component <!-- <component
:is="'selectCodeList'" :is="'selectCodeList'"
@ -89,7 +90,7 @@
<!-- 사용자 정보 --> <!-- 사용자 정보 -->
<v-col :cols="7" class="h100"> <v-col :cols="7" class="h100">
<v-card class="pb-5 h100"> <v-card class="pb-5 h100">
<v-card-title class="custom-title-4">사용자 정보</v-card-title> <v-card-title class="custom-title-4 pb-0">사용자 정보</v-card-title>
<div class="px-5" :style="{ height: 'calc(100% - 62.5px)' }"> <div class="px-5" :style="{ height: 'calc(100% - 62.5px)' }">
<v-tabs v-model="tab"> <v-tabs v-model="tab">
<v-tab <v-tab
@ -922,7 +923,7 @@ const unAsgnRoleByUserColumns = [
</label>`; </label>`;
} }
}, },
{ header: '역할ID', name: 'roleId', align: 'center' }, { header: '역할ID', name: 'roleId', align: 'left' },
{ header: '역할명', name: 'roleNm' }, { header: '역할명', name: 'roleNm' },
{ header: '적용시작일', name: 'aplyStartDt', hidden: true }, { header: '적용시작일', name: 'aplyStartDt', hidden: true },
{ header: '적용종료일', name: 'aplyEndDt', hidden: true }, { header: '적용종료일', name: 'aplyEndDt', hidden: true },
@ -970,7 +971,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
iconShow: true, iconShow: true,
required: false, required: false,
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
@ -982,7 +983,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
iconShow: true, iconShow: true,
required: true, required: true,
}, },
@ -995,8 +996,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
iconShow: true,
required: true, required: true,
}, },
{ {
@ -1006,7 +1006,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
iconShow: true, iconShow: true,
required: true, required: true,
}, },
@ -1017,7 +1017,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
iconShow: true, iconShow: true,
list: blocCdList.map(item => ({ list: blocCdList.map(item => ({
text: item.blocNm, text: item.blocNm,
@ -1032,7 +1032,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
iconShow: true, iconShow: true,
}, },
{ {
@ -1043,7 +1043,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
iconShow: true, iconShow: true,
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
@ -1055,7 +1055,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
iconShow: true, iconShow: true,
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
@ -1067,7 +1067,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
iconShow: true, iconShow: true,
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
@ -1079,7 +1079,7 @@ const myDetail = blocCdList => {
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
iconShow: true, iconShow: true,
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },

View File

@ -1,6 +1,7 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<!-- 조회조견 --> <!-- 조회조견 -->
<CommonPageTitle />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -218,14 +219,14 @@ export default {
const _this = this; const _this = this;
const myColumns = [ const myColumns = [
{ header: 'No.', name: 'batchLogSeq', align: 'center', width: 100 }, { header: 'No.', name: 'batchLogSeq', align: 'right', width: 100 },
{ header: '배치ID', name: 'batchId', align: 'center', width: 100 }, { header: '배치ID', name: 'batchId', align: 'right', width: 100 },
{ header: '배치명', name: 'batchNm', align: 'left', width: 150 }, { header: '배치명', name: 'batchNm', align: 'left', width: 150 },
{ header: '실행 일자', name: 'execDt', align: 'center', width: 80 }, { header: '실행 일자', name: 'execDt', align: 'right', width: 80 },
{ {
header: '실행 결과', header: '실행 결과',
name: 'execRsltCd', name: 'execRsltCd',
align: 'center', align: 'left',
width: 80, width: 80,
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
@ -242,7 +243,7 @@ export default {
{ {
header: '배치 시작 일시', header: '배치 시작 일시',
name: 'batchStrtDttm', name: 'batchStrtDttm',
align: 'center', align: 'left',
width: 160, width: 160,
}, },
{ {

View File

@ -15,25 +15,15 @@
:customClass="'input-large'" /> :customClass="'input-large'" />
</v-col> </v-col>
<v-col :cols="2.5"> <v-col :cols="2.5">
<component <component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'배치 실행 구분'"
:is="'selectCodeList'"
:parentPrgmId="myPrgmId"
:label="'배치 실행 구분'"
:dataKey="'searchBatchExecTp'" :dataKey="'searchBatchExecTp'"
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_TP', useFg: '1' }" :sendParam="{ commGrpCd: 'CO_BATCH_EXEC_TP', useFg: '1' }" :addAll="true"
:addAll="true" :customClass="'select-large'" />
:customClass="'select-large'"
/>
</v-col> </v-col>
<v-col :cols="2.5" class="pr-4"> <v-col :cols="2.5" class="pr-4">
<component <component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'"
:is="'selectCodeList'" :dataKey="'searchUseFg'" :sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:parentPrgmId="myPrgmId" :customClass="'select-large'" />
:label="'사용여부'"
:dataKey="'searchUseFg'"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:customClass="'select-large'"
/>
</v-col> </v-col>
<BtnSearch size="large" class="mr-2" /> <BtnSearch size="large" class="mr-2" />
@ -42,9 +32,9 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row ref="contents" class="mt-4"> <v-row ref="contents" class="mt-4 h100">
<!-- 배치 리스트 --> <!-- 배치 리스트 -->
<v-col :cols="6" class="h100 pr-2"> <v-col :cols="6" class="pr-2">
<v-card class="pb-5"> <v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-4"> <div class="d-flex align-center justify-space-between pa-4">
<!-- <v-card-title> <!-- <v-card-title>
@ -56,7 +46,7 @@
:btnActionsFnc="btnActions" /> :btnActionsFnc="btnActions" />
</div> </div>
<div class="px-4"> <div class="px-4">
<div ref="gridParent" class="h100 w100"> <div ref="gridParent" class="h100 w100" style="height:calc(100% - 70px)">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId" <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
:gridName="gridName" @getRowsData="getRowData" /> :gridName="gridName" @getRowsData="getRowData" />
</div> </div>
@ -65,7 +55,7 @@
</v-card> </v-card>
</v-col> </v-col>
<!-- 배치 상세 --> <!-- 배치 상세 -->
<v-col :cols="6" class="h100 pl-3"> <v-col :cols="6" class="pl-3">
<v-card class="pd-y-20 h100"> <v-card class="pd-y-20 h100">
<v-card-title class="d-flex justify-space-between align-end pa-4"> <v-card-title class="d-flex justify-space-between align-end pa-4">
<span class="tit ft-size_20 ft-weight_600">배치 상세</span> <span class="tit ft-size_20 ft-weight_600">배치 상세</span>
@ -82,14 +72,17 @@
<v-card style="height: 100%"> <v-card style="height: 100%">
<v-card-title class="v-card__title d-flex align-center justify-space-between"> <v-card-title class="v-card__title d-flex align-center justify-space-between">
<span class="custom-title-4">DB 프로시져 파라메터 설정</span> <span class="custom-title-4">DB 프로시져 파라메터 설정</span>
<div> <a-button icon="close" type="text" @click="dialog = false"></a-button>
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridNameParam"
:btnActionsFnc="btnActionsParam" />
</div>
</v-card-title> </v-card-title>
<div class="pa-5"> <div class="pa-5">
<v-row align="center" no-gutters> <v-row align="end" no-gutters>
<v-col cols="12" class="text-right"> </v-col> <v-col cols="12" class="d-flex justify-end">
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridNameParam"
:btnActionsFnc="btnActionsParam" />
</v-col>
</v-row> </v-row>
</div> </div>
<v-card-text style="height: 300px;"> <v-card-text style="height: 300px;">
@ -101,10 +94,9 @@
</div> </div>
</div> </div>
</v-card-text> </v-card-text>
<v-card-actions> <v-card-actions class="px-6 py-4 d-flex align-center justify-end">
<v-spacer></v-spacer> <a-button :ripple="false" @click="dialog = false" class="mr-2">닫기</a-button>
<v-btn color="primary" dark @click="setParamChangeData()">확인</v-btn> <a-button :ripple="false" type="primary" @click="setParamChangeData()">확인</a-button>
<v-btn color="primary" dark @click="dialog = false">닫기</v-btn>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-dialog> </v-dialog>
@ -261,7 +253,7 @@ export default {
const _this = this; const _this = this;
const myColumns = [ const myColumns = [
{ header: '배치ID', name: 'batchId', align: 'center', width: 100 }, { header: '배치ID', name: 'batchId', align: 'right', width: 100 },
{ header: '배치명', name: 'batchNm', minWidth: 200 }, { header: '배치명', name: 'batchNm', minWidth: 200 },
{ {
header: '배치 실행 구분', header: '배치 실행 구분',
@ -283,7 +275,6 @@ export default {
{ {
header: '사용여부', header: '사용여부',
name: 'useFg', name: 'useFg',
align: 'center',
width: 145, width: 145,
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
@ -567,6 +558,10 @@ export default {
selectionUnit: 'row', selectionUnit: 'row',
editingEvent: 'click', editingEvent: 'click',
scrollX: false, scrollX: false,
header: {
height: 37,
},
rowHeight: 37,
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridNameParam, gridKey: this.gridNameParam,
@ -592,7 +587,6 @@ export default {
{ {
header: 'MODE', header: 'MODE',
name: 'mode', name: 'mode',
align: 'center',
formatter({ value }) { formatter({ value }) {
return value == ('OUT' || 'out') ? 'OUT' : 'IN'; return value == ('OUT' || 'out') ? 'OUT' : 'IN';
}, },
@ -642,7 +636,7 @@ export default {
}, },
getRowParamData() { getRowParamData() {
this.paramLoadGrid = false; this.paramLoadGrid = false;
// let res = []; let res = [];
// /* this.pageData.paramStrData 처리 */ // /* this.pageData.paramStrData 처리 */
// // console.log("this.pageData.paramStrData : ", JSON.parse(this.pageData.paramStrData)); // // console.log("this.pageData.paramStrData : ", JSON.parse(this.pageData.paramStrData));
@ -717,7 +711,6 @@ export default {
}, },
inputClick(event, item, valueNm) { inputClick(event, item, valueNm) {
if (valueNm == 'refVal1') { if (valueNm == 'refVal1') {
this.dialog = true;
const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke( const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke(
'getFocusedCell', 'getFocusedCell',
).rowKey; ).rowKey;

View File

@ -250,7 +250,6 @@ export default {
{ {
header: '요일', header: '요일',
name: 'dtNm', name: 'dtNm',
align: 'center',
formatter({ value }) { formatter({ value }) {
return value + '요일'; return value + '요일';
}, },
@ -258,7 +257,6 @@ export default {
{ {
header: '구분', header: '구분',
name: 'hldyFg', name: 'hldyFg',
align: 'center',
essential: true, essential: true,
formatter({ value }) { formatter({ value }) {
return value == 1 ? '휴일' : '평일'; return value == 1 ? '휴일' : '평일';

View File

@ -46,19 +46,21 @@
icon="delete">삭제</a-button> icon="delete">삭제</a-button>
</div> </div>
</v-col> </v-col>
<v-col :cols="12" class="mt-5"> <v-col :cols="12" class="mt-5 pb-4">
<v-card-title class="custom-title-6 pa-0">{{ viewActionData.title }}</v-card-title> <v-card-title class="custom-title-6 pa-0">{{ viewActionData.title }}</v-card-title>
</v-col> </v-col>
<v-col :cols="12" style="min-height: 30vh;" class="pa-0"> <v-col :cols="12" style="min-height: 50vh;" class="pa-0 custom-view">
<v-card class="pa-3" style="overflow-y:auto;">
<viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit" <viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit"
:initialValue="viewActionData.content" theme="white" :initialValue="viewActionData.content" theme="white"
:class="[isDarkMode ? 'theme--white' : 'theme--black', 'custom-view pa-3']" /> :class="[isDarkMode ? 'theme--white' : 'theme--black']" />
</v-card>
</v-col> </v-col>
<v-col :cols="6" class="mt-5"> <v-col :cols="6" class="mt-5">
<v-card-title class="custom-title-7 pa-0"> <v-card-title class="custom-title-7 pa-0">
파일목록 파일목록
</v-card-title> </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" style="background-color: unset;">
<a @click.prevent="downloadFile(fileData)"> <a @click.prevent="downloadFile(fileData)">
<div class="d-flex justify-start search-box-label"> <div class="d-flex justify-start search-box-label">
<v-icon>mdi-paperclip</v-icon> <v-icon>mdi-paperclip</v-icon>
@ -86,7 +88,8 @@
</v-text-field> </v-text-field>
</v-col> </v-col>
<v-col :cols="12" style="min-height: calc(100vh - 450px);"> <v-col :cols="12" style="min-height: calc(100vh - 450px);">
<editor ref="tuiEditor" height="100%" initialEditType="wysiwyg" /> <editor ref="tuiEditor" height="100%" initialEditType="wysiwyg"
:class="[isDarkMode ? 'toastui-editor-dark' : 'toastui-editor-light']"/>
</v-col> </v-col>
<v-col :cols="6" class="mt-5"> <v-col :cols="6" class="mt-5">
@ -132,7 +135,8 @@
</v-text-field> </v-text-field>
</v-col> </v-col>
<v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-2"> <v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-2">
<editor ref="tuiReplyEditor" height="100%" initialEditType="wysiwyg" /> <editor ref="tuiReplyEditor" height="100%" initialEditType="wysiwyg"
:class="[isDarkMode ? 'toastui-editor-dark' : 'toastui-editor-light']"/>
</v-col> </v-col>
<v-col :cols="6" class="mt-5"> <v-col :cols="6" class="mt-5">
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title> <v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
@ -179,7 +183,8 @@
</v-col> </v-col>
<v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4"> <v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4">
<editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg" <editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg"
:initialValue="updateActionData.content" /> :initialValue="updateActionData.content"
:class="[isDarkMode ? 'toastui-editor-dark' : 'toastui-editor-light']"/>
</v-col> </v-col>
<v-col :cols="6" class="mt-5"> <v-col :cols="6" class="mt-5">
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title> <v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
@ -187,13 +192,26 @@
<div v-for="(fileData, index) in updateActionData.fileData" :key="fileData.apndFileId" <div v-for="(fileData, index) in updateActionData.fileData" :key="fileData.apndFileId"
class="file-item d-flex justify-space-between"> class="file-item d-flex justify-space-between">
<div class="file-item-detail"> <div class="file-item-detail">
<v-icon>mdi-paperclip</v-icon> <v-icon style="font-size: 18px;">mdi-paperclip</v-icon>
<span href="#" class="file-item-name">{{ fileData.name }}</span> <span href="#" class="file-item-name">{{ fileData.name }}</span>
</div> </div>
<a-icon type="delete" class="v-icon pointer" <a-icon type="delete" class="v-icon pointer"
@click="updateActionData.fileData.splice(index, 1)" /> @click="updateActionData.fileData.splice(index, 1)" />
</div> </div>
</div> </div>
<div class="" v-if="updateActionData.currentFileList">
<div v-for="(fileData, index) in updateActionData.currentFileList"
:key="fileData.apndFileId" class="file-item d-flex justify-space-between">
<div class="file-item-detail">
<v-icon style="font-size: 18px;">mdi-paperclip</v-icon>
<span @click.prevent="downloadFile(fileData)" href="#"
class="file-item-name pointer">{{ fileData.apndFileNm + '.' +
fileData.apndFileExt }}</span>
</div>
<a-icon type="delete" class="v-icon pointer"
@click="addFileToDeleteFileList(fileData)" />
</div>
</div>
<a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()"> <a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()">
업로드 업로드
</a-button> </a-button>
@ -1044,7 +1062,7 @@ const defaultData = {
.custom-view { .custom-view {
border: 1px solid; border: 1px solid;
border-radius: 6px; border-radius: 6px;
height: 100%; height: 0;
@each $theme in dark, light { @each $theme in dark, light {
@include theme($theme); @include theme($theme);
@ -1062,8 +1080,13 @@ const defaultData = {
color: #1677FF color: #1677FF
} }
.toastui-editor-mode-switch .tab-item { .toastui-editor-light .toastui-editor-mode-switch .tab-item {
color: #000000E0 color: #000000E0
} }
.v-icon.anticon-delete svg {
width: 14px;
height: 14px;
}
} }
</style> </style>

View File

@ -103,21 +103,6 @@ export default {
gridName: 'rowGrid', gridName: 'rowGrid',
// rowGridOrigin: [], // rowGridOrigin: [],
detailList: myDetail, 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' }
],
option: {
scrollY: false,
scrollX: false,
}
}
},
}; };
}, },
computed: { computed: {
@ -189,17 +174,17 @@ export default {
const gridHeight = this.$refs.gridParent.offsetHeight - 36; const gridHeight = this.$refs.gridParent.offsetHeight - 36;
const myOptions = { const myOptions = {
scrollX: false, scrollY: true,
}; };
// console.log("this.pageData", this.pageData) // console.log("this.pageData", this.pageData)
const _this = this; const _this = this;
const myColumns = [ const myColumns = [
{ header: '프로그램ID', name: 'prgmId', align: 'center' }, { header: '프로그램ID', name: 'prgmId', align: 'left' },
{ header: '프로그램명', name: 'prgmNm' }, { header: '프로그램명', name: 'prgmNm', align: 'left' },
{ {
header: '타입', header: '타입',
name: 'prgmTpCd', name: 'prgmTpCd',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
return value ? (value === '1' ? '프로그램' : '팝업') : null; return value ? (value === '1' ? '프로그램' : '팝업') : null;
}, },
@ -207,7 +192,7 @@ export default {
{ {
header: '사용여부', header: '사용여부',
name: 'useFg', name: 'useFg',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
const newValue = _this.pageData.selectUseFgList.filter( const newValue = _this.pageData.selectUseFgList.filter(

View File

@ -1,5 +1,6 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<CommonPageTitle />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">

View File

@ -1,5 +1,6 @@
<template> <template>
<div ref="mainDiv" class="l-layout"> <div ref="mainDiv" class="l-layout">
<CommonPageTitle/>
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -12,7 +13,6 @@
dataKey="searchAddGrp" dataKey="searchAddGrp"
:sendParam="{ useFg: '1' }" :sendParam="{ useFg: '1' }"
:addAll="true" :addAll="true"
:iconShow="true"
customClass="select-large" customClass="select-large"
/> />
</v-col> </v-col>
@ -22,7 +22,6 @@
label="추가 정보명" label="추가 정보명"
valueNm="addInfoNm" valueNm="addInfoNm"
:searchOption="true" :searchOption="true"
:iconShow="true"
customClass="input-large" customClass="input-large"
/> />
</v-col> </v-col>
@ -289,7 +288,7 @@ export default {
header: 'Data 형식', header: 'Data 형식',
name: 'addInfoDataKind', name: 'addInfoDataKind',
minWidth: 85, minWidth: 85,
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
const newValue = _this.pageData.addInfoDataKindList.filter( const newValue = _this.pageData.addInfoDataKindList.filter(
@ -306,7 +305,7 @@ export default {
header: '사용여부', header: '사용여부',
name: 'useFg', name: 'useFg',
minWidth: 85, minWidth: 85,
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
@ -336,8 +335,7 @@ export default {
this.search(); this.search();
}, },
async search() { async search() {
//process this.loadGrid = false;
this.loadGrid = true;
await this.getRowGridData(); await this.getRowGridData();
await this.setPageData({ await this.setPageData({
isFind: false, isFind: false,
@ -547,7 +545,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
required: true, required: true,
}, },
{ {
@ -559,7 +557,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
list: 'addInfoDataKindList', list: 'addInfoDataKindList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
@ -574,7 +572,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2 d-flex align-items-center',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: true, required: true,
}, },
@ -587,7 +585,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
{ {
@ -599,7 +597,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
{ {
@ -611,7 +609,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-2 pl-4 mt-2',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
{ {
@ -623,8 +621,11 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
]; ];
</script> </script>
<style lang="scss">
@import '@/assets/scss/common.scss';
</style>

View File

@ -840,7 +840,7 @@ export default {
{ header: "주의", name: "careStndVal", align: "right", width: 40 }, { header: "주의", name: "careStndVal", align: "right", width: 40 },
{ header: "경고", name: "warnStndVal", align: "right", width: 40 }, { header: "경고", name: "warnStndVal", align: "right", width: 40 },
{ header: "가이드", name: "totVal", align: "right", width: 40 }, { header: "가이드", name: "totVal", align: "right", width: 40 },
{ header: "알람 내용", name: "alrmMsg", align: "left" }, { header: "알람 내용", name: "alrmMsg", align: "left", resizable: false },
{ header: "설비종류", name: "eqpmKindId", align: "left", hidden: true }, { header: "설비종류", name: "eqpmKindId", align: "left", hidden: true },
{ header: "설비종류", name: "eqpmKindNm", align: "left", hidden: true }, { header: "설비종류", name: "eqpmKindNm", align: "left", hidden: true },
]; ];

View File

@ -1,9 +1,10 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<CommonPageTitle/>
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="center" no-gutters> <v-row align="end" no-gutters>
<v-col :cols="2.5"> <v-col :cols="2.5">
<component <component
:is="'selectCodeList'" :is="'selectCodeList'"
@ -12,6 +13,7 @@
dataKey="searchLocKind" dataKey="searchLocKind"
:sendParam="{ commGrpCd: 'EM_LOC_KIND', useFg: '1' }" :sendParam="{ commGrpCd: 'EM_LOC_KIND', useFg: '1' }"
:addAll="true" :addAll="true"
customClass="select-large"
/> />
</v-col> </v-col>
<v-col :cols="2.5"> <v-col :cols="2.5">
@ -22,6 +24,7 @@
dataKey="searchEccKind" dataKey="searchEccKind"
:sendParam="{ commGrpCd: 'EM_ECC_KIND', useFg: '1' }" :sendParam="{ commGrpCd: 'EM_ECC_KIND', useFg: '1' }"
:addAll="true" :addAll="true"
customClass="select-large"
/> />
</v-col> </v-col>
<!-- 사업장 --> <!-- 사업장 -->
@ -42,6 +45,7 @@
dataKey="useFg" dataKey="useFg"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:addAll="true" :addAll="true"
customClass="select-large"
/> />
</v-col> </v-col>
<v-col :cols="2.5"> <v-col :cols="2.5">
@ -49,9 +53,10 @@
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
label="공정명" label="공정명"
valueNm="eccNm" valueNm="eccNm"
:labelCols="2" :labelCols="12"
:textCols="9" :textCols="12"
:searchOption="true" :searchOption="true"
customClass="input-large"
/> />
</v-col> </v-col>
<v-col class="text-right"> <v-col class="text-right">
@ -59,7 +64,14 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row align="center" no-gutters> <v-row align="center" no-gutters>
<div style="display: none">
<component
:is="'SelectBlocMstr'"
ref="SelectBlocMstr"
:parentPrgmId="myPrgmId"
customClass="select-large"
/>
</div>
</v-row> </v-row>
</v-card> </v-card>
</v-col> </v-col>
@ -91,9 +103,9 @@
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<v-col :cols="7" class="h100"> <v-col :cols="7" style="min-height:75vh;">
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title class="custom-title-4" style="min-height:76px;" <v-card-title class="custom-title-4 pb-0" style="min-height:65px;"
>공정 상세 >공정 상세
</v-card-title> </v-card-title>
<div class="px-5" style="height:calc(100% - 76px)"> <div class="px-5" style="height:calc(100% - 76px)">
@ -465,7 +477,7 @@ export default {
header: '사용 여부', header: '사용 여부',
name: 'useFg', name: 'useFg',
width: gridWidth * 0.18, width: gridWidth * 0.18,
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
const newValue = _this.pageData.useFgList.filter( const newValue = _this.pageData.useFgList.filter(
@ -889,7 +901,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pl-4', class: 'py-2 px-4',
required: true, required: true,
iconShow: true iconShow: true
}, },
@ -915,7 +927,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'pb-0 mb-0 pr-4', class: 'pb-0 mb-0 pr-4 mt-2',
disableContent: true, disableContent: true,
}, },
{ {
@ -926,7 +938,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 mb-0 pb-0 pl-4', class: 'py-2 mb-0 pb-0 px-4 mt-2',
list: 'locKindList', list: 'locKindList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
@ -938,13 +950,13 @@ const myDetail = [
valueNm: 'upEccNm', valueNm: 'upEccNm',
readonly: true, readonly: true,
cols: 6, cols: 6,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
}, },
{ {
// 공백 처리 // 공백 처리
type: 'Label', type: 'Label',
cols: 6, cols: 6,
class: 'py-2 pl-4', class: 'py-2 px-4 mt-2',
disabled: false, disabled: false,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
@ -958,7 +970,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
list: 'eccKindList', list: 'eccKindList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
@ -973,7 +985,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pl-4', class: 'py-2 px-4 mt-2',
inputType: 'number', inputType: 'number',
iconShow: true iconShow: true
// onkeydown : "if(this.value > 100) this.value = 100;if(this.value < 0) this.value = 0;if(this.value == '') this.value = 0;" // onkeydown : "if(this.value > 100) this.value = 100;if(this.value < 0) this.value = 0;if(this.value == '') this.value = 0;"
@ -986,7 +998,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
list: 'blocIdList', list: 'blocIdList',
itemText: 'blocNm', itemText: 'blocNm',
itemValue: 'blocId', itemValue: 'blocId',
@ -1000,7 +1012,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pl-4', class: 'py-2 px-4 mt-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
iconShow: true, iconShow: true,
required: true, required: true,
@ -1011,7 +1023,7 @@ const myDetail = [
valueNm: 'eccFg', valueNm: 'eccFg',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4', class: 'py-2 pr-4 mt-2',
iconShow: true, iconShow: true,
value: { '1': true, '0': false }, value: { '1': true, '0': false },
}, },

View File

@ -365,7 +365,7 @@ export default {
header: '사업장', header: '사업장',
name: 'blocId', name: 'blocId',
width: 100, width: 100,
align: 'center', align: 'left',
hidden: true, hidden: true,
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
@ -382,7 +382,7 @@ export default {
header: '사용 여부', header: '사용 여부',
name: 'useFg', name: 'useFg',
width: 100, width: 100,
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
const newValue = _this.pageData.useFgList.filter( const newValue = _this.pageData.useFgList.filter(
item => item.commCd == value, item => item.commCd == value,

View File

@ -1,5 +1,6 @@
<template> <template>
<div ref="mainDiv" class="l-layout"> <div ref="mainDiv" class="l-layout">
<CommonPageTitle />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -49,7 +50,7 @@
<v-col :cols="5" class="h100"> <v-col :cols="5" class="h100">
<v-card class="pb-5"> <v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-5"> <div class="d-flex align-center justify-space-between pa-5">
<v-card-title class="pa-0 custom-title-4-new" <v-card-title class="pa-0 custom-title-4"
>검침 대상 정보</v-card-title >검침 대상 정보</v-card-title
> >
<Buttons <Buttons
@ -74,7 +75,7 @@
</v-col> </v-col>
<v-col :cols="7" class="h100"> <v-col :cols="7" class="h100">
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title class="custom-title-4-new" style="min-height:76px;" <v-card-title class="custom-title-4-new pb-0" style="min-height:65px;"
>검침대상 상세 >검침대상 상세
</v-card-title> </v-card-title>
<div class="px-5" style="height:calc(100% - 76px)"> <div class="px-5" style="height:calc(100% - 76px)">
@ -314,7 +315,7 @@ export default {
header: '검침 대상 ID', header: '검침 대상 ID',
name: 'readObjId', name: 'readObjId',
width: 130, width: 130,
align: 'center', align: 'left',
}, },
{ {
header: '검침 대상 명', header: '검침 대상 명',
@ -384,7 +385,7 @@ export default {
{ {
header: '사용여부', header: '사용여부',
name: 'useFg', name: 'useFg',
align: 'center', align: 'left',
width: 100, width: 100,
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
@ -741,7 +742,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-2', class: 'py-2 pr-2 mt-2',
required: false, required: false,
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
@ -753,7 +754,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2', class: 'py-2 mt-2',
required: true, required: true,
iconShow: true, iconShow: true,
}, },
@ -765,7 +766,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-2', class: 'py-2 pr-2 mt-2',
list: 'readObjKindDetailList', list: 'readObjKindDetailList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
@ -780,7 +781,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2', class: 'py-2 mt-2',
list: 'readObjGrpList', list: 'readObjGrpList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
@ -795,7 +796,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-2', class: 'py-2 pr-2 mt-2',
iconShow: true, iconShow: true,
inputType: 'number', inputType: 'number',
}, },
@ -807,7 +808,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2', class: 'py-2 mt-2',
iconShow: true, iconShow: true,
inputType: 'number', inputType: 'number',
}, },
@ -819,7 +820,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-2', class: 'py-2 pr-2 mt-2',
iconShow: true, iconShow: true,
inputType: 'number', inputType: 'number',
}, },
@ -831,7 +832,7 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2', class: 'py-2 mt-2',
list: 'unitCdList', list: 'unitCdList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
@ -846,13 +847,24 @@ const myDetail = [
cols: 6, cols: 6,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2 pr-2', class: 'py-2 pr-2 mt-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
iconShow: true, iconShow: true,
required: true, required: true,
}, },
]; ];
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
@import '@/assets/scss/common.scss'; @import '@/assets/scss/common.scss';
::v-deep {
.tui-grid-layer-state {
top: 40px !important;
}
.tui-grid-layer-selection,
.tui-grid-cell-content-editor{
height: 36px !important;
}
}
</style> </style>

View File

@ -53,7 +53,8 @@
</v-col> </v-col>
<v-col :cols="7" > <v-col :cols="7" >
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title class="custom-title-4" style="min-height:76px;">Data Set 상세 <v-card-title class="custom-title-4 pb-0 mb-2" >
Data Set 상세
</v-card-title> </v-card-title>
<div class="px-5" style="min-height:calc(100% - 76px)"> <div class="px-5" style="min-height:calc(100% - 76px)">
<v-tabs v-model="tab"> <v-tabs v-model="tab">
@ -284,13 +285,13 @@ export default {
header: '모델링 DataSet ID', header: '모델링 DataSet ID',
name: 'dataSetId', name: 'dataSetId',
align: 'left', align: 'left',
width: 180, minWidth: 200,
}, },
{ {
header: 'DataSet 명', header: 'DataSet 명',
name: 'dataSetNm', name: 'dataSetNm',
align: 'left', align: 'left',
width: 200, minWidth: 200,
}, },
{ {
header: '사업장', header: '사업장',
@ -311,8 +312,8 @@ export default {
{ {
header: '사용 여부', header: '사용 여부',
name: 'useFg', name: 'useFg',
width: 100, minWidth: 200,
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
const newValue = _this.pageData.useFgList.filter( const newValue = _this.pageData.useFgList.filter(
@ -321,7 +322,7 @@ export default {
return newValue[0].commCdNm; return newValue[0].commCdNm;
}, },
}, },
{ header: '비고', name: 'rmrk', align: 'left' }, { header: '비고', name: 'rmrk', align: 'left', minWidth: 100, },
]; ];
this.setGridColumn({ this.setGridColumn({

View File

@ -67,14 +67,8 @@
</div> </div>
<div class="px-4" style="height:calc(100% - 76px)"> <div class="px-4" style="height:calc(100% - 76px)">
<div ref="gridParent" class="w100 h100"> <div ref="gridParent" class="w100 h100">
<component <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:ref="gridName" :parentPrgmId="myPrgmId" :columnClickEventFlag="true" @columnClick="columnClick" />
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
:columnClickEventFlag="true"
@columnClick="columnClick"
/>
</div> </div>
</div> </div>
</v-card> </v-card>
@ -552,7 +546,12 @@ export default {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
rowHeaders: ['rowNum'], rowHeaders: [
{
type: 'rowNum',
align: 'right',
},
],
header: { header: {
height: 37, height: 37,
}, },
@ -642,7 +641,7 @@ export default {
{ {
header: '평가', header: '평가',
name: 'okFg', name: 'okFg',
align: 'center', align: 'left',
width: 80, width: 80,
}, },
{ {

View File

@ -33,7 +33,7 @@
</v-col> </v-col>
<v-col :cols="6" class="text-right"> <v-col :cols="6" class="text-right">
<!-- 조회버튼 --> <!-- 조회버튼 -->
<BtnSearch style="margin-top: 20px" size="large" @click="search" /> <BtnSearch style="margin-top: 25px" size="large" @click="search" />
</v-col> </v-col>
</v-row> </v-row>
</v-card> </v-card>

View File

@ -14,9 +14,9 @@
<!-- 대상일 --> <!-- 대상일 -->
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="3" customClass="datepicker-large" /> <component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="3" customClass="datepicker-large" />
</v-col> </v-col>
<v-col :cols="4" class="text-right"> <v-col :cols="6" class="text-right">
<BtnSearch @click="search" size="large" />
<!-- 조회버튼 --> <!-- 조회버튼 -->
<BtnSearch @click="search" size="large" />
</v-col> </v-col>
</v-row> </v-row>
</v-card> </v-card>
@ -47,8 +47,13 @@
</v-row> </v-row>
<div class="px-5" style="height: 80%"> <div class="px-5" style="height: 80%">
<div ref="chartParent" class="w100 h100"> <div ref="chartParent" class="w100 h100">
<component :ref="chartName" class="w100 h100" :is="loadChart ? 'Chart' : null" :parentPrgmId="myPrgmId" <component
:chartName="chartName" /> :ref="chartName"
class="w100 h100"
:is="loadChart ? 'Chart' : null"
:parentPrgmId="myPrgmId"
:chartName="chartName"
/>
</div> </div>
</div> </div>
</v-card> </v-card>
@ -68,6 +73,8 @@ import SelectBox from '@/components/common/select/SelectBox';
import DateUtility from '~/plugins/dateUtility'; import DateUtility from '~/plugins/dateUtility';
import Chart from '~/components/common/Chart'; import Chart from '~/components/common/Chart';
import getSankeyChartOption from "~/components/common/chartoptions/sankeyChart";
let myTitle; let myTitle;
let myPrgmId; let myPrgmId;
@ -101,6 +108,8 @@ export default {
selectValue01: null, selectValue01: null,
loadChart: false, loadChart: false,
chartName: 'sankeyChart', chartName: 'sankeyChart',
sankeyChartData: [],
sankeyChartLinks: []
}; };
}, },
computed: { computed: {
@ -148,6 +157,16 @@ export default {
}); });
} }
}, },
isDarkMode(newVal) {
this.setChartOption({
chartKey: this.chartName,
value: getSankeyChartOption({
isDarkMode: newVal,
data: this.sankeyChartData,
links: this.sankeyChartLinks
})
});
},
}, },
async beforeCreate() { async beforeCreate() {
myPrgmId = this.$route.query.prgmId; myPrgmId = this.$route.query.prgmId;
@ -159,9 +178,6 @@ export default {
}, },
async created() { }, async created() { },
async mounted() { async mounted() {
// this.initTest();
// return;
this.init(); this.init();
// document.querySelector('.icon_arrow').style.width = document.querySelector('.iconArrowCols').clientWidth-20 + "px"; // document.querySelector('.icon_arrow').style.width = document.querySelector('.iconArrowCols').clientWidth-20 + "px";
}, },
@ -176,10 +192,8 @@ export default {
...mapActions({ ...mapActions({
getCodeList: 'modules/search/getCodeList', getCodeList: 'modules/search/getCodeList',
}), }),
initTest() { initTestChart() {
const randomNumber = n => Math.floor(Math.random() * n) + 1; const randomNumber = n => Math.floor(Math.random() * n) + 1;
const makeData = [ const makeData = [
{ name: 'A' }, { name: 'A' },
{ name: 'B' }, { name: 'B' },
@ -205,45 +219,13 @@ export default {
]); ]);
} }
const chartOption = { this.sankeyChartData = makeData;
backgroundColor: '#FFFFFF', this.sankeyChartLinks = makeLinks;
series: [ const chartOption = getSankeyChartOption({
{ isDarkMode: this.isDarkMode,
layoutIterations: 0,
type: 'sankey',
left: 25.0,
top: 20.0,
right: 120,
bottom: 50.0,
// nodeWidth:10,
nodeGap: 10,
nodeAlign: 'left',
data: makeData, data: makeData,
links: makeLinks, links: makeLinks
lineStyle: { });
color: 'source',
curveness: 0.5,
},
// triggerEvent: true,
itemStyle: {
//color: '#1f77b4',
//borderColor: '#1f77b4'
},
label: {
color: this.isDarkMode
? 'rgba(250,250,250,0.7)'
: 'rgba(0,0,0,0.7)',
fontFamily: 'Arial',
fontSize: 12,
},
},
],
tooltip: {
trigger: 'item',
},
};
this.setChartOption({ chartKey: this.chartName, value: chartOption }); this.setChartOption({ chartKey: this.chartName, value: chartOption });
this.$nextTick(() => { this.$nextTick(() => {
this.loadChart = true; this.loadChart = true;
@ -254,7 +236,11 @@ export default {
this.setFromDt(); this.setFromDt();
}, },
async search() { async search() {
try{
await this.getChartData(); await this.getChartData();
}catch(err){
this.initTestChart();
}
this.setPageData({ this.setPageData({
isFind: false, isFind: false,
}); });
@ -458,43 +444,13 @@ export default {
}; };
} }
const chartOption = { this.sankeyChartData = makeData;
backgroundColor: '#FFFFFF', this.sankeyChartLinks = makeLinks;
series: [ const chartOption = getSankeyChartOption({
{ isDarkMode: this.isDarkMode,
layoutIterations: 0,
type: 'sankey',
left: 25.0,
top: 20.0,
right: 120,
bottom: 50.0,
// nodeWidth:10,
nodeGap: 10,
nodeAlign: 'left',
data: makeData, data: makeData,
links: makeLinks, links: makeLinks
lineStyle: { });
color: 'source',
curveness: 0.5,
},
// triggerEvent: true,
itemStyle: {
//color: '#1f77b4',
//borderColor: '#1f77b4'
},
label: {
color: this.isDarkMode
? 'rgba(250,250,250,0.7)'
: 'rgba(0,0,0,0.7)',
fontFamily: 'Arial',
fontSize: 12,
},
},
],
tooltip: {
trigger: 'item',
},
};
this.setChartOption({ chartKey: this.chartName, value: chartOption }); this.setChartOption({ chartKey: this.chartName, value: chartOption });

View File

@ -99,7 +99,7 @@
<v-col :cols="12" style="height: 100%"> <v-col :cols="12" style="height: 100%">
<v-row class="pa-1" style="height: 50%; width: 100%"> <v-row class="pa-1" style="height: 50%; width: 100%">
<div style="width: 100%; height: 100%; overflow: hidden"> <div style="width: 100%; height: 100%; overflow: hidden">
<div style="height: 15%"> <v-card style="background: none; height: 15%">
<v-card-title <v-card-title
class="d-flex align-center justify-space-between" class="d-flex align-center justify-space-between"
style="padding: 0px" style="padding: 0px"
@ -108,7 +108,7 @@
주요가이드 지표 주요가이드 지표
</span> </span>
</v-card-title> </v-card-title>
</div> </v-card>
<div style="height: 85%"> <div style="height: 85%">
<v-row style="height: 100%; overflow: auto"> <v-row style="height: 100%; overflow: auto">
<v-col <v-col
@ -117,7 +117,7 @@
v-for="(value, key, index) in contentData01" v-for="(value, key, index) in contentData01"
:key="'key1' + index" :key="'key1' + index"
> >
<v-card style="position: relative; overflow: hidden;" > <v-card style="position: relative; overflow: hidden">
<!-- Card header --> <!-- Card header -->
<div <div
style=" style="
@ -133,9 +133,9 @@
<v-card-title style="padding-left: 10px">{{ <v-card-title style="padding-left: 10px">{{
value["gdIdxNm"] value["gdIdxNm"]
}}</v-card-title> }}</v-card-title>
<div class="v-box" style="height: 80%; padding: 3px; margin: 10px;"> <div class="v-box" style="height: 80%; padding: 3px; margin: 10px">
<v-col :cols="12" style="height: 100%;"> <v-col :cols="12" style="height: 100%">
<div style="height: 85%;"> <div style="height: 85%">
<component <component
class="w100 h100" class="w100 h100"
:is="loadChart ? 'Chart' : null" :is="loadChart ? 'Chart' : null"
@ -152,7 +152,7 @@
</div> </div>
</div> </div>
</v-row> </v-row>
<v-row class="pa-1" style="height: 40%; width: 100%"> <v-row class="pa-1" style="height: 52%; width: 100%">
<v-card class="pa-1" style="height: 100%; width: 100%; overflow: hidden"> <v-card class="pa-1" style="height: 100%; width: 100%; overflow: hidden">
<div style="height: 25%"> <div style="height: 25%">
<v-card-title class="d-flex align-center justify-space-between pa-5"> <v-card-title class="d-flex align-center justify-space-between pa-5">
@ -172,7 +172,7 @@
</div> </div>
</v-card> </v-card>
</v-row> </v-row>
<v-row class="pa-1" style="height: 34%; width: 100%"> <v-row class="pa-1" style="height: 40%; width: 100%">
<div style="height: 100%; width: 100%"> <div style="height: 100%; width: 100%">
<v-row style="height: 100%"> <v-row style="height: 100%">
<v-col :cols="5" class=""> <v-col :cols="5" class="">
@ -528,9 +528,7 @@ export default {
fromDt: this.fromDt, fromDt: this.fromDt,
}, },
}); });
console.log('res 01:',res)
this.contentData01 = await this.makeContentData01(res); this.contentData01 = await this.makeContentData01(res);
console.log("content", this.contentData01);
await this.setChartGroup01(this.contentData01); await this.setChartGroup01(this.contentData01);
this.reloadChart(); this.reloadChart();
}, },
@ -620,8 +618,8 @@ export default {
this.loadGrid02 = false; this.loadGrid02 = false;
res = await this.postApiReturn({ res = await this.postApiReturn({
apiKey: 'selectEnrgUseEqpmDescInfo', apiKey: "selectEnrgUseEqpmDescInfo",
resKey: 'enrgUseEqpmDetlMntrData', resKey: "enrgUseEqpmDetlMntrData",
sendParam: { sendParam: {
eqpmGrpId: this.selectValue03, eqpmGrpId: this.selectValue03,
}, },
@ -727,6 +725,13 @@ export default {
}, },
yAxis: { yAxis: {
type: "value", type: "value",
splitLine: {
show: true,
lineStyle: {
type: "dashed", // Makes the lines dashed
color: "#ccc", // Optional: customize the color
},
},
}, },
series: [ series: [
{ {
@ -853,12 +858,8 @@ export default {
currentChartData["data"][j]["totVal"]; currentChartData["data"][j]["totVal"];
} }
// console.log("text seri data", seriesData);
this.$store.state.pageData[myPrgmId][chartKey]["xAxis"]["data"] = xAxisData; this.$store.state.pageData[myPrgmId][chartKey]["xAxis"]["data"] = xAxisData;
this.$store.state.pageData[myPrgmId][chartKey]["series"][0]["data"] = seriesData; this.$store.state.pageData[myPrgmId][chartKey]["series"][0]["data"] = seriesData;
console.log("chart data", this.$store.state.pageData[myPrgmId][chartKey]);
} }
}, },
getGroup01ChartOption() { getGroup01ChartOption() {
@ -871,6 +872,17 @@ export default {
color: "#D32029", color: "#D32029",
}; };
// Add dashed horizontal grid lines from y-axis
chartOption["yAxis"] = {
type: "value",
splitLine: {
show: true,
lineStyle: {
type: "dashed", // Makes the lines dashed
},
},
};
return chartOption; return chartOption;
}, },
makeChartGroup01XaxisData() { makeChartGroup01XaxisData() {

View File

@ -286,7 +286,7 @@ export default {
resizable: true, resizable: true,
}, },
header: { header: {
height: 65, height: 75,
complexColumns: myComplexColumns, complexColumns: myComplexColumns,
}, },
}; };
@ -304,7 +304,7 @@ export default {
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between'); $(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
const el2 = document.createElement('button'); const el2 = document.createElement('button');
$(el2).addClass('edit-btn blue--text'); $(el2).addClass('edit-btn blue--text');
el2.innerText = '편집하다'; el2.innerText = '수정';
elDiv.appendChild(el2); elDiv.appendChild(el2);
this.el = elDiv; this.el = elDiv;
@ -415,7 +415,7 @@ export default {
{ {
header: '구분', header: '구분',
name: 'gubun', name: 'gubun',
width: 80, width: 200,
align: 'left', align: 'left',
// hidden: true, // hidden: true,
formatter({ value }) { formatter({ value }) {
@ -447,7 +447,7 @@ export default {
myColumns.push({ myColumns.push({
header: i.toString() + '월', header: i.toString() + '월',
name: qty, name: qty,
width: 73, width: 80,
align: 'right', align: 'right',
editor: 'text', editor: 'text',
formatter: this.numberFormatter, formatter: this.numberFormatter,

View File

@ -52,6 +52,8 @@
</v-card-title> </v-card-title>
<v-row> <v-row>
<v-col :cols="3" v-for="(item, i) in value.chartData" :key="'key2_' + i"> <v-col :cols="3" v-for="(item, i) in value.chartData" :key="'key2_' + i">
<v-card>
<div <div
class="v-box" class="v-box"
style="height: 330px; position: relative" style="height: 330px; position: relative"
@ -73,7 +75,7 @@
<!-- Information area --> <!-- Information area -->
<v-col :cols="5" style="height: 100%"> <v-col :cols="5" style="height: 100%">
<div style="height: 10%"> <div style="height: 10%">
<strong style="font-size: 20px; font-weight: 600">{{ <strong class="v-card v-card__title pa-0" >{{
item.fabNm item.fabNm
}}</strong> }}</strong>
</div> </div>
@ -123,6 +125,8 @@
</div> </div>
</v-col> </v-col>
</div> </div>
</v-card>
</v-col> </v-col>
</v-row> </v-row>
</div> </div>

View File

@ -97,14 +97,25 @@
<v-card-title class="d-flex align-center justify-space-between pa-5"> <v-card-title class="d-flex align-center justify-space-between pa-5">
<span class="tit ft-size_20 ft-weight_600">설비별 현황 리스트</span> <span class="tit ft-size_20 ft-weight_600">설비별 현황 리스트</span>
</v-card-title> </v-card-title>
<div class="px-5" style="height: calc(100% - 106px)"> <div class="px-5" style="height: calc(100% - 56px)">
<div ref="gridParent" class="w100 h100"> <div ref="gridParent" class="w100 h100" style="height: calc(100% - 166px)">
<component <component
:ref="gridName" :ref="gridName"
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
:gridName="gridName" :gridName="gridName"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
/> />
<div class="pagination-wrapper">
<pagination
id="pagination"
:total-count="totalCount"
:page-num="page"
:limit="limit"
:itemsPerPageArray="itemsPerPageArray"
@loadData="changeGrid"
/>
</div>
<!-- <!--
<component <component
:ref="gridName" :ref="gridName"
@ -142,6 +153,7 @@ import SelectBox from "@/components/common/select/SelectBox";
import SelectCmCycle from "@/components/common/select/SelectCmCycle"; import SelectCmCycle from "@/components/common/select/SelectCmCycle";
import DatePicker from "@/components/common/Datepicker"; import DatePicker from "@/components/common/Datepicker";
import Grid from "~/components/common/Grid"; import Grid from "~/components/common/Grid";
import pagination from "~/components/common/Pagination";
let myTitle; let myTitle;
let myPrgmId; let myPrgmId;
@ -168,6 +180,7 @@ export default {
SelectCmCycle, SelectCmCycle,
DatePicker, DatePicker,
Grid, Grid,
pagination,
}, },
data() { data() {
return { return {
@ -188,6 +201,10 @@ export default {
gridName: "grid01", gridName: "grid01",
enrgUseMainIdxDesc: [], enrgUseMainIdxDesc: [],
itemsPerPageArray: [10, 20, 30],
limit: 10,
page: 1,
totalCount: 0,
// tooltipData: { // tooltipData: {
// show: false, // show: false,
@ -263,6 +280,11 @@ export default {
this.chkOpenTabList({ key: "destroy", prgmId: myPrgmId }); this.chkOpenTabList({ key: "destroy", prgmId: myPrgmId });
}, },
methods: { methods: {
changeGrid: async function (pageNum, limit) {
this.page = pageNum;
this.limit = limit;
this.search();
},
async init() { async init() {
await this.getSelectValueList(); await this.getSelectValueList();
await this.setQueryParams(); await this.setQueryParams();
@ -374,17 +396,17 @@ export default {
const onClickCallback = columnInfo.renderer.options.onClick; const onClickCallback = columnInfo.renderer.options.onClick;
this.disabled = columnInfo.renderer.options.disabled || false; this.disabled = columnInfo.renderer.options.disabled || false;
const elDiv = document.createElement('div'); const elDiv = document.createElement("div");
elDiv.innerHTML = `<span>${value}</span>`; elDiv.innerHTML = `<span>${value}</span>`;
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between'); $(elDiv).addClass("tui-grid-cell-content d-flex justify-space-between");
const el2 = document.createElement('button'); const el2 = document.createElement("button");
$(el2).addClass('edit-btn blue--text'); $(el2).addClass("edit-btn blue--text");
el2.innerText = '보기'; el2.innerText = "보기";
elDiv.appendChild(el2); elDiv.appendChild(el2);
this.el = elDiv; this.el = elDiv;
if (!this.disabled && typeof onClickCallback === 'function') { if (!this.disabled && typeof onClickCallback === "function") {
// click 이벤트 // click 이벤트
this.el.addEventListener('click', function(event) { this.el.addEventListener("click", function (event) {
onClickCallback(rowKey); onClickCallback(rowKey);
}); });
} }
@ -405,12 +427,19 @@ export default {
{ header: "fabId", name: "fabId", hidden: true }, { header: "fabId", name: "fabId", hidden: true },
{ header: "FAB", name: "fabNm", align: "left" }, { header: "FAB", name: "fabNm", align: "left" },
{ header: "eqpmGrpId", name: "eqpmGrpId", hidden: true }, { header: "eqpmGrpId", name: "eqpmGrpId", hidden: true },
{ header: "설비그룹", name: "eqpmGrpNm", align: "left", width: 200, {
header: "설비그룹",
name: "eqpmGrpNm",
align: "left",
width: 200,
},
{ header: "eqpmId", name: "eqpmId", hidden: true },
{ header: "설비명", name: "eqpmNm", align: "left", width: 200,
// Render custom button to switch page instead of double click on row // Render custom button to switch page instead of double click on row
renderer: { renderer: {
type: CustomButton, type: CustomButton,
options: { options: {
value: '보기', value: "보기",
onClick: (rowKey) => { onClick: (rowKey) => {
const gridInstance = this.$refs[this.gridName].gridInstance; const gridInstance = this.$refs[this.gridName].gridInstance;
const eventRowData = gridInstance.invoke("getRow", rowKey); const eventRowData = gridInstance.invoke("getRow", rowKey);
@ -434,12 +463,10 @@ export default {
key: key, key: key,
}, },
}); });
}
}
}
}, },
{ header: "eqpmId", name: "eqpmId", hidden: true }, },
{ header: "설비명", name: "eqpmNm", align: "left", width: 200 }, },
},
{ {
header: "계획량", header: "계획량",
name: "planVal", name: "planVal",
@ -546,10 +573,10 @@ export default {
}, },
], ],
}, },
pageOptions: { // pageOptions: {
useClient: true, // useClient: true,
perPage: 3, // perPage: 3,
} // }
}; };
this.setGridOption({ this.setGridOption({
@ -566,26 +593,39 @@ export default {
this.loadGrid = false; this.loadGrid = false;
this.enrgUseMainIdxDesc = []; this.enrgUseMainIdxDesc = [];
var apiKey = null; var apiKey = null;
var apiKey2 = null;
var params = { var params = {
fabId: this.selectValue01, fabId: this.selectValue01,
eqpmKindId: this.selectValue02, eqpmKindId: this.selectValue02,
eqpmGrpId: this.selectValue03, eqpmGrpId: this.selectValue03,
fromDt: this.pageData.fromDt, fromDt: this.pageData.fromDt,
limit: this.limit,
page: this.page,
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
}; };
if (this.pageData.cmCycle == "CYC_DAY") { if (this.pageData.cmCycle == "CYC_DAY") {
params["fromDtMm"] = String(this.pageData.fromDt).substring(0, 6); params["fromDtMm"] = String(this.pageData.fromDt).substring(0, 6);
apiKey = "selectDailyEnrgUseMainIdx"; apiKey = "selectDailyEnrgUseMainIdx";
apiKey2 = "selectDailyEnrgUseMainIdxPageTotal";
} else if (this.pageData.cmCycle == "CYC_MONTH") { } else if (this.pageData.cmCycle == "CYC_MONTH") {
apiKey = "selectMonthlyEnrgUseMainIdx"; apiKey = "selectMonthlyEnrgUseMainIdx";
apiKey2 = "selectMonthlyEnrgUseMainIdxPageTotal";
} }
var res = await this.postApiReturn({ var res = await this.postApiReturn({
apiKey: apiKey, apiKey: apiKey,
resKey: "eqpmIndMntrData", resKey: "eqpmIndMntrData",
sendParam: params, sendParam: params,
}); });
var res2 = await this.postApiReturn({
apiKey: apiKey2,
resKey: "eqpmIndMntrPageTotal",
sendParam: params,
});
this.totalCount = res2[0].totalcount;
this.enrgUseMainIdxDesc = await this.postApiReturn({ this.enrgUseMainIdxDesc = await this.postApiReturn({
apiKey: "selectEnrgUseMainIdxDesc", apiKey: "selectEnrgUseMainIdxDesc",
resKey: "eqpmIndMntrData", resKey: "eqpmIndMntrData",
@ -654,7 +694,7 @@ export default {
// id값 설정 // id값 설정
elementList[i].id = "tooltipTargetElement_" + i; elementList[i].id = "tooltipTargetElement_" + i;
tooltipElement.id = "tooltipElement_" + i; tooltipElement.id = "tooltipElement_" + i;
tooltipElement.classList.add(this.isDarkmode ? "dark-mode" : "light-mode");
// element 추가 // element 추가
elementList[i].append(tooltipElement); elementList[i].append(tooltipElement);
} }
@ -849,5 +889,12 @@ function numberFormatter({ value }) {
overflow-y: visible; overflow-y: visible;
} }
} }
.pagination-wrapper {
display: flex;
justify-content: center;
align-items: center;
padding: 12px 0;
}
} }
</style> </style>

View File

@ -1,6 +1,6 @@
import Vue from "vue"; import Vue from "vue";
// import Antd from "ant-design-vue"; // import Antd from "ant-design-vue";
import { Row, Col, Card, Button, Checkbox, DatePicker, Select, Table, Modal, Input, Icon, Divider } from "ant-design-vue"; import { Row, Col, Card, Button, Checkbox, DatePicker, Select, Table, Modal, Input, Icon, Divider, Pagination } from "ant-design-vue";
import 'ant-design-vue/dist/antd.css' import 'ant-design-vue/dist/antd.css'
// import { RangePicker } from "ant-design-vue/types/date-picker/range-picker"; // import { RangePicker } from "ant-design-vue/types/date-picker/range-picker";
@ -17,4 +17,5 @@ Vue.component(Modal.name, Modal)
Vue.component(Input.name, Input) Vue.component(Input.name, Input)
Vue.component(Icon.name, Icon) Vue.component(Icon.name, Icon)
Vue.component(Divider.name, Divider) Vue.component(Divider.name, Divider)
Vue.component(Pagination.name, Pagination)
// Vue.component(RangePicker.name, RangePicker) // Vue.component(RangePicker.name, RangePicker)

View File

@ -289,8 +289,8 @@ const Utility = () => {
header: { header: {
height: 28, height: 28,
}, },
rowHeight: 29, rowHeight: 37,
minRowHeight: 29, minRowHeight: 37,
columnOptions: { columnOptions: {
resizable: true, resizable: true,
minWidth: 100, minWidth: 100,

View File

@ -910,6 +910,11 @@ const INIT_URL_STATE = {
'ems/effc/eqpmIndMntrCtr/selectDailyEnrgUseMainIdx', 'ems/effc/eqpmIndMntrCtr/selectDailyEnrgUseMainIdx',
selectMonthlyEnrgUseMainIdx: selectMonthlyEnrgUseMainIdx:
'ems/effc/eqpmIndMntrCtr/selectMonthlyEnrgUseMainIdx', 'ems/effc/eqpmIndMntrCtr/selectMonthlyEnrgUseMainIdx',
selectDailyEnrgUseMainIdxPageTotal:
'ems/effc/eqpmIndMntrCtr/selectDailyEnrgUseMainIdxPageTotal',
selectMonthlyEnrgUseMainIdxPageTotal:
'ems/effc/eqpmIndMntrCtr/selectMonthlyEnrgUseMainIdxPageTotal',
//prgmId : PRG0082 에너지 사용량 - 설비상세 모니터링 //prgmId : PRG0082 에너지 사용량 - 설비상세 모니터링
selectDailyEnrgUseMainGuideIdx: selectDailyEnrgUseMainGuideIdx: