Compare commits

..

2 Commits

64 changed files with 2487 additions and 1711 deletions

View File

@ -434,7 +434,7 @@ a {
.v-application.#{$theme}-mode { .v-application.#{$theme}-mode {
min-width: 1000px; min-width: 1000px;
.head-logo { .head-logo{
gap: 8px; gap: 8px;
} }
@ -485,9 +485,8 @@ a {
.container--fluid { .container--fluid {
background-color: map-deep-get($config, #{$theme}, "container-fluid"); background-color: map-deep-get($config, #{$theme}, "container-fluid");
.menu-container { .menu-container {
height:calc(100vh - 60px); max-height:calc(100vh - 60px);
overflow-y: auto; overflow-y: auto;
} }
} }
@ -951,24 +950,15 @@ a {
"v-calendar-weekday-backgroundColor" "v-calendar-weekday-backgroundColor"
); );
border-right: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color"); border-right: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
border-top: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
color: map-deep-get($config, #{$theme}, "v-calendar-weekday-color"); color: map-deep-get($config, #{$theme}, "v-calendar-weekday-color");
&:nth-of-type(1) { &:nth-of-type(1) {
// color: map-deep-get($config, color: map-deep-get($color, "week", "sun");
// #{$theme},
// "v-calendar-is-sun"
// );
border-left: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
} }
// &:nth-of-type(7) { &:nth-of-type(7) {
// color: map-deep-get($config, color: map-deep-get($color, "week", "sat");
// #{$theme}, }
// "v-calendar-is-sat"
// );
// }
} }
>.vc-day { >.vc-day {
@ -977,33 +967,22 @@ a {
.day-hldyNm, .day-hldyNm,
.day-label.is-holiday { .day-label.is-holiday {
color: map-deep-get($config, color: map-deep-get($color, "week", "sun");
#{$theme},
"v-calendar-is-sun"
);
} }
&.weekday-1 { &.weekday-1 {
.day-label, .day-label,
.day-hldyNm { .day-hldyNm {
color: map-deep-get($config, color: map-deep-get($color, "week", "sun");
#{$theme},
"v-calendar-is-sun"
);
} }
border-left: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
} }
&.weekday-7 { &.weekday-7 {
.day-label, .day-label,
.day-hldyNm { .day-hldyNm {
color: map-deep-get($config, color: map-deep-get($color, "week", "sat");
#{$theme},
"v-calendar-is-sat"
);
} }
} }
@ -1205,17 +1184,11 @@ a {
} }
th.tui-sun { th.tui-sun {
color: map-deep-get($config, color: map-deep-get($color, "week", "sun");
#{$theme},
"v-calendar-is-sun"
);
} }
th.tui-sat { th.tui-sat {
color: map-deep-get($config, color: map-deep-get($color, "week", "sat");
#{$theme},
"v-calendar-is-sat"
);
} }
} }
@ -1231,17 +1204,11 @@ a {
} }
td.tui-calendar-sun { td.tui-calendar-sun {
color: map-deep-get($config, color: map-deep-get($color, "week", "sun");
#{$theme},
"v-calendar-is-sun"
);
} }
td.tui-calendar-sat { td.tui-calendar-sat {
color: map-deep-get($config, color: map-deep-get($color, "week", "sat");
#{$theme},
"v-calendar-is-sat"
);
} }
} }
} }
@ -1355,7 +1322,6 @@ a {
color: #46c0ff; color: #46c0ff;
} }
} }
.v-btn { .v-btn {
background-color: transparent !important; background-color: transparent !important;
color: map-deep-get($config, #{$theme}, "btn-header-select-color") !important; color: map-deep-get($config, #{$theme}, "btn-header-select-color") !important;

View File

@ -134,11 +134,11 @@
} }
&-body-container{ &-body-container{
border-right: 0; border-right: 1px solid;
// border-right-color: map-deep-get($config, border-right-color: map-deep-get($config,
// #{$theme}, #{$theme},
// "tui-grid-cell-borderColor" "tui-grid-cell-borderColor"
// ); );
width: auto !important; width: auto !important;
} }
@ -151,27 +151,24 @@
width: $scrollbar-width !important; width: $scrollbar-width !important;
height: $scrollbar-width !important; height: $scrollbar-width !important;
-webkit-appearance: initial; -webkit-appearance: initial;
// background-color: map-deep-get($config, background-color: map-deep-get($config,
// #{$theme}, #{$theme},
// "tui-grid-cell-borderColor" "scrollbar-track"
// ) !important; ) !important;
background-color: rgba(0, 0, 0, 0) !important;
border-radius: 3px !important; border-radius: 3px !important;
} }
& ::-webkit-scrollbar-track { & ::-webkit-scrollbar-track {
// background-color: map-deep-get($config, background-color: map-deep-get($config,
// #{$theme}, #{$theme},
// "tui-grid-cell-borderColor" "scrollbar-track"
// ) !important; ) !important;
background-color: rgba(0, 0, 0, 0) !important;
} }
& ::-webkit-scrollbar-thumb { & ::-webkit-scrollbar-thumb {
width: 50px !important; width: 50px !important;
height: 50px !important; height: 50px !important;
background-color: map-deep-get($config, #{$theme}, "scrollbar-thumb"); background-color: map-deep-get($config, #{$theme}, "scrollbar-thumb");
// background-color: rgba(0, 0, 0, 0);
border-radius: 3px; border-radius: 3px;
} }
@ -198,7 +195,6 @@
&-scrollbar-right-top { &-scrollbar-right-top {
background-color: rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 0);
border: none; border: none;
display: none;
// background-color: map-deep-get( // background-color: map-deep-get(
// $config, // $config,
// #{$theme}, // #{$theme},
@ -225,13 +221,12 @@
width: $scrollbar-width !important; width: $scrollbar-width !important;
height: $scrollbar-width !important; height: $scrollbar-width !important;
// display: none !important; // display: none !important;
border-color: map-deep-get($config, #{$theme}, "cardBackground"); border-color: map-deep-get($config, #{$theme}, "scrollbar-track");
background-color: map-deep-get($config, #{$theme}, "cardBackground"); background-color: map-deep-get($config, #{$theme}, "scrollbar-track");
// border: none !important; // border: none !important;
// bottom: -1px; // bottom: -1px;
// right: -2px; // right: -2px;
box-sizing: border-box; box-sizing: border-box;
// display: none;
} }
&-scrollbar-frozen-border, &-scrollbar-frozen-border,
@ -241,9 +236,13 @@
border-color: transparent !important; border-color: transparent !important;
} }
&-body-area, // &-body-area {
// overflow: auto !important;
// }
&-container, &-container,
&-layer-state, &-layer-state,
&-body-area,
&-summary-area, &-summary-area,
&-cell { &-cell {
background-color: map-deep-get($config, background-color: map-deep-get($config,
@ -255,36 +254,23 @@
"tui-grid-border-vertical-color" "tui-grid-border-vertical-color"
); );
// &-current-row{ &-current-row{
// } td {
td.row-selected { .custom-radio {
.custom-radio { .radio-mark{
background-color: map-deep-get($config, border-color: #1677ff;
#{$theme}, background-color: #fff;
"ant-btn-primary-color" &::after {
); content: "";
.radio-mark{ position: absolute;
border-color: map-deep-get($config, top: 50%;
#{$theme}, left: 50%;
"arow-line-color" transform: translate(-50%, -50%);
); height: 11px;
background-color: map-deep-get($config, width: 11px;
#{$theme}, border-radius: 50%;
"arow-line-btn-bg-color" background-color: #1677ff;
); }
&::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 8px;
width: 8px;
border-radius: 50%;
background-color: map-deep-get($config,
#{$theme},
"arow-line-color"
);
} }
} }
} }
@ -316,8 +302,8 @@
&-header-area, &-header-area,
&-cell-header { &-cell-header {
// font-family: inherit; // font-family: inherit;
// font-style: Semi Bold;
font-weight: 600; font-weight: 600;
font-style: Semi Bold;
background-color: map-deep-get($config, background-color: map-deep-get($config,
#{$theme}, #{$theme},
"tui-grid-header-backgroundColor" "tui-grid-header-backgroundColor"
@ -334,13 +320,8 @@
} }
&-header-area { &-header-area {
// background-color: none; background-color: none;
border: none; border: none;
margin-right: 0 !important;
background-color: map-deep-get($config,
#{$theme},
"tui-grid-cell-backgroundColor"
);
} }
&-row-odd, &-row-odd,

View File

@ -171,8 +171,8 @@
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
padding-left: 0; padding-left: 28px;
margin: 5px; margin: 10px;
font-size: 16px; font-size: 16px;
} }
.custom-radio input[type="radio"] { .custom-radio input[type="radio"] {
@ -183,13 +183,13 @@
/* Custom radio appearance */ /* Custom radio appearance */
.radio-mark { .radio-mark {
position: absolute; position: absolute;
left: -8px; left: 0;
top: 50%; top: 50%;
transform: translateY(-50%); transform: translateY(-50%);
height: 14px; height: 18px;
width: 14px; width: 18px;
// background-color: white; background-color: white;
border: 1px solid #ccc; border: 2px solid #ccc;
border-radius: 50%; border-radius: 50%;
transition: all 0.2s ease; transition: all 0.2s ease;
} }
@ -263,6 +263,9 @@
"v-input-backgroundColor" "v-input-backgroundColor"
); );
&:not(.v-input--radio-group, .v-input--checkbox) { &:not(.v-input--radio-group, .v-input--checkbox) {
.v-input__slot { .v-input__slot {
background-color: map-deep-get($config, background-color: map-deep-get($config,
@ -369,17 +372,6 @@
} }
} }
} }
.radio-mark {
background-color: map-deep-get($config,
#{$theme},
"ant-btn-primary-color"
);
border-color: map-deep-get($config,
#{$theme},
"v-input-textarea-border"
);
}
} }
.v-radio { .v-radio {

View File

@ -14,13 +14,10 @@
position: relative; position: relative;
border-radius: 6px; border-radius: 6px;
border: solid 1px; border: solid 1px;
height: 32px; height: 40px;
// border-color: #424242; // border-color: #424242;
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color"); border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
&.datepicker-large {
height: 40px;
}
.v-input { .v-input {

View File

@ -32,8 +32,8 @@ $color: (
"black": ("0": #000, "black": ("0": #000,
"1": #111), "1": #111),
"white": ("0": #fff), "white": ("0": #fff),
"week": ("sun": #FF4D4F, "week": ("sun": #fb5a83,
"sat": #597EF7) "sat": #2d8cf6)
); );
$config: ( $config: (
@ -96,19 +96,17 @@ $config: (
v-input-disabled-backgroundColor:rgba(255, 255, 255, 0.08), v-input-disabled-backgroundColor:rgba(255, 255, 255, 0.08),
v-input-disabled-color: rgba(255, 255, 255, 0.5), v-input-disabled-color: rgba(255, 255, 255, 0.5),
v-select-label-color: rgba(255, 255, 255, 0.85), v-select-label-color: rgba(255, 255, 255, 0.85),
v-calendar-weekday-backgroundColor: #FFFFFF0A, v-calendar-weekday-backgroundColor: #383f5d,
v-calendar-weekday-color: #FFFFFFD9, v-calendar-weekday-color: #fff,
v-calendar-weekday-border-color: #FFFFFF0F, v-calendar-weekday-border-color: rgba(255, 255, 255, 0.1),
v-calendar-day-color: #FFFFFFD9, v-calendar-day-color: #fff,
v-calendar-day-in-not-month-color: #FFFFFF14, v-calendar-day-in-not-month-color: rgba(255, 255, 255, 0.05),
v-calendar-is-today-background-color: #0A224F, v-calendar-is-today-background-color: #2d4571,
v-calendar-is-sat: #263EA0,
v-calendar-is-sun:#A61D24,
tui-grid-title-color: #FFFFFFD9, tui-grid-title-color: #FFFFFFD9,
tui-grid-header-backgroundColor: #2a2b2d, tui-grid-header-backgroundColor: #2a2b2d,
tui-grid-header-color: #FFFFFFD9, tui-grid-header-color: #FFFFFFD9,
tui-grid-border-horziontal-color: #212224, tui-grid-border-horziontal-color: #212224,
tui-grid-border-vertical-color: #FFFFFF0F, tui-grid-border-vertical-color: #212224,
tui-grid-cell-backgroundColor: #212224, tui-grid-cell-backgroundColor: #212224,
tui-grid-cell-color: #fff, tui-grid-cell-color: #fff,
tui-grid-cell-insert-color: #13636c, tui-grid-cell-insert-color: #13636c,
@ -236,14 +234,12 @@ $config: (
v-input-disabled-backgroundColor: rgba(0, 0, 0, 0.04), v-input-disabled-backgroundColor: rgba(0, 0, 0, 0.04),
v-input-disabled-color: rgba(0, 0, 0, 0.25), v-input-disabled-color: rgba(0, 0, 0, 0.25),
v-select-label-color: rgba(0, 0, 0, 0.88), v-select-label-color: rgba(0, 0, 0, 0.88),
v-calendar-weekday-backgroundColor: #00000005, v-calendar-weekday-backgroundColor: #e0e0e0,
v-calendar-weekday-color: #000000E0, v-calendar-weekday-color: #111,
v-calendar-weekday-border-color: #0000000F, v-calendar-weekday-border-color: #d4d4d4,
v-calendar-day-color: #000000E0, v-calendar-day-color: #111,
v-calendar-day-in-not-month-color: #0000000A, v-calendar-day-in-not-month-color: #f8f8f8,
v-calendar-is-today-background-color: #E6F4FF, v-calendar-is-today-background-color: #e3eaf3,
v-calendar-is-sat: #597EF7,
v-calendar-is-sun:#FF4D4F,
tui-grid-title-color: #000000E0, tui-grid-title-color: #000000E0,
tui-grid-header-backgroundColor: #fafafa, //#e0e0e0, tui-grid-header-backgroundColor: #fafafa, //#e0e0e0,
tui-grid-header-color: rgba(0, 0, 0, 0.88), tui-grid-header-color: rgba(0, 0, 0, 0.88),

View File

@ -3,28 +3,45 @@
<div class="custom-vc-calender-title text-center" v-if="headerVisible"> <div class="custom-vc-calender-title text-center" v-if="headerVisible">
<span>{{ selectedYear }} {{ selectedMonth }}</span> <span>{{ selectedYear }} {{ selectedMonth }}</span>
</div> </div>
<vc-calendar locale="ko-KR" ref="myCalendar" :attributes="calendarAttributes" class="custom-calendar"> <vc-calendar
ref="myCalendar"
:attributes="calendarAttributes"
class="custom-calendar"
>
<!-- disable-page-swipe <!-- disable-page-swipe
is-expanded --> is-expanded -->
<template v-slot:day-content="{ day, attributes }"> <template v-slot:day-content="{ day, attributes }">
<div class="plusButton" style="overflow:auto"> <div class="plusButton" style="overflow:auto">
<!-- <p class="plusButton mr-1" >+</p> --> <!-- <p class="plusButton mr-1" >+</p> -->
<span :class="['day-label', { 'is-holiday': hldyValues(day.day) }]" <span
@click="addPlan(day.year, day.month, day.day)">{{ day.day }}</span> :class="['day-label', { 'is-holiday': hldyValues(day.day) }]"
@click="addPlan(day.year, day.month, day.day)"
>{{ day.day }}</span
>
<span v-for="attr in attributes" :key="attr.key" class="day-hldyNm"> <span v-for="attr in attributes" :key="attr.key" class="day-hldyNm">
{{ attr.customData.title }} {{ attr.customData.title }}
</span> </span>
<div class=""> <div class="">
<p v-for="attr in attributes" :key="attr.key" :class="attr.customData.planColor" <p
@click="updatePlan(attr.customData.planSeq)"> v-for="attr in attributes"
:key="attr.key"
:class="attr.customData.planColor"
@click="updatePlan(attr.customData.planSeq)"
>
{{ attr.customData.planTitle }} {{ attr.customData.planTitle }}
</p> </p>
</div> </div>
</div> </div>
</template> </template>
</vc-calendar> </vc-calendar>
<component ref="planPop" :is="'PlanPop'" v-show="false" :detailList="detailList" :label="planLabel" <component
:parentPrgmId="parentPrgmId" /> ref="planPop"
:is="'PlanPop'"
v-show="false"
:detailList="detailList"
:label="planLabel"
:parentPrgmId="parentPrgmId"
/>
</div> </div>
</template> </template>
<script> <script>
@ -46,10 +63,6 @@ export default {
type: Boolean, type: Boolean,
default: true, default: true,
}, },
showTitle: {
type: Boolean,
default: false,
},
}, },
computed: { computed: {
...mapState({ ...mapState({
@ -109,7 +122,7 @@ export default {
planColor: planColor:
// item.endDt < Utility.setFormatDate(new Date(), 'YYYY-MM-DD') // item.endDt < Utility.setFormatDate(new Date(), 'YYYY-MM-DD')
// ? 'grey': // ? 'grey':
item.planColor, item.planColor,
}, },
dates: new Date(yy, mm, dd), dates: new Date(yy, mm, dd),
}); });
@ -153,14 +166,15 @@ export default {
this.$refs['planPop'].strtDt = ''; this.$refs['planPop'].strtDt = '';
this.$refs['planPop'].endDt = ''; this.$refs['planPop'].endDt = '';
this.$refs['planPop'].addPlanData = { this.$refs['planPop'].addPlanData = {
year: year, year : year,
month: month, month : month,
day: day day : day
} }
// BEGIN TEST UI
this.$refs['planPop'].blocId = this.pageData.blocMstrList[ // this.$refs['planPop'].blocId = this.pageData.blocMstrList[
this.pageData.blocId // this.pageData.blocId
].blocId; // ].blocId;
// END TEST UI
this.$refs['planPop'].dialog = true; this.$refs['planPop'].dialog = true;
}, },
updatePlan(val) { updatePlan(val) {
@ -174,7 +188,7 @@ export default {
this.$refs['planPop'].dialog = true; this.$refs['planPop'].dialog = true;
}, },
}, },
mounted() { }, mounted() {},
}; };
const myDetail = []; const myDetail = [];
</script> </script>
@ -182,44 +196,36 @@ const myDetail = [];
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/scss/var.scss'; @import '@/assets/scss/var.scss';
@import '@/assets/scss/mixin.scss'; @import '@/assets/scss/mixin.scss';
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 0px; width: 0px;
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
display: none; display: none;
} }
.custom-vc-calender { .custom-vc-calender {
&-title { &-title {
margin-bottom: 20px; margin-bottom: 20px;
} }
} }
::v-deep { ::v-deep {
.custom-calendar.vc-container { .custom-calendar.vc-container {
width: 100%; width: 100%;
background-color: transparent; background-color: transparent;
border: 0; border: 0;
} }
.vc-header, .vc-header,
.vc-arrows-container { .vc-arrows-container {
display: none; display: none;
} }
.vc-weeks { .vc-weeks {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
padding: 0; padding: 0;
> div {
>div {
flex: 1 0 calc(100% / 7); flex: 1 0 calc(100% / 7);
} }
} }
.vc-weekday { .vc-weekday {
display: flex; display: flex;
align-items: center; align-items: center;
@ -227,7 +233,6 @@ const myDetail = [];
height: 36px; height: 36px;
padding: 0; padding: 0;
} }
.vc-day { .vc-day {
height: 10.889vh; height: 10.889vh;
min-height: auto; min-height: auto;
@ -236,7 +241,6 @@ const myDetail = [];
font-size: 1rem; font-size: 1rem;
line-height: 1.235; line-height: 1.235;
} }
.day-hldyNm { .day-hldyNm {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@ -247,27 +251,25 @@ const myDetail = [];
font-size: 10pt; font-size: 10pt;
} }
>div { > div {
position: relative; position: relative;
height: 100%; height: 100%;
padding: 10px; padding: 10px;
border-radius: 0 !important; border-radius: 0 !important;
} }
} }
.vc-day.is-not-in-month { .vc-day.is-not-in-month {
* { * {
opacity: 1 !important; opacity: 1 !important;
} }
} }
.plusButton:hover > span:first-child {
.plusButton:hover>span:first-child {
font-weight: bolder; font-weight: bolder;
cursor: pointer; cursor: pointer;
} }
.red { .red {
background-color: #FF4D4F !important; //background-color: rgba(229,62,62,var(--bg-opacity));
background-color: #e53e3e !important;
color: #fff; color: #fff;
border-radius: 0.125rem; border-radius: 0.125rem;
font-size: 0.75rem; font-size: 0.75rem;
@ -275,9 +277,9 @@ const myDetail = [];
text-align: left; text-align: left;
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
} }
.blue { .blue {
background-color: #597EF7 !important; //background-color: rgba(66,153,225,var(--bg-opacity));
background-color: #4299e1 !important;
color: #fff; color: #fff;
border-radius: 0.125rem; border-radius: 0.125rem;
font-size: 0.75rem; font-size: 0.75rem;
@ -285,9 +287,9 @@ const myDetail = [];
text-align: left; text-align: left;
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
} }
.puple { .puple {
background-color: #9254DE !important; //background-color: rgba(102,126,234,var(--bg-opacity));
background-color: #667eea !important;
color: #fff; color: #fff;
border-radius: 0.125rem; border-radius: 0.125rem;
font-size: 0.75rem; font-size: 0.75rem;
@ -295,9 +297,9 @@ const myDetail = [];
text-align: left; text-align: left;
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
} }
.green { .green {
background-color: #73D13D !important; //background-color: rgba(56,178,172,var(--bg-opacity));
background-color: #38b2ac !important;
color: #fff; color: #fff;
border-radius: 0.125rem; border-radius: 0.125rem;
font-size: 0.75rem; font-size: 0.75rem;
@ -306,9 +308,9 @@ const myDetail = [];
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
width: 90%; width: 90%;
} }
.orange { .orange {
background-color: #FFA940 !important; //background-color: rgba(237,137,54,var(--bg-opacity));
background-color: #ed8936 !important;
color: #fff; color: #fff;
border-radius: 0.125rem; border-radius: 0.125rem;
font-size: 0.75rem; font-size: 0.75rem;
@ -316,9 +318,9 @@ const myDetail = [];
text-align: left; text-align: left;
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
} }
.pink { .pink {
background-color: #F759AB !important; //background-color: rgba(237,100,166,var(--bg-opacity));
background-color: #ed64a6 !important;
color: #fff; color: #fff;
border-radius: 0.125rem; border-radius: 0.125rem;
font-size: 0.75rem; font-size: 0.75rem;
@ -326,8 +328,8 @@ const myDetail = [];
text-align: left; text-align: left;
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
} }
.grey { .grey {
background-color: #6d6d6d;
color: #fff; color: #fff;
border-radius: 0.125rem; border-radius: 0.125rem;
font-size: 0.75rem; font-size: 0.75rem;

View File

@ -9,7 +9,7 @@
</label> </label>
</v-col> </v-col>
<v-col :cols="label ? textCols : ''"> <v-col :cols="label ? textCols : ''">
<div :class="['datepicker-container', customClass]" > <div class="datepicker-container" >
<v-text-field <v-text-field
id="startpicker" id="startpicker"
ref="startpicker" ref="startpicker"
@ -93,12 +93,7 @@ export default {
type:Boolean, type:Boolean,
require:false, require:false,
default: true default: true
}, }
customClass: {
type: String,
require: false,
},
}, },
data() { data() {
return { return {

View File

@ -4,13 +4,12 @@
:data="chkGridData" :data="chkGridData"
:columns="chkGridColumns" :columns="chkGridColumns"
:options="chkGridOptions" :options="chkGridOptions"
@mousedown="onMousedown" @focusChange="focusChangeEvt"
@click="startEditing" @click="startEditing"
@editingFinish="editingFinish" @editingFinish="editingFinish"
@dblclick="dblClick" @dblclick="dblClick"
@mouseover="mouseoverEvent" @mouseover="mouseoverEvent"
@mouseout="mouseoutEvent" @mouseout="mouseoutEvent"
@focusChange="focusChangeEvt"
/> />
</template> </template>
<script> <script>
@ -108,13 +107,16 @@ export default {
}, },
chkGridOptions() { chkGridOptions() {
const options = { const options = {
// bodyHeight: 'fitToContent',
scrollX: false,
scrollY: false,
...this.gridData.option, ...this.gridData.option,
useIcon: false,
}; };
options.treeColumnOptions = { options.treeColumnOptions = {
useIcon: false, useIcon: false,
...options.treeColumnOptions, ...options.treeColumnOptions,
}; };
return options; return options;
}, },
defaultRow() { defaultRow() {
@ -161,7 +163,7 @@ export default {
}, },
created() {}, created() {},
async mounted() { async mounted() {
// console.log(this.dataPath); // console.log('--------------DEBUG----gridData: ', this.gridData);
if (this.gridName) { if (this.gridName) {
this.gridInstance = this.$refs['tuigrid' + this.gridName]; this.gridInstance = this.$refs['tuigrid' + this.gridName];
@ -184,13 +186,13 @@ export default {
}), }),
// true : 현재 행 혹은 연결된 그리드가 수정중인 상태 // true : 현재 행 혹은 연결된 그리드가 수정중인 상태
checkGridState() { checkGridState() {
const rowStatList = ['I', 'U', 'D']; var rowStatList = ['I', 'U', 'D'];
const row = this.gridInstance.invoke('getFocusedCell'); var row = this.gridInstance.invoke('getFocusedCell');
if (row) { if (row) {
const rowData = this.gridInstance.invoke('getRow', row.rowKey); var rowData = this.gridInstance.invoke('getRow', row.rowKey);
if (rowData) { if (rowData) {
const rowStat = rowData['rowStat']; var rowStat = rowData['rowStat'];
if (rowStatList.includes(rowStat)) { if (rowStatList.includes(rowStat)) {
return true; return true;
} }
@ -198,8 +200,8 @@ export default {
} }
if (this.preventFocusChangeEventTargetGridList) { if (this.preventFocusChangeEventTargetGridList) {
for (let gridInstance of this.preventFocusChangeEventTargetGridList) { for (var gridInstance of this.preventFocusChangeEventTargetGridList) {
const dataArr = gridInstance.save(); var dataArr = gridInstance.save();
if (dataArr.length > 0) { if (dataArr.length > 0) {
return true; return true;
@ -251,11 +253,9 @@ export default {
this.gridInstance.invoke('check', rowData.rowKey, instance); this.gridInstance.invoke('check', rowData.rowKey, instance);
}, },
setSelectionRange(rowKey) { setSelectionRange(rowKey) {
// console.log("------------------DEBUG-------setSelectionRange:", rowKey);
const rowDatas = this.gridInstance.invoke('getData'); const rowDatas = this.gridInstance.invoke('getData');
rowDatas.forEach(item => { rowDatas.forEach(item => {
if (item.rowKey == rowKey) { if (item.rowKey == rowKey) {
// console.log("------------------DEBUG-------setSelectionRange---item:", item);
this.gridInstance.invoke( this.gridInstance.invoke(
'addRowClassName', 'addRowClassName',
item.rowKey, item.rowKey,
@ -270,12 +270,7 @@ export default {
} }
}); });
}, },
onMousedown(evt) {
// console.log("------------------DEBUG-------onMousedown:", evt);
this.focusChangeEvt(evt);
},
focusChangeEvt(e) { focusChangeEvt(e) {
// console.log("------------------DEBUG-------focusChangeEvt:", e);
// console.log('focusChangeEvt1...') // console.log('focusChangeEvt1...')
if (this.preventFocusChangeEvent(e)) { if (this.preventFocusChangeEvent(e)) {
// console.log('prevent focusChangeEvt') // console.log('prevent focusChangeEvt')
@ -296,7 +291,6 @@ export default {
this.sendSelectedRowData(e.rowKey); this.sendSelectedRowData(e.rowKey);
}, },
startEditing(e) { startEditing(e) {
// console.log("------------------DEBUG-------startEditing:", e);
// console.log('startEditing1...') // console.log('startEditing1...')
if (this.preventFocusChangeEvent(e)) { if (this.preventFocusChangeEvent(e)) {
// console.log('prevent startEditing') // console.log('prevent startEditing')
@ -323,7 +317,6 @@ export default {
} }
}, },
async editingFinish(e) { async editingFinish(e) {
// console.log('------------------DEBUG-------editingFinish:', e);
// console.log("Editing END E::", e); // console.log("Editing END E::", e);
// editor 간 이동시 수정되는 문제 수정 // editor 간 이동시 수정되는 문제 수정
// e.rowEditingFg: grid의 한 row를 한번에 수정할 시 각각의 cell 마다 click 이벤트가 발생하지 않아 this.editorStartKey값이 제대로 입력 되지 않는 경우를 대비하여 만든 Fg // e.rowEditingFg: grid의 한 row를 한번에 수정할 시 각각의 cell 마다 click 이벤트가 발생하지 않아 this.editorStartKey값이 제대로 입력 되지 않는 경우를 대비하여 만든 Fg
@ -673,6 +666,8 @@ export default {
store.dimension.offsetLeft = offsetLeft; store.dimension.offsetLeft = offsetLeft;
}, },
setHeight(_a,height){ setHeight(_a,height){
return; // setting auto height
// console.log("setHeight"); // console.log("setHeight");
var dimension = _a.dimension; var dimension = _a.dimension;
var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth; var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth;
@ -685,7 +680,6 @@ export default {
? this.gridInstance.invoke('getFocusedCell').rowKey ? this.gridInstance.invoke('getFocusedCell').rowKey
: eventRowKey; : eventRowKey;
var rowData = this.gridInstance.invoke('getRow', rowKey); var rowData = this.gridInstance.invoke('getRow', rowKey);
// console.log('------------------DEBUG-------sendSelectedRowData:', {eventRowKey, rowKey});
this.$emit('sendSelectedRowStatInfo', rowData); this.$emit('sendSelectedRowStatInfo', rowData);
} }
}, },
@ -711,6 +705,11 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::v-deep .tui-grid-container { ::v-deep .tui-grid-container {
// .tui-grid-body-area {
// overflow: hidden !important;
// }
.tui-grid-content-area { .tui-grid-content-area {
.tui-grid-cell-content { .tui-grid-cell-content {
input[type='number'] { input[type='number'] {

View File

@ -2,14 +2,12 @@
<v-row class="search-box" align="center" no-gutters> <v-row class="search-box" align="center" no-gutters>
<v-col v-if="label" :cols="labelCols"> <v-col v-if="label" :cols="labelCols">
<label for="" class="search-box-label"> <label for="" class="search-box-label">
<v-icon small color="primary" <v-icon x-small color="primary" class="mr-1">mdi-record-circle</v-icon>
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
>$icoBulletPoint</v-icon>
{{ label }} {{ label }}
</label> </label>
</v-col> </v-col>
<v-col :cols="label ? textCols : ''"> <v-col :cols="label ? textCols : ''">
<div :class="['datepicker-container', customClass]" > <div class="datepicker-container">
<v-text-field <v-text-field
id="startpicker" id="startpicker"
ref="startpicker" ref="startpicker"
@ -19,16 +17,14 @@
readonly readonly
outlined outlined
> >
<template #append > <template #append>
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon> <v-icon size="20">$icoCalendar</v-icon>
</template> </template>
<template #append-outer> <template #append-outer>
<div ref="startpicker-container" id="startpicker-container"></div> <div ref="startpicker-container" id="startpicker-container"></div>
</template> </template>
</v-text-field> </v-text-field>
<div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }"> <div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">~</div>
<img :src="arrowIcon" alt="">
</div>
<v-text-field <v-text-field
v-show="isRange" v-show="isRange"
id="endpicker" id="endpicker"
@ -79,10 +75,6 @@ export default {
require: false, require: false,
default: 8, default: 8,
}, },
customClass: {
type: String,
require: false,
},
}, },
data() { data() {
return { return {
@ -137,12 +129,6 @@ export default {
this.defaultRange === 'no limite' this.defaultRange === 'no limite'
); );
}, },
arrowIcon() {
if(this.isDarkMode){
return require('@/assets/images/arrow_datepicker_dm.png');
}
return require('@/assets/images/arrow_datepicker.png');
}
}, },
watch: { watch: {
myCmCycle() { myCmCycle() {

View File

@ -31,8 +31,8 @@ export default {
this.mode = !this.mode; this.mode = !this.mode;
this.$vuetify.theme.isDark = this.mode; this.$vuetify.theme.isDark = this.mode;
this.setThemeChange(this.mode); this.setThemeChange(this.mode);
// console.log(this.mode) console.log(this.mode)
// console.log(this.$vuetify.theme.isDark) console.log(this.$vuetify.theme.isDark)
}, },
}, },
}; };

View File

@ -16,7 +16,6 @@ export default function getLineChartOption({
const color = item.color || defaultColors[index % defaultColors.length]; const color = item.color || defaultColors[index % defaultColors.length];
return { return {
...item, ...item,
showSymbol: true, // Show symbol at each data point
itemStyle: { itemStyle: {
color, color,
}, },
@ -28,9 +27,9 @@ export default function getLineChartOption({
left: '3%', left: '3%',
right: '5%', right: '5%',
top: '25%', top: '25%',
bottom: '0%',
containLabel: true, containLabel: true,
}, },
legend: { legend: {
// data: legendData, // data: legendData,
icon: 'circle', icon: 'circle',
@ -38,7 +37,7 @@ export default function getLineChartOption({
right: '5%', right: '5%',
orient: 'horizontal', orient: 'horizontal',
textStyle: { textStyle: {
color: isDarkMode ? 'white' : '#676A7B', color: isDarkMode ? '#676A7B' : '#676A7B',
}, },
}, },
xAxis: { xAxis: {

View File

@ -125,7 +125,7 @@ export default {
modifyValue(e) { modifyValue(e) {
let val = e.target.value.replace(/[^-.0-9]/g, ''); let val = e.target.value.replace(/[^-.0-9]/g, '');
// console.log('val : ', val); console.log('val : ', val);
if(this.item.min != undefined && parseFloat(val) < this.item.min){ if(this.item.min != undefined && parseFloat(val) < this.item.min){
val = this.item.min; val = this.item.min;
@ -134,7 +134,7 @@ export default {
if(this.item.max != undefined && parseFloat(val) > this.item.max){ if(this.item.max != undefined && parseFloat(val) > this.item.max){
val = this.item.max; val = this.item.max;
} }
// console.log('val2 : ', val); console.log('val2 : ', val);
this.textValue = val; this.textValue = val;
// this.textValue = this.validateNumber(val); // this.textValue = this.validateNumber(val);

View File

@ -152,12 +152,12 @@ export default {
const snarData = this.searchParam.isMulti const snarData = this.searchParam.isMulti
? this.searchParam.snarInfoList ? this.searchParam.snarInfoList
: this.searchParam.snarInfo; : this.searchParam.snarInfo;
// console.log('this.searchParam.isMulti', this.searchParam.isMulti); console.log('this.searchParam.isMulti', this.searchParam.isMulti);
// console.log( console.log(
// 'this.searchParam.snarInfoList', 'this.searchParam.snarInfoList',
// this.searchParam.snarInfoList, this.searchParam.snarInfoList,
// ); );
// console.log('this.searchParam.snarInfo', this.searchParam.snarInfo); console.log('this.searchParam.snarInfo', this.searchParam.snarInfo);
if (Array.isArray(snarData)) { if (Array.isArray(snarData)) {
if (snarData.length > 0) { if (snarData.length > 0) {
for (const item of snarData) { for (const item of snarData) {

View File

@ -394,7 +394,7 @@ export default {
params: {}, params: {},
}, },
}); });
// console.log('statusCd', statusCd); console.log('statusCd', statusCd);
if (statusCd.data.retnCd == 0) { if (statusCd.data.retnCd == 0) {
const params2 = { const params2 = {
simulationId: statusCd.data.dataset.simulId, simulationId: statusCd.data.dataset.simulId,

View File

@ -22,7 +22,6 @@
<span class="custom-title-4">{{ option.modalTitle }}</span> <span class="custom-title-4">{{ option.modalTitle }}</span>
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button> <a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
</v-card-title> </v-card-title>
<div class="px-6 py-4 pt-0"> <div class="px-6 py-4 pt-0">
<v-row align="center"> <v-row align="center">
<v-col :cols="5"> <v-col :cols="5">
@ -47,10 +46,11 @@
v-model="searchWord" @keyup.enter="search"><template v-slot:append> v-model="searchWord" @keyup.enter="search"><template v-slot:append>
<!-- Custom SVG icon --> <!-- Custom SVG icon -->
<v-icon>$icoSearch</v-icon> <v-icon>$icoSearch</v-icon>
</template></v-text-field> </template></v-text-field>
</v-col> </v-col>
<v-spacer></v-spacer> <v-spacer></v-spacer>
<v-col :cols="3" class="text-right"> <v-col cols="3" class="text-right">
<a-button icon="search" type="primary" @click="search()" <a-button icon="search" type="primary" @click="search()"
class="search-button">조회</a-button> class="search-button">조회</a-button>
<!-- <v-btn :ripple="false" @click="initSearch()"> <!-- <v-btn :ripple="false" @click="initSearch()">
@ -59,32 +59,24 @@
</v-col> </v-col>
</v-row> </v-row>
</v-col> </v-col>
<v-col :cols="12">
<div style="height: 50vh;">
<div ref="modalGridParent" class="h100 py-4">
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId"
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
</div>
</div>
</v-col>
</v-row> </v-row>
</div> </div>
<!-- <div style="height: 50vh;"> <div :style="'height: calc(50vh)'">
<div ref="modalGridParent" class="h100 px-6 py-4"> <div ref="modalGridParent" class="h100 px-6 py-4">
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01" <component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId" :dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId"
@getRowsData="getRowData" @dblClick="setUpdate($event)" /> @getRowsData="getRowData" @dblClick="setUpdate($event)" />
</div> </div>
</div> --> </div>
<v-card-actions class="px-6 py-4 d-flex align-center justify-end"> <v-card-actions class="px-6 py-4 d-flex align-center justify-end">
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button> <a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)"
<a-button v-if="item.closeBtnFg || false" :ripple="false" type="danger" ghost danger class="mr-2">닫기</a-button>
<a-button v-if="item.closeBtnFg || false" :ripple="false" type="danger" ghost danger
@click="deleteBtnAction($event)" class="mr-2">삭제</a-button> @click="deleteBtnAction($event)" class="mr-2">삭제</a-button>
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button> <a-button :ripple="false" type="primary" @click="setUpdate($event)" >확인</a-button>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-dialog> </v-dialog>
@ -156,7 +148,23 @@ export default {
return { return {
dialog: false, dialog: false,
loadGrid: false, loadGrid: true,
dataPathPopExample: {
"rowGrid": {
data: [
{
'calcProc': 'AVG_CNT2',
'argCnt': '2',
'calcDesc': '두개 변수에 대한 평균'
}
],
column: [
{ header: '계산코드', name: 'calcProc', width: 150 },
{ header: '아규먼트갯수', name: 'argCnt', align: 'center', width: 100 },
]
}
},
grid_01: 'grid_01', grid_01: 'grid_01',
myModalKey: 'egrpPysclQtyPop', myModalKey: 'egrpPysclQtyPop',
modalDataKey: 'pyscModalData', modalDataKey: 'pyscModalData',
@ -321,6 +329,13 @@ export default {
this.selectValueList01 = []; this.selectValueList01 = [];
this.selectValue01 = null; this.selectValue01 = null;
} }
// this.selectValueList01 = [
// { label: '냉동기고온', value: '냉동기고온' },
// { label: '냉동기저온', value: '냉동기저온' },
// { label: '공조기', value: '공조기' },
// { label: '보일러', value: '보일러' }
// ];
}, },
search() { search() {
this.getGridData(); this.getGridData();
@ -342,7 +357,7 @@ export default {
modalDataKey: this.modalDataKey, modalDataKey: this.modalDataKey,
value: Object.assign( value: Object.assign(
// Utility.defaultGridOption(this.$refs.modalGridParent.offsetHeight - 60, myOptions), // Utility.defaultGridOption(this.$refs.modalGridParent.offsetHeight - 60, myOptions),
Utility.defaultGridOption(400, myOptions), // Utility.defaultGridOption(100, myOptions),
myOptions, myOptions,
), ),
}); });
@ -400,15 +415,6 @@ export default {
} }
} }
// res = [
// {
// 'pysclQtyId' : 'PYSCL00001',
// 'pysclQtyCd' : 'AMP_1A',
// 'pysclQtyNm' : '회로1 전류A',
// 'pysclQtyTpNm' : 'TAG'
// }
// ]
this.setModalGridData({ this.setModalGridData({
modalKey: this.myModalKey, modalKey: this.myModalKey,
gridKey: this.grid_01, gridKey: this.grid_01,
@ -463,10 +469,10 @@ export default {
this.dialog = flag; this.dialog = flag;
}, },
async dialogOpenCloseEvent(val) { async dialogOpenCloseEvent(val) {
await this.setSelectValueList01(); // await this.setSelectValueList01();
if (!this.myBindingData) { // if (!this.myBindingData) {
return alert('그리드를 먼저 선택해주세요.'); // return alert('그리드를 먼저 선택해주세요.');
} // }
this.dialog = !val; this.dialog = !val;
}, },
deleteBtnAction(v) { deleteBtnAction(v) {

View File

@ -5,7 +5,7 @@
<v-icon <v-icon
v-if="iconShow" v-if="iconShow"
small small
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']" :class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
>$icoBulletPoint</v-icon >$icoBulletPoint</v-icon
> >
{{ option.labelContent }} {{ option.labelContent }}

View File

@ -286,8 +286,8 @@ export default {
// Row selection config // Row selection config
rowSelection: { rowSelection: {
onChange: (selectedRowKeys, selectedRows) => { onChange: (selectedRowKeys, selectedRows) => {
// console.log('Selected Row Keys:', selectedRowKeys); console.log('Selected Row Keys:', selectedRowKeys);
// console.log('Selected Rows:', selectedRows); console.log('Selected Rows:', selectedRows);
}, },
} }
}; };
@ -332,7 +332,7 @@ export default {
// this.getRowGridData(); // this.getRowGridData();
// }, // },
searchFab() { searchFab() {
// console.log('tttttttttttt') console.log('tttttttttttt')
// this.filteredData = this.data.filter(item => { // this.filteredData = this.data.filter(item => {
// const matchGrp = this.eqpmGrpSelected ? item.group === this.eqpmGrpSelected : true; // const matchGrp = this.eqpmGrpSelected ? item.group === this.eqpmGrpSelected : true;
// const matchFab = this.localFabSelected ? item.fab === this.localFabSelected : true; // const matchFab = this.localFabSelected ? item.fab === this.localFabSelected : true;

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
@ -8,11 +8,13 @@
</label> </label>
</v-col> </v-col>
<v-col :cols="option.textCols" class="py-0"> <v-col :cols="option.textCols" class="py-0">
<v-text-field readonly append-icon="" :class="['v-select__custom', customClass]" outlined :hide-details="true" <v-text-field readonly append-icon="" class="v-input__custom" outlined :hide-details="true"
v-model="selectValue" @keyup.enter="typeEnterKey" @click="dialogOpenCloseEvent(dialog)" style="padding: 0;" v-model="searchWord" @keyup.enter="typeEnterKey" @click="dialogOpenCloseEvent(dialog)"
:required="item.required || false"><template v-slot:append> :required="item.required || false"><template v-slot:append>
<!-- Custom SVG icon --> <!-- Custom SVG icon -->
<v-icon>$icoSearch</v-icon> <v-icon>$icoSearch</v-icon>
</template></v-text-field> </template></v-text-field>
</v-col> </v-col>
@ -41,6 +43,8 @@
class="search-button">조회</a-button> class="search-button">조회</a-button>
</v-row> </v-row>
</v-col> </v-col>
</v-row> </v-row>
<!-- <div :style="'height: calc(65vh)'"> --> <!-- <div :style="'height: calc(65vh)'"> -->
<div :style="'height: 600px'" class="px-5"> <div :style="'height: 600px'" class="px-5">

View File

@ -126,7 +126,7 @@ export default {
async chkDialog(val) { async chkDialog(val) {
if (val) { if (val) {
// 열릴 때 // 열릴 때
// console.log('dsfafds'); console.log('dsfafds');
await this.getData(); await this.getData();
// console.log("chkDialog: ", val); // console.log("chkDialog: ", val);
// if(this.searchParam.selecUserList.length > 0){ // if(this.searchParam.selecUserList.length > 0){

View File

@ -22,29 +22,37 @@
outlined outlined
:hide-details="true" :hide-details="true"
> >
<!-- Custom SVG icon -->
<template v-slot:append> <template v-slot:append>
<v-icon>$icoSearch</v-icon> <!-- Custom SVG icon -->
<v-icon>$icoSearch</v-icon>
</template> </template>
</v-text-field> </v-text-field>
</v-col> </v-col>
<v-dialog v-model="dialog" scrollable width="700px"> <v-dialog v-model="dialog" scrollable width="700px">
<v-card style="height: 100%"> <v-card style="height: 100%">
<v-card-title class="px-6 py-4 d-flex align-center justify-space-between"> <v-card-title class="pa-5 d-flex align-center justify-space-between">
<span class="custom-title-4">{{ option.modalTitle }}</span> <span class="custom-title-4">{{ option.modalTitle }}</span>
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button> <v-btn
icon
tile
:ripple="false"
@click="dialogOpenCloseEvent(dialog)"
>
<v-icon>mdi-close</v-icon>
</v-btn>
</v-card-title> </v-card-title>
<div class="pa-5"> <div class="pa-5">
<v-row align="center" no-gutters> <v-row align="center" no-gutters>
<v-col :cols="12"> <v-col :cols="3">
<label for="" class="search-box-label"> <label for="" class="search-box-label">
<!-- <v-icon x-small color="primary" class="mr-1">mdi-record-circle</v-icon> --> <v-icon x-small color="primary" class="mr-1"
<v-icon small :class="['mr-1 icon-blue']">$icoBulletPoint</v-icon> >mdi-record-circle</v-icon
>
검색 검색
</label> </label>
</v-col> </v-col>
<v-col :cols="9"> <v-col :cols="5">
<v-text-field <v-text-field
append-icon="mdi-magnify" append-icon="mdi-magnify"
class="v-input__custom" class="v-input__custom"
@ -55,19 +63,21 @@
></v-text-field> ></v-text-field>
</v-col> </v-col>
<v-spacer></v-spacer> <v-spacer></v-spacer>
<v-col :cols="3" class="text-right"> <v-col cols="4" class="text-right">
<a-button type="primary" @click="search()" icon="search"> <v-btn :ripple="false" @click="search()">
조회 조회
</a-button> </v-btn>
<a-button @click="initSearch()"> <v-btn :ripple="false" @click="initSearch()">
초기화 초기화
</a-button> </v-btn>
</v-col> </v-col>
</v-row> </v-row>
</div> </div>
<!-- <v-divider></v-divider> --> <v-divider></v-divider>
<div style="height: 429px;" class="py-3 px-5"> <!-- <div :style="'height: calc(65vh)'"> -->
<div ref="modalGridParent" class="h100 w100"> <div :style="'height: 429px;'">
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
<div ref="modalGridParent" class="h100 w100 py-3">
<component <component
:is="loadGrid && dialog ? 'Grid' : null" :is="loadGrid && dialog ? 'Grid' : null"
:gridName="grid_01" :gridName="grid_01"
@ -78,9 +88,11 @@
/> />
</div> </div>
</div> </div>
<v-card-actions class="pa-5 d-flex align-center justify-end"> <v-card-actions class="pa-5 d-flex align-center justify-center">
<a-button class="mr-2" @click="dialogOpenCloseEvent(dialog)">닫기</a-button> <v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
<a-button type="primary" @click="setUpdate($event)">확인</a-button> <v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)"
>닫기</v-btn
>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-dialog> </v-dialog>
@ -324,7 +336,7 @@ export default {
})) }))
}; };
// console.log(res); console.log(res);
this.setModalGridData({ this.setModalGridData({
modalKey: this.myModalKey, modalKey: this.myModalKey,
@ -383,31 +395,7 @@ var FtnPlcFormPop = {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
// @each $theme in dark, light {
// @include theme($theme);
// .v-application.#{$theme}-mode {
// .v-input--is-readonly {
// border-color: map-deep-get($config,
// #{$theme},
// "v-input-readonly-border-color"
// );
// ::v-deep {
// &:not(.v-input--radio-group, .v-input--checkbox) {
// .v-input__slot {
// background-color: map-deep-get($config,
// #{$theme},
// "v-input-backgroundColor"
// ) !important;
// }
// }
// }
// }
// }
// }
::v-deep { ::v-deep {
.v-dialog { .v-dialog {
overflow-y: hidden !important; overflow-y: hidden !important;
} }
@ -430,4 +418,26 @@ var FtnPlcFormPop = {
} }
} }
@each $theme in dark, light {
.v-application.#{$theme}-mode {
.v-dialog {
.v-card {
&__title {
color: map-deep-get($color, 'white', '0');
@if $theme == dark {
background-color: #2d3355;
.v-btn {
background-color: #2d3355;
}
} @else {
background-color: #3f4d7d;
.v-btn {
background-color: #3f4d7d;
}
}
}
}
}
}
}
</style> </style>

View File

@ -294,10 +294,10 @@ export default {
if (this.searchParam.energyCd < 0) { if (this.searchParam.energyCd < 0) {
roiIdVal = null; roiIdVal = null;
} else { } else {
// console.log( console.log(
// 'this.searchParam.energyList[this.searchParam.energyCd]', 'this.searchParam.energyList[this.searchParam.energyCd]',
// this.searchParam.energyList[this.searchParam.energyCd], this.searchParam.energyList[this.searchParam.energyCd],
// ); );
roiIdVal = this.searchParam.energyList[this.searchParam.energyCd + 1] roiIdVal = this.searchParam.energyList[this.searchParam.energyCd + 1]
.cd; .cd;
} }

View File

@ -239,13 +239,13 @@ export default {
this.selectedData.eccNm = ''; this.selectedData.eccNm = '';
if (this.bindOption === null) { if (this.bindOption === null) {
// console.log('this.bindOption is null...'); console.log('this.bindOption is null...');
this.setPageData({ this.setPageData({
modalEccId: '', modalEccId: '',
modalEccNm: '', modalEccNm: '',
}); });
} else { } else {
// console.log('this.bindOption is not null...'); console.log('this.bindOption is not null...');
this.setPageData({ this.setPageData({
[this.bindOption.eccId]: '', [this.bindOption.eccId]: '',
[this.bindOption.eccNm]: '', [this.bindOption.eccNm]: '',
@ -296,12 +296,12 @@ export default {
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm') ? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
: '', : '',
}); });
// console.log( console.log(
// 'localStorage.getItem(this.parentPrgmId + "ModalEccNm") : ', 'localStorage.getItem(this.parentPrgmId + "ModalEccNm") : ',
// localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
// ? localStorage.getItem(this.parentPrgmId + 'ModalEccNm') ? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
// : '', : '',
// ); );
this.textFieldData = this.textFieldData =
localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm') ? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')

View File

@ -43,10 +43,7 @@
</v-col> </v-col>
<v-col :cols="6" class="py-0 pl-2"> <v-col :cols="6" class="py-0 pl-2">
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> --> <!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
<component :parentPrgmId="parentPrgmId" :is="'SelectBoxTime'" ref="SelectBox1" <div class="startpicker-container2">
:propsValue="selectTimeValue1" :itemList="selectTimeValueList1" :minInterval="selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
" @update:propsValue="selectTimeValue1 = $event" />
<!-- <div class="startpicker-container2">
<v-text-field id="startpicker2" ref="startpicker2" v-model="strtDt" <v-text-field id="startpicker2" ref="startpicker2" v-model="strtDt"
:class="'v-input__custom'" :hide-details="true" readonly outlined> :class="'v-input__custom'" :hide-details="true" readonly outlined>
<template #append> <template #append>
@ -56,7 +53,7 @@
<div ref="startpicker-container2" id="startpicker-container2"></div> <div ref="startpicker-container2" id="startpicker-container2"></div>
</template> </template>
</v-text-field> </v-text-field>
</div> --> </div>
</v-col> </v-col>
<!-- <v-col :cols="2"> <!-- <v-col :cols="2">
<vue-numeric-input v-model="strtHh" :min="0" :max="23" controls-type="updown" <vue-numeric-input v-model="strtHh" :min="0" :max="23" controls-type="updown"
@ -94,9 +91,17 @@
</div> </div>
</v-col> </v-col>
<v-col :cols="6" class="pl-2"> <v-col :cols="6" class="pl-2">
<component :parentPrgmId="parentPrgmId" :is="'SelectBoxTime'" ref="SelectBox2" <div class="startpicker-container3">
:propsValue="selectTimeValue2" :itemList="selectTimeValueList2" :minInterval="selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1 <v-text-field id="startpicker3" ref="startpicker3" v-model="endDt"
" @update:propsValue="selectTimeValue2 = $event" /> :class="'v-input__custom'" :hide-details="true" readonly outlined>
<template #append>
<v-icon size="20">$icoCalendar</v-icon>
</template>
<template #append-outer>
<div ref="startpicker-container3" id="startpicker-container3"></div>
</template>
</v-text-field>
</div>
</v-col> </v-col>
<!-- <v-col :cols="2"> <!-- <v-col :cols="2">
<vue-numeric-input v-model="endHh" :min="0" :max="23" controls-type="updown" <vue-numeric-input v-model="endHh" :min="0" :max="23" controls-type="updown"
@ -181,11 +186,10 @@
</div> </div>
</template> </template>
<v-card-actions class="justify-end"> <v-card-actions class="justify-end">
<a-button :ripple="false" @click="btnAction('close')" class="mr-2">닫기</a-button> <a-button :ripple="false" @click="btnAction('save')" class="mr-2">저장</a-button>
<a-button type="primary" :ripple="false" @click="btnAction('save')" class="mr-2">저장</a-button>
<a-button v-show="popUpAction === 'update'" type="danger" ghost danger :ripple="false" <a-button v-show="popUpAction === 'update'" type="danger" ghost danger :ripple="false"
@click="btnAction('delete')">삭제</a-button> @click="btnAction('delete')" class="mr-2">삭제</a-button>
<a-button :ripple="false" type="primary" @click="btnAction('close')" class="mr-2">닫기</a-button>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-dialog> </v-dialog>
@ -206,7 +210,6 @@ import DatePicker from '~/components/common/Datepicker';
import mixinGlobal from '@/mixin/global.js'; import mixinGlobal from '@/mixin/global.js';
import Utility from '~/plugins/utility'; import Utility from '~/plugins/utility';
import TuiDatepicker from 'tui-date-picker'; import TuiDatepicker from 'tui-date-picker';
import SelectBoxTime from "@/components/common/select/SelectBoxTime";
export default { export default {
mixins: [mixinGlobal], mixins: [mixinGlobal],
@ -234,13 +237,6 @@ export default {
type: String, type: String,
require: false, require: false,
}, },
selectBoxTimeItemList: {
type: Object,
require: false,
default: () => {
return {};
},
},
}, },
components: { components: {
InputText, InputText,
@ -254,7 +250,6 @@ export default {
Utility, Utility,
TuiDatepicker, TuiDatepicker,
VueNumericInput, VueNumericInput,
SelectBoxTime,
}, },
data() { data() {
return { return {
@ -277,23 +272,7 @@ export default {
planSeq: '', planSeq: '',
blocId: '', blocId: '',
addPlanData: { addPlanData: {
}, }
selectTimeValue1:
this.selectBoxTimeItemList.selectTimeValue1 != undefined
? this.selectBoxTimeItemList.selectTimeValue1
: null, // selectBoxTime에 필요한 prop
selectTimeValueList1:
this.selectBoxTimeItemList.selectTimeValueList1 != undefined
? this.selectBoxTimeItemList.selectTimeValueList1
: [], // selectBoxTime에 필요한 prop
selectTimeValue2:
this.selectBoxTimeItemList.selectTimeValue2 != undefined
? this.selectBoxTimeItemList.selectTimeValue2
: null, // selectBoxTime에 필요한 prop
selectTimeValueList2:
this.selectBoxTimeItemList.selectTimeValueList2 != undefined
? this.selectBoxTimeItemList.selectTimeValueList2
: [], // selectBoxTime에 필요한 prop
}; };
}, },
computed: { computed: {
@ -317,29 +296,25 @@ export default {
} }
}, },
strtDt(val) { strtDt(val) {
// console.log('strtDt : ', val); console.log('strtDt : ', val);
this.checkStrtAndEndDateTime('start'); this.checkStrtAndEndDateTime('start');
if (this.startDatepickerInstance3) { if (this.startDatepickerInstance3) {
this.startDatepickerInstance3.setDate(new Date(this.endDt)); this.startDatepickerInstance3.setDate(new Date(this.endDt));
} }
}, },
endDt(val) { endDt(val) {
// console.log('endDt : ', val); console.log('endDt : ', val);
this.checkStrtAndEndDateTime('end'); this.checkStrtAndEndDateTime('end');
if (this.startDatepickerInstance) { if (this.startDatepickerInstance) {
this.startDatepickerInstance.setDate(new Date(this.strtDt)); this.startDatepickerInstance.setDate(new Date(this.strtDt));
} }
}, },
strtHh(val) { strtHh(val) {
// const [hh, mm] = selectTimeValue1.split(':');
// console.log(`Hours: ${hh}, Minutes: ${mm}`);
console.log('strtHh : ', val); console.log('strtHh : ', val);
this.checkStrtAndEndDateTime('start'); this.checkStrtAndEndDateTime('start');
}, },
endHh(val) { endHh(val) {
// console.log('endHh : ', val); console.log('endHh : ', val);
this.checkStrtAndEndDateTime('end'); this.checkStrtAndEndDateTime('end');
}, },
strtMm(val) { strtMm(val) {
@ -348,12 +323,6 @@ export default {
endMm(val) { endMm(val) {
this.checkStrtAndEndDateTime('end'); this.checkStrtAndEndDateTime('end');
}, },
selectTimeValue1(val) {
this.setPageData({ selectTimeValue1: val });
},
selectTimeValue2(val) {
this.setPageData({ selectTimeValue2: val });
}
}, },
methods: { methods: {
...mapMutations({ ...mapMutations({
@ -536,8 +505,10 @@ export default {
let returnData = res[0]; let returnData = res[0];
this.strtDt = Utility.setFormatDate(returnData.strtDt, 'YYYY-MM-DD'); this.strtDt = Utility.setFormatDate(returnData.strtDt, 'YYYY-MM-DD');
this.endDt = Utility.setFormatDate(returnData.endDt, 'YYYY-MM-DD'); this.endDt = Utility.setFormatDate(returnData.endDt, 'YYYY-MM-DD');
this.selectTimeValue1 = returnData.strtHh+' : '+ returnData.strtMm; this.strtHh = returnData.strtHh;
this.selectTimeValue2 = returnData.endHh+' : '+ returnData.endMm; this.strtMm = returnData.strtMm;
this.endHh = returnData.endHh;
this.endMm = returnData.endMm;
this.planTitle = returnData.planTitle; this.planTitle = returnData.planTitle;
this.planCntn = returnData.planCntn; this.planCntn = returnData.planCntn;
this.planColor = returnData.planColor; this.planColor = returnData.planColor;
@ -554,8 +525,10 @@ export default {
if ( if (
this.strtDt === '' || this.strtDt === '' ||
this.endDt === '' || this.endDt === '' ||
this.selectTimeValue1 === '' || this.strtHh === '' ||
this.selectTimeValue2 === '' || this.strtMm === '' ||
this.endHh === '' ||
this.endMm === '' ||
this.planTitle === '' || this.planTitle === '' ||
this.planCntn === '' || this.planCntn === '' ||
this.planColor === '' this.planColor === ''
@ -569,8 +542,10 @@ export default {
if ( if (
this.strtDt == '' || this.strtDt == '' ||
this.endDt == '' || this.endDt == '' ||
this.selectTimeValue1 === '' || this.strtHh == '' ||
this.selectTimeValue2 === '' || this.strtMm == '' ||
this.endHh == '' ||
this.endMm == '' ||
this.planTitle == '' || this.planTitle == '' ||
this.planCntn == '' || this.planCntn == '' ||
this.planColor == '' this.planColor == ''
@ -590,17 +565,13 @@ export default {
//console.log(this); //console.log(this);
}, },
async insertDetail() { async insertDetail() {
const [strtHh, strtMm] = this.selectTimeValue1 ? this.selectTimeValue1.split(':') : '00:00'.split(':');
const [endHh, endMm] = this.selectTimeValue2 ? this.selectTimeValue2.split(':') : '01:00'.split(':');
var params = { var params = {
strtDt: this.strtDt, strtDt: this.strtDt,
endDt: this.endDt, endDt: this.endDt,
strtHh: strtHh.trim().toString(), strtHh: this.strtHh.toString(),
strtMm: strtMm.trim().toString(), strtMm: this.strtMm.toString(),
endHh: endHh.trim().toString(), endHh: this.endHh.toString(),
endMm: endMm.trim().toString(), endMm: this.endMm.toString(),
blocId: this.blocId, blocId: this.blocId,
planTitle: this.planTitle, planTitle: this.planTitle,
planCntn: this.planCntn, planCntn: this.planCntn,
@ -621,16 +592,13 @@ export default {
}); });
}, },
async updateDetail() { async updateDetail() {
const [strtHh, strtMm] = this.selectTimeValue1 ? this.selectTimeValue1.split(':') : '00:00'.split(':');
const [endHh, endMm] = this.selectTimeValue2 ? this.selectTimeValue2.split(':') : '01:00'.split(':');
var params = { var params = {
strtDt: this.strtDt.substr(0, 10), strtDt: this.strtDt.substr(0, 10),
endDt: this.endDt.substr(0, 10), endDt: this.endDt.substr(0, 10),
strtHh: strtHh.trim().toString(), strtHh: this.strtHh.toString(),
strtMm: strtMm.trim().toString(), strtMm: this.strtMm.toString(),
endHh: endHh.trim().toString(), endHh: this.endHh.toString(),
endMm: endMm.trim().toString(), endMm: this.endMm.toString(),
planTitle: this.planTitle, planTitle: this.planTitle,
planCntn: this.planCntn, planCntn: this.planCntn,
planColor: this.planColor, planColor: this.planColor,

View File

@ -253,7 +253,7 @@ export default {
readObjid: this.searchParam.energyCd, readObjid: this.searchParam.energyCd,
}, },
}); });
// console.log('getTreeData : ', res); console.log('getTreeData : ', res);
// this.treeData = res; // this.treeData = res;
// const ROOT = res[0].plcCd; // const ROOT = res[0].plcCd;
const setTreeData = await this.setTree({ const setTreeData = await this.setTree({
@ -327,7 +327,7 @@ export default {
// 공정/설비 트리 row 클릭이벤트 // 공정/설비 트리 row 클릭이벤트
async getRowData(data) { async getRowData(data) {
// console.log("getRowData 시작..."); // console.log("getRowData 시작...");
// console.log('data', data); console.log('data', data);
this.activeRowData = data; this.activeRowData = data;
// if(data.enableFg == 1){ // if(data.enableFg == 1){
// this.activeRowData = data; // this.activeRowData = data;

View File

@ -268,7 +268,7 @@ export default {
header: '', header: '',
name: '', name: '',
align: 'center', align: 'center',
width: 20, width: 50,
formatter: (props) => { formatter: (props) => {
return `<label class="custom-radio"> return `<label class="custom-radio">
<span class="radio-mark"></span> <span class="radio-mark"></span>
@ -278,10 +278,10 @@ export default {
{ {
header: '검침개소명', header: '검침개소명',
name: 'readPlcNm', name: 'readPlcNm',
width: 500, width: 300,
align: 'left', align: 'left',
}, },
{ header: '검침개소', name: 'name', align: 'left', width: 200 }, { header: '검침개소', name: 'name', align: 'center' },
], ],
}); });
}, },
@ -307,9 +307,6 @@ export default {
// console.log("treeData", res) // console.log("treeData", res)
let myOptionsTree = { let myOptionsTree = {
columnOptions: {
resizable: true,
},
treeColumnOptions: { treeColumnOptions: {
name: 'readPlcNm', name: 'readPlcNm',
}, },

View File

@ -22,11 +22,11 @@
outlined outlined
:menu-props="{ auto: true, offsetY: true }" :menu-props="{ auto: true, offsetY: true }"
:hide-details="true" :hide-details="true"
:class="'v-select__custom'" :class="'v-select__custom select-large'"
:disabled="disabled" :disabled="disabled"
:readonly="readonly" :readonly="readonly"
@click="setDatepickerHide" @click="setDatepickerHide"
style="min-width: 170px;" style="width: 170px; border-radius: 6px !important"
> >
<template v-slot:append> <template v-slot:append>
<a-icon <a-icon

View File

@ -70,7 +70,7 @@ export default {
return this.searchParam[this.parentPrgmId][this.enrgCd]; return this.searchParam[this.parentPrgmId][this.enrgCd];
}, },
set(value) { set(value) {
// console.log('value : ', value); console.log('value : ', value);
return this.setPageData({ [this.enrgCd]: value }); return this.setPageData({ [this.enrgCd]: value });
}, },
}, },

View File

@ -270,8 +270,8 @@ export default {
filteredData: [], filteredData: [],
rowSelection: { rowSelection: {
onChange: (selectedRowKeys, selectedRows) => { onChange: (selectedRowKeys, selectedRows) => {
// console.log('Selected Row Keys:', selectedRowKeys); console.log('Selected Row Keys:', selectedRowKeys);
// console.log('Selected Rows:', selectedRows); console.log('Selected Rows:', selectedRows);
}, },
} }
}; };

View File

@ -213,7 +213,7 @@ export default {
let dataArr = []; let dataArr = [];
switch (action) { switch (action) {
case 'add': case 'add':
// console.log('add this.pageData : '); // , this.pageData); console.log('add this.pageData : '); // , this.pageData);
const defaultRow = { const defaultRow = {
dataSetId: this.pageData.dataSetId, dataSetId: this.pageData.dataSetId,
dataSetNm: this.pageData.dataSetNm, dataSetNm: this.pageData.dataSetNm,
@ -296,7 +296,7 @@ export default {
comId: this.selectedComId, comId: this.selectedComId,
dataSetId: this.selectedDataSetId, dataSetId: this.selectedDataSetId,
}; };
// console.log('data : ', data); console.log('data : ', data);
this.$emit('jamoviClickEvent', 'view1', data); this.$emit('jamoviClickEvent', 'view1', data);
}, },
}, },

View File

@ -20,6 +20,7 @@
:editorGrid="true" :editorGrid="true"
:innerTabGridInfo="innerTabGridInfo" :innerTabGridInfo="innerTabGridInfo"
@getRowsData="getRowData" @getRowsData="getRowData"
:dataPath="dataPathMock"
/> />
</div> </div>
</div> </div>
@ -53,10 +54,22 @@ export default {
}, },
data() { data() {
return { return {
loadGrid: false, loadGrid: true,
gridName: 'rowDetailGrid', gridName: 'rowDetailGrid',
rowKey: null, rowKey: null,
edtingFinishFlag: 'Y', edtingFinishFlag: 'Y',
dataPathMock: {
"rowDetailGrid": {
column: [
{ header: '추가 정보', name: 'readObjId', align: 'left' },
{ header: 'Data 구분', name: 'readObjNm', align: 'left' },
{ header: '추가 정보 값', name: 'readObjKind', align: 'left' },
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {}
}
},
}; };
}, },
computed: { computed: {
@ -431,4 +444,22 @@ export default {
}, },
}, },
}; };
const dataPathDataExample = [
{
readObjId: 'OBJ001',
readObjNm: '서울 본사',
readObjKind: 'TYPE01',
},
{
readObjId: 'OBJ002',
readObjNm: '부산 지사',
readObjKind: 'TYPE02',
},
{
readObjId: 'OBJ003',
readObjNm: '대전 공장',
readObjKind: 'TYPE03',
}
]
</script> </script>

View File

@ -19,6 +19,7 @@
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
@getRowsData="getRowData" @getRowsData="getRowData"
:innerTabGridInfo="innerTabGridInfo" :innerTabGridInfo="innerTabGridInfo"
:dataPath="dataPathMock"
/> />
</div> </div>
<div> <div>
@ -59,11 +60,24 @@ export default {
}, },
data() { data() {
return { return {
loadGrid: false, loadGrid: true,
gridName: 'rowEccIaoGrid', gridName: 'rowEccIaoGrid',
inputList_emMapDiv: [], inputList_emMapDiv: [],
inputList_cmInOut: [], inputList_cmInOut: [],
detailList: myDetail, detailList: myDetail,
dataPathMock: {
"rowEccIaoGrid": {
column: [
{ header: '검침 대상 ID', name: 'readObjId', align: 'left' },
{ header: '검침 대상 명', name: 'readObjNm', align: 'left' },
{ header: '검침 대상 유형', name: 'readObjKind', align: 'left' },
{ header: '그룹', name: 'grpCd', align: 'left' },
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {}
}
},
}; };
}, },
computed: { computed: {
@ -502,4 +516,12 @@ const myDetail = [
iconShow: true, iconShow: true,
}, },
]; ];
const dataPathDataExample = [
{
readObjId: 'OBJ001',
readObjNm: '서울 본사',
readObjKind: 'TYPE01',
grpCd: 'GRP01',
},
]
</script> </script>

View File

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

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center my-5" > <div class="d-flex justify-space-between align-center" style="height: 80px;">
<span class="txt custom-subtitle-tab">설비 상수 정보</span> <span class="txt custom-title-4-new">설비 상수 정보</span>
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" /> <Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
</div> </div>
<div ref="gridParent" style="min-height: calc(100vh - 800px);"> <div ref="gridParent" style="min-height: calc(100vh - 800px);">
@ -291,8 +291,8 @@ export default {
dataArr.map(item => { dataArr.map(item => {
for (var key of Object.keys(item)) { for (var key of Object.keys(item)) {
// console.log('key : ', key); console.log('key : ', key);
// console.log('item[key] : ', item[key]); console.log('item[key] : ', item[key]);
if (!item[key] && requiredKeyList.includes(key)) { if (!item[key] && requiredKeyList.includes(key)) {
validCheck = false; validCheck = false;
} }

View File

@ -1,24 +1,27 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center my-5" > <div
<span class="txt custom-subtitle-tab">설비 입출력 정보</span> class="d-flex justify-space-between align-center"
style="height: 80px;"
>
<span class="txt custom-title-4-new">설비 입출력 정보</span>
<Buttons <Buttons
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:bindingData="gridName" :bindingData="gridName"
:btnActionsFnc="btnActions" :btnActionsFnc="btnActions"
/> />
</div> </div>
<div ref="gridParent" style="height: calc(100vh - 800px);"> <div ref="gridParent" style="min-height: calc(100vh - 800px);" >
<!-- :is="loadGrid ? 'Grid' : null" -->
<Grid <Grid
:ref="gridName" :ref="gridName"
:is="loadGrid ? 'Grid' : null"
:gridName="gridName" :gridName="gridName"
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
@getRowsData="getRowData" @getRowsData="getRowData"
:innerTabGridInfo="innerTabGridInfo" :innerTabGridInfo="innerTabGridInfo"
/> />
</div> </div>
<div style="min-height: calc(100vh - 900px);"> <div style="min-height: calc(100vh - 900px);" class="mt-4">
<component <component
:is="'Form'" :is="'Form'"
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
@ -62,6 +65,22 @@ export default {
inputList_emMapDiv: [], inputList_emMapDiv: [],
inputList_cmInOut: [], inputList_cmInOut: [],
dataPathMock: {
'rowEqpmIaoGrid' : {
column: [
{ header: '대상항목', name: 'id', headerAlign: 'left' },
{ header: '에너지원 명', name: 'lable', headerAlign: 'left' },
{ header: '대상 유형', name: 'type', headerAlign: 'left' },
{ header: '물리량', name: 'note', headerAlign: 'left' },
{ header: '계산여부', name: 'field1', headerAlign: 'left' },
{ header: '분배율', name: 'field2', headerAlign: 'left' }
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {}
}
},
}; };
}, },
computed: { computed: {
@ -108,18 +127,18 @@ export default {
}, },
watch: { watch: {
selectedObjId(val) { selectedObjId(val) {
// console.log('selectedObjId : ', val); console.log('selectedObjId : ', val);
if (val === 'TAG') { if (val === 'TAG') {
this.detailList[2].class = 'py-3 d-none'; this.detailList[2].class = 'py-2 d-none';
this.detailList[3].class = 'py-3 pl-4 pt-1 d-none'; this.detailList[3].class = 'py-2 d-none';
this.detailList[4].class = 'py-3'; this.detailList[4].class = 'py-2';
this.detailList[5].class = 'py-3'; this.detailList[5].class = 'py-2';
} else { } else {
// }else if(val==="READ_PLC"){ // }else if(val==="READ_PLC"){
this.detailList[5].class = 'py-3 d-none'; this.detailList[5].class = 'py-2 d-none';
this.detailList[4].class = 'py-3 d-none'; this.detailList[4].class = 'py-2 d-none';
this.detailList[3].class = 'py-3 pl-4 pt-1'; this.detailList[3].class = 'py-2';
this.detailList[2].class = 'py-3'; this.detailList[2].class = 'py-2';
} }
}, },
selectedCalcFg(val) { selectedCalcFg(val) {
@ -152,7 +171,7 @@ export default {
}, },
}, },
mounted() { mounted() {
this.init(); // this.init();
}, },
methods: { methods: {
...mapMutations({ ...mapMutations({
@ -277,7 +296,9 @@ export default {
value: myColumns, value: myColumns,
}); });
this.loadGrid = true; this.$nextTick(() => {
this.loadGrid = true;
});
}, },
async getRowData(data, gridName) { async getRowData(data, gridName) {
if (data.rowStat === 'I') { if (data.rowStat === 'I') {
@ -335,7 +356,7 @@ export default {
} }
if (dataArr.length > 0) { if (dataArr.length > 0) {
// console.log('dataArr : ', dataArr); console.log('dataArr : ', dataArr);
var requiredKeyList = this.detailList var requiredKeyList = this.detailList
.filter(item => { .filter(item => {
@ -396,7 +417,6 @@ export default {
}, },
}; };
function checkDuplicate(data, targetKey) { function checkDuplicate(data, targetKey) {
var duplicateFlag = false; var duplicateFlag = false;
var set = new Set(); var set = new Set();
@ -467,7 +487,7 @@ const myEqpmIaoDetail = [
}, },
{ {
type: 'EvtObjPop', type: 'EvtObjPop',
labelContent: '대상 항목', labelContent: '대상 항목 111',
valueNm: 'objId', valueNm: 'objId',
valueNm2: 'objNm', valueNm2: 'objNm',
bindNm: 'objNm', bindNm: 'objNm',
@ -482,7 +502,7 @@ const myEqpmIaoDetail = [
}, },
{ {
type: 'InputText', type: 'InputText',
cols: 6, cols: 5,
class: 'py-3 d-none', class: 'py-3 d-none',
valueNm: 'objNm', valueNm: 'objNm',
readonly: true, readonly: true,
@ -595,4 +615,13 @@ const myEqpmIaoDetail = [
iconShow: true iconShow: true
}, },
]; ];
import { getPathDataExample } from '@/const/const'
const dataPathDataExample = getPathDataExample({
id: 'INCHEON.HVAC.EQP_HT_CH001.UT_CH101.CHI_AMP_1A_PV',
lable: 'INCHEON 고온 냉동기 101호기 - 호로1',
type: '사용', note: '-',
field1: '1111',
field2: '2222',
});
</script> </script>

View File

@ -6,23 +6,12 @@
:btnActionsFnc="btnActions" /> :btnActionsFnc="btnActions" />
</div> </div>
<div ref="gridParent" style="height: calc((100vh - 520px) /2);"> <div ref="gridParent" style="height: calc((100vh - 520px) /2);">
<Grid <Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
:ref="gridName" :innerTabGridInfo="innerTabGridInfo" />
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="parentPrgmId"
@getRowsData="getRowData"
:innerTabGridInfo="innerTabGridInfo"
/>
</div> </div>
<div ref="formParent" style="height: calc((100vh - 400px) /2);"> <div class="mt-3" ref="formParent" style="height: calc((100vh - 400px) /2);">
<component <component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
:is="'Form'" :detailList="detailReadPlcTagList" @gridEditingFinish="gridEditingFinish" />
:parentPrgmId="parentPrgmId"
:bindingData="gridName"
:detailList="detailReadPlcTagList"
@gridEditingFinish="gridEditingFinish"
/>
</div> </div>
</div> </div>
</template> </template>
@ -110,9 +99,9 @@ export default {
// bodyHeight: gridHeight, // bodyHeight: gridHeight,
// minBodyHeight: gridHeight, // minBodyHeight: gridHeight,
header: { header: {
height: 37, height: 28,
}, },
rowHeight: 37, rowHeight: 29,
minRowHeight: 29, minRowHeight: 29,
selectionUnit: 'row', selectionUnit: 'row',
editingEvent: 'click', editingEvent: 'click',

View File

@ -1,7 +1,7 @@
<template> <template>
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title class="d-flex justify-space-between align-end"> <v-card-title class="d-flex justify-space-between align-end">
<span style="color:#000000A6" class="tit custom-title-4-new">TAG 추가 정보</span> <span class="tit ft-size_20 ft-weight_600">TAG 추가 정보</span>
<Buttons <Buttons
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:bindingData="gridName" :bindingData="gridName"
@ -107,7 +107,8 @@ export default {
header: { header: {
height: 38, height: 38,
}, },
rowHeight: 22,
minRowHeight: 22,
selectionUnit: 'row', selectionUnit: 'row',
editingEvent: 'click', editingEvent: 'click',
}; };
@ -268,7 +269,7 @@ export default {
{ {
header: 'Data 구분', header: 'Data 구분',
name: 'addInfoDataKind', name: 'addInfoDataKind',
align: 'left', align: 'center',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
const newValue = addInfoDataKindList.filter( const newValue = addInfoDataKindList.filter(

View File

@ -131,8 +131,8 @@
$depth3rdBulletDark $depth3rdBulletDark
</v-icon> </v-icon>
<span v-if="item.url">{{ item.menuNm }} <span v-if="item.url">{{ item.menuNm }}
<!-- <span v-if="item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star</span> <span v-if="item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star</span>
<span v-else-if="!item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star_border</span> --> <span v-else-if="!item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star_border</span>
</span> </span>
<span v-else-if="!item.url">{{ item.menuNm }}</span> <span v-else-if="!item.url">{{ item.menuNm }}</span>
<v-icon v-if="item.lvl >= 1 && item.childeVo && item.childeVo.length > 0 && !item.url"> <v-icon v-if="item.lvl >= 1 && item.childeVo && item.childeVo.length > 0 && !item.url">
@ -392,6 +392,7 @@ export default {
deep: true, deep: true,
handler(value) { handler(value) {
if (value) { if (value) {
console.log(value)
const prgmId = value.prgmId; const prgmId = value.prgmId;
let thisPrgmId = this.$route.query.prgmId; let thisPrgmId = this.$route.query.prgmId;
var tmp = 0; var tmp = 0;

View File

@ -1,7 +1,6 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<common-page-title /> <v-row ref="searchFilter">
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
@ -35,7 +34,7 @@
<div class="h100 px-4" style="height:calc(100% - 70px)"> <div class="h100 px-4" style="height:calc(100% - 70px)">
<div ref="treeGridParent" class="w100 h100"> <div ref="treeGridParent" class="w100 h100">
<component :ref="gridName + myPrgmId" :is="loadTree ? 'Grid' : null" :gridName="gridName" <component :ref="gridName + myPrgmId" :is="loadTree ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData" /> :parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
</div> </div>
</div> </div>
</v-card> </v-card>
@ -92,9 +91,21 @@ export default {
return { return {
myPrgmId: myPrgmId, myPrgmId: myPrgmId,
gridName: 'treeGrid', gridName: 'treeGrid',
loadTree: false, loadTree: true,
detailList: myDetail, detailList: myDetail,
addRowFg: false, addRowFg: false,
dataPathExample: {
"treeGrid": {
data: sampleData,
column: [
{ header: '메뉴명', name: 'menuNm' },
{ header: 'prgmId ', name: 'prgmId', hidden: true },
{ header: 'sysDivCd ', name: 'sysDivCd', hidden: true },
],
option: myOptions,
}
}
}; };
}, },
computed: { computed: {
@ -151,17 +162,10 @@ export default {
gridInit() { gridInit() {
const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 30; const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 30;
const myOptionsTree = { const myOptionsTree = {
columnOptions: {
resizable: true,
},
treeColumnOptions: { treeColumnOptions: {
name: 'menuNm', name: 'menuNm',
}, },
scrollX: false, scrollX: false,
header: {
height: 37,
},
rowHeight: 37,
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,
@ -174,17 +178,6 @@ export default {
this.setGridColumn({ this.setGridColumn({
gridKey: this.gridName, gridKey: this.gridName,
value: [ value: [
{
header: '',
name: '',
align: 'center',
width: 20,
formatter: (props) => {
return `<label class="custom-radio">
<span class="radio-mark"></span>
</label>`;
}
},
{ header: '메뉴명', name: 'menuNm' }, { header: '메뉴명', name: 'menuNm' },
{ header: 'prgmId ', name: 'prgmId', hidden: true }, { header: 'prgmId ', name: 'prgmId', hidden: true },
{ header: 'sysDivCd ', name: 'sysDivCd', hidden: true }, { header: 'sysDivCd ', name: 'sysDivCd', hidden: true },

View File

@ -36,14 +36,19 @@
<v-card-title> <v-card-title>
<span class="custom-title-4">역할 리스트</span> <span class="custom-title-4">역할 리스트</span>
</v-card-title> </v-card-title>
<div ref="gridParent" class="px-5" style="height: 60vh;"> <div class="px-5" style="height:calc(100% - 100px)">
<component <div
:is="loadGrid ? 'Grid' : null" ref="gridParent"
:ref="gridName + myPrgmId" class="w100 h100"
:gridName="gridName" >
:parentPrgmId="myPrgmId" <component
@getRowsData="getRowData" :is="loadGrid ? 'Grid' : null"
/> :ref="gridName + myPrgmId"
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
/>
</div>
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
@ -64,19 +69,19 @@
:style="{ minHeight: '36px' }" :style="{ minHeight: '36px' }"
>[미배정]메뉴리스트</span >[미배정]메뉴리스트</span
> >
<div ref="treeGridParent" class="px-0 mt-2" style="height: 60vh;"> <div class="px-0 mt-2" style="height:calc(100% - 64px)">
<!-- <div <div
ref="treeGridParent" ref="treeGridParent"
class="w100 h100" class="w100 h100"
> >
</div> --> <component
<component :is="loadTreeGrid ? 'Grid' : null"
:is="loadTreeGrid ? 'Grid' : null" :ref="gridName2 + myPrgmId"
:ref="gridName2 + myPrgmId" :gridName="gridName2"
:gridName="gridName2" :parentPrgmId="myPrgmId"
:parentPrgmId="myPrgmId" @getRowsData="getUnAsgnRowData"
@getRowsData="getUnAsgnRowData" />
/> </div>
</div> </div>
</v-col> </v-col>
<v-col :cols="1"> <v-col :cols="1">
@ -107,20 +112,20 @@
/> />
</v-col> </v-col>
</v-row> </v-row>
<div ref="treeGridParent2" class="px-0 mt-2" style="height: 60vh;"> <div class="px-0 mt-2" style="height:calc(100% - 64px)">
<!-- <div <div
ref="treeGridParent2" ref="treeGridParent2"
class="w100 h100" class="w100 h100"
> >
</div> --> <component
<component :is="loadTreeGrid2 ? 'Grid' : null"
:is="loadTreeGrid2 ? 'Grid' : null" :ref="gridName3 + myPrgmId"
:ref="gridName3 + myPrgmId" :gridName="gridName3"
:gridName="gridName3" :parentPrgmId="myPrgmId"
:parentPrgmId="myPrgmId" :editorGrid="true"
:editorGrid="true" @getRowsData="getAsgnRowData"
@getRowsData="getAsgnRowData" />
/> </div>
</div> </div>
</v-col> </v-col>
</v-row> </v-row>
@ -403,9 +408,9 @@ export default {
align: 'center', align: 'center',
width: 30, width: 30,
formatter: (props) => { formatter: (props) => {
return `<span class="custom-radio"> return `<label class="custom-radio">
<span class="radio-mark"></span> <span class="radio-mark"></span>
</span>`; </label>`;
} }
}, },
{ {
@ -426,9 +431,9 @@ export default {
align: 'center', align: 'center',
width: 30, width: 30,
formatter: (props) => { formatter: (props) => {
return `<span class="custom-radio"> return `<label class="custom-radio">
<span class="radio-mark"></span> <span class="radio-mark"></span>
</span>`; </label>`;
} }
}, },
{ header: '역할ID', name: 'roleId', hidden: true }, { header: '역할ID', name: 'roleId', hidden: true },
@ -568,7 +573,6 @@ export default {
}); });
}, },
async getRowData(data) { async getRowData(data) {
await this.setPageData({ await this.setPageData({
rowGridSelectKey: data.rowKey, rowGridSelectKey: data.rowKey,
rowGridSelectData: { rowGridSelectData: {
@ -674,8 +678,6 @@ export default {
}, },
getUnAsgnRowData(data) { getUnAsgnRowData(data) {
console.log("------------------DEBUG-------getUnAsgnRowData:", data);
const getRowData = data; const getRowData = data;
this.leftSelectRowData = Object.assign({}, getRowData); this.leftSelectRowData = Object.assign({}, getRowData);
}, },

View File

@ -81,6 +81,7 @@
@getRowsData="getRowData" @getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo" @sendSelectedRowStatInfo="getSelectedRowStatInfo"
:selectedRowDataWatchFlag="true" :selectedRowDataWatchFlag="true"
:dataPath="dataPathMock"
/> />
</div> </div>
</div> </div>
@ -129,7 +130,7 @@
<template v-else-if="item.id == 'AsgnRoleByUser'"> <template v-else-if="item.id == 'AsgnRoleByUser'">
<v-col :cols="3" class="h100"> <v-col :cols="3" class="h100">
<v-card-title <v-card-title
class="pa-0 custom-subtitle-tab" class="pa-0 custom-title-4"
style="min-height:36px;" style="min-height:36px;"
>역할리스트</v-card-title >역할리스트</v-card-title
> >
@ -155,7 +156,7 @@
</v-col> </v-col>
<v-col :cols="8" class="h100"> <v-col :cols="8" class="h100">
<div class="d-flex align-center justify-space-between"> <div class="d-flex align-center justify-space-between">
<v-card-title class="pa-0 custom-subtitle-tab"> <v-card-title class="pa-0 custom-title-4">
사용자 역할</v-card-title 사용자 역할</v-card-title
> >
<div> <div>
@ -308,10 +309,12 @@ export default {
}, },
methods: { methods: {
async init() { async init() {
await this.gridInit(); this.gridInit();
}, },
// 사용자 리스트 그리드 세팅 // 사용자 리스트 그리드 세팅
gridInit() { gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 90; const gridHeight = this.$refs.gridParent.offsetHeight - 90;
const myOptions = { const myOptions = {
@ -1071,4 +1074,67 @@ function sha512(str) {
.update(str) .update(str)
.digest('hex'); .digest('hex');
} }
const dataMockExample = [
{
userNo: 1,
userNm: '홍길동',
userLoginId: 'hong123',
userPswd: 'password123',
blocId: 'B001',
email: 'hong@example.com',
regUserNo: 100,
regDttm: '2025-07-01 10:00:00',
procUserNo: 101,
procDttm: '2025-07-15 14:30:00',
comId: 'C001',
deptId: 'D001'
},
{
userNo: 2,
userNm: '김영희',
userLoginId: 'kimyh',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
},
{
userNo: 3,
userNm: '관리자',
userLoginId: 'user',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
},
{
userNo: 4,
userNm: '사용자',
userLoginId: 'admin',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
}
];
</script> </script>

View File

@ -5,13 +5,13 @@
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
<div></div>
<v-col :cols="2.5"> <v-col :cols="2.5">
<InputText <InputText
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
label="배치ID" label="배치ID"
valueNm="batchId" valueNm="batchId"
:searchOption="true" :searchOption="true"
:iconShow="true"
customClass="input-large" customClass="input-large"
/> />
</v-col> </v-col>
@ -21,6 +21,7 @@
label="배치명" label="배치명"
valueNm="batchNm" valueNm="batchNm"
:searchOption="true" :searchOption="true"
:iconShow="true"
customClass="input-large" customClass="input-large"
/> />
</v-col> </v-col>
@ -32,6 +33,7 @@
:dataKey="'execRsltCd'" :dataKey="'execRsltCd'"
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_RSLT', useFg: '1' }" :sendParam="{ commGrpCd: 'CO_BATCH_EXEC_RSLT', useFg: '1' }"
:addAll="true" :addAll="true"
:iconShow="true"
customClass="select-large" customClass="select-large"
/> />
</v-col> </v-col>
@ -40,13 +42,13 @@
:is="'Datepicker'" :is="'Datepicker'"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
:label="'조회기간'" :label="'조회기간'"
customClass="datepicker-large" :customClass="'input-large'"
/> />
</v-col> </v-col>
<div class="text-right d-flex align-end justify-end pl-9" style="gap: 8px"> <v-col :cols="2" class="text-right d-flex align-end justify-end ga-1" style="gap: 4px">
<BtnSearch /> <BtnSearch size="large" />
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" size="large" /> <BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" size="large" />
</div> </v-col>
</v-row> </v-row>
</v-card> </v-card>
</v-col> </v-col>
@ -139,7 +141,7 @@ export default {
myPrgmId: myPrgmId, myPrgmId: myPrgmId,
loadGrid: false, loadGrid: false,
gridName: 'rowGrid', gridName: 'rowGrid',
// rowGridOrigin: [], rowGridOrigin: [],
detailList: myDetail, detailList: myDetail,
}; };
}, },
@ -295,7 +297,7 @@ export default {
// 엑셀 다운로드용 데이터 재정렬 // 엑셀 다운로드용 데이터 재정렬
this.xlsDataBind(res); this.xlsDataBind(res);
// this.rowGridOrigin = Utility.copyObj(newRes); this.rowGridOrigin = Utility.copyObj(newRes);
this.setGridData({ this.setGridData({
gridKey: this.gridName, gridKey: this.gridName,
value: newRes, value: newRes,

View File

@ -1,8 +1,7 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<!-- 조회조견 --> <!-- 조회조견 -->
<common-page-title /> <v-row ref="searchFilter">
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
@ -25,7 +24,7 @@
:customClass="'select-large'" :customClass="'select-large'"
/> />
</v-col> </v-col>
<v-col :cols="2.5" class="pr-4"> <v-col :cols="2.5">
<component <component
:is="'selectCodeList'" :is="'selectCodeList'"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
@ -35,7 +34,7 @@
:customClass="'select-large'" :customClass="'select-large'"
/> />
</v-col> </v-col>
<BtnSearch size="large" class="mr-2" /> <BtnSearch size="large" />
</v-row> </v-row>
</v-card> </v-card>
@ -58,7 +57,7 @@
<div class="px-4"> <div class="px-4">
<div ref="gridParent" class="h100 w100"> <div ref="gridParent" class="h100 w100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId" <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
:gridName="gridName" @getRowsData="getRowData" /> :gridName="gridName" @getRowsData="getRowData" :dataPath="dataPathExample" />
</div> </div>
<!-- </v-card-actions> --> <!-- </v-card-actions> -->
</div> </div>
@ -78,7 +77,7 @@
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-col> </v-col>
<v-dialog ref="popModal" v-model="dialog" width="800" overlay-color="#000" overlay-opacity="0.8" scrollable> <v-dialog ref="popModal" v-model="dialog" width="700" overlay-color="#000" overlay-opacity="0.8" scrollable>
<v-card style="height: 100%"> <v-card style="height: 100%">
<v-card-title class="v-card__title d-flex align-center justify-space-between"> <v-card-title class="v-card__title d-flex align-center justify-space-between">
<span class="custom-title-4">DB 프로시져 파라메터 설정</span> <span class="custom-title-4">DB 프로시져 파라메터 설정</span>
@ -92,6 +91,7 @@
<v-col cols="12" class="text-right"> </v-col> <v-col cols="12" class="text-right"> </v-col>
</v-row> </v-row>
</div> </div>
<v-divider></v-divider>
<v-card-text style="height: 300px;"> <v-card-text style="height: 300px;">
<div id="gridParent" class="mt-6" style="height:calc(100% - 36px);"> <div id="gridParent" class="mt-6" style="height:calc(100% - 36px);">
<div style="height:calc(100% - 36px);"> <div style="height:calc(100% - 36px);">
@ -101,6 +101,7 @@
</div> </div>
</div> </div>
</v-card-text> </v-card-text>
<v-divider></v-divider>
<v-card-actions> <v-card-actions>
<v-spacer></v-spacer> <v-spacer></v-spacer>
<v-btn color="primary" dark @click="setParamChangeData()">확인</v-btn> <v-btn color="primary" dark @click="setParamChangeData()">확인</v-btn>
@ -154,16 +155,76 @@ export default {
data() { data() {
return { return {
myPrgmId: myPrgmId, myPrgmId: myPrgmId,
loadGrid: false, loadGrid: true,
gridName: 'rowGrid', gridName: 'rowGrid',
dataPathExample: {
"rowGrid": {
data: [
{
"batchId": "BATCH001",
"batchNm": "일일 데이터 백업",
"batchExecTp": "자동 실행",
"batchDupExecFg": "N",
"useFg": "사용"
},
{
"batchId": "BATCH002",
"batchNm": "월간 리포트 생성",
"batchExecTp": "수동 실행",
"batchDupExecFg": "Y",
"useFg": "사용"
},
{
"batchId": "BATCH003",
"batchNm": "로그 정리 작업",
"batchExecTp": "자동 실행",
"batchDupExecFg": "N",
"useFg": "미사용"
},
{
"batchId": "BATCH004",
"batchNm": "사용자 통계 수집",
"batchExecTp": "예약 실행",
"batchDupExecFg": "Y",
"useFg": "사용"
},
{
"batchId": "BATCH005",
"batchNm": "서버 상태 점검",
"batchExecTp": "수동 실행",
"batchDupExecFg": "N",
"useFg": "미사용"
}
]
,
column: [
{ header: '배치ID', name: 'batchId', align: 'center', width: 100 },
{ header: '배치명', name: 'batchNm', minWidth: 200 },
{
header: '배치 실행 구분',
name: 'batchExecTp',
align: 'left',
minWidth: 190,
},
{ header: '배치 중복 여부', name: 'batchDupExecFg', hidden: true },
{
header: '사용여부',
name: 'useFg',
align: 'center',
width: 145,
},
],
}
},
// rowGridOrigin: [], // rowGridOrigin: [],
detailList: myDetail, detailList: myDetail,
// 파라메터 셋팅용 변수 // 파라메터 셋팅용 변수
dialog: false, dialog: false,
gridNameParam: 'paramGrid', gridNameParam: 'paramGrid',
paramLoadGrid: false, paramLoadGrid: true,
selectedGridNameParamRow: null, selectedGridNameParamRow: null,
}; };
}, },
@ -231,7 +292,7 @@ export default {
}), }),
init() { init() {
// this.layoutInit(); // this.layoutInit();
this.gridInit(); // this.gridInit();
this.gridParamInit(); this.gridParamInit();
}, },
// layoutInit() { // layoutInit() {
@ -248,10 +309,6 @@ export default {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
header: {
height: 37,
},
rowHeight: 37,
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,
@ -327,7 +384,7 @@ export default {
}, },
async search() { async search() {
// console.log("search"); // console.log("search");
await this.getRowGridData(); // await this.getRowGridData();
await this.setPageData({ await this.setPageData({
isFind: false, isFind: false,
}); });
@ -572,20 +629,20 @@ export default {
gridKey: this.gridNameParam, gridKey: this.gridNameParam,
value: myOptions, value: myOptions,
}); });
setTimeout(() => { }); // setTimeout(() => { });
let modeList = []; // let modeList = [];
const modeIn = { text: 'IN', value: 'IN' }; // const modeIn = { text: 'IN', value: 'IN' };
const modeOut = { text: 'OUT', value: 'OUT' }; // const modeOut = { text: 'OUT', value: 'OUT' };
modeList.push(modeIn); // modeList.push(modeIn);
modeList.push(modeOut); // modeList.push(modeOut);
let typeList = []; // let typeList = [];
const typeInt = { text: 'INT', value: 'int' }; // const typeInt = { text: 'INT', value: 'int' };
const typeStr = { text: 'STRING', value: 'str' }; // const typeStr = { text: 'STRING', value: 'str' };
const typeFunc = { text: 'FUNCTION', value: 'function' }; // const typeFunc = { text: 'FUNCTION', value: 'function' };
typeList.push(typeInt); // typeList.push(typeInt);
typeList.push(typeStr); // typeList.push(typeStr);
typeList.push(typeFunc); // typeList.push(typeFunc);
const myColumns = [ const myColumns = [
{ header: 'ID', name: 'id', editor: 'text' }, { header: 'ID', name: 'id', editor: 'text' },
@ -607,27 +664,27 @@ export default {
header: 'Type', header: 'Type',
name: 'type', name: 'type',
align: 'center', align: 'center',
formatter({ value }) { // formatter({ value }) {
let retVal = ''; // let retVal = '';
switch (value) { // switch (value) {
case 'int': // case 'int':
retVal = 'INT'; // retVal = 'INT';
break; // break;
case 'str': // case 'str':
retVal = 'STRING'; // retVal = 'STRING';
break; // break;
case 'function': // case 'function':
retVal = 'FUNCTION'; // retVal = 'FUNCTION';
break; // break;
} // }
return retVal; // return retVal;
}, // },
editor: { // editor: {
type: 'select', // type: 'select',
options: { // options: {
listItems: typeList, // listItems: typeList,
}, // },
}, // },
}, },
{ header: '값', name: 'val', editor: 'text' }, { header: '값', name: 'val', editor: 'text' },
{ header: 'rowStat', name: 'rowStat', hidden: true }, { header: 'rowStat', name: 'rowStat', hidden: true },
@ -646,49 +703,86 @@ export default {
// /* this.pageData.paramStrData 처리 */ // /* this.pageData.paramStrData 처리 */
// // console.log("this.pageData.paramStrData : ", JSON.parse(this.pageData.paramStrData)); // // console.log("this.pageData.paramStrData : ", JSON.parse(this.pageData.paramStrData));
let rowData = {}; // let rowData = {};
if ( // if (
this.pageData.paramStrData.startsWith('{') && // this.pageData.paramStrData.startsWith('{') &&
this.pageData.paramStrData.endsWith('}') // this.pageData.paramStrData.endsWith('}')
) { // ) {
rowData = JSON.parse(this.pageData.paramStrData); // rowData = JSON.parse(this.pageData.paramStrData);
} // }
var keys = Object.keys(rowData); //키를 가져옵니다. 이때, keys 는 반복가능한 객체가 됩니다. // var keys = Object.keys(rowData); //키를 가져옵니다. 이때, keys 는 반복가능한 객체가 됩니다.
for (var i = 0; i < keys.length; i++) { // for (var i = 0; i < keys.length; i++) {
var key = keys[i]; // var key = keys[i];
res.push(rowData[key]); // res.push(rowData[key]);
} // }
const newRes = res.map(item => { // const newRes = res.map(item => {
const newObj = { // const newObj = {
...item, // ...item,
rowStat: null, // rowStat: null,
id: item.id || '', // id: item.id || '',
mode: item.mode || 'in', // mode: item.mode || 'in',
type: item.type || 'str', // type: item.type || 'str',
val: item.val || '', // val: item.val || '',
}; // };
return newObj; // return newObj;
}); // });
const newRes = [
{
"id": "VAR001",
"mode": "OUT",
"type": "int",
"val": "100",
"rowStat": "C"
},
{
"id": "VAR002",
"mode": "IN",
"type": "str",
"val": "Hello World",
"rowStat": "U"
},
{
"id": "FUNC001",
"mode": "out",
"type": "function",
"val": "calculateSum()",
"rowStat": "C"
},
{
"id": "VAR003",
"mode": "IN",
"type": "int",
"val": "42",
"rowStat": "D"
},
{
"id": "VAR004",
"mode": "OUT",
"type": "str",
"val": "Sample Text",
"rowStat": "C"
}
];
this.setGridData({ this.setGridData({
gridKey: this.gridNameParam, gridKey: this.gridNameParam,
value: newRes, value: newRes,
}); });
this.$nextTick(() => { // this.$nextTick(() => {
if (newRes.length > 0) { // if (newRes.length > 0) {
try { // try {
this.$refs[this.gridNameParam].focus({ // this.$refs[this.gridNameParam].focus({
//rowKey: 0, // //rowKey: 0,
rowKey: 0, // rowKey: 0,
setScroll: true, // setScroll: true,
}); // });
} catch (error) { // } catch (error) {
console.log('error[nextTick grid] : ', error); // console.log('error[nextTick grid] : ', error);
} // }
} // }
}); // });
this.paramLoadGrid = true; this.paramLoadGrid = true;
}, },
xlsDataBind(res) { xlsDataBind(res) {
@ -718,21 +812,21 @@ export default {
inputClick(event, item, valueNm) { inputClick(event, item, valueNm) {
if (valueNm == 'refVal1') { if (valueNm == 'refVal1') {
this.dialog = true; this.dialog = true;
const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke( // const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke(
'getFocusedCell', // 'getFocusedCell',
).rowKey; // ).rowKey;
const selectRowData = this.$refs[this.gridName].gridInstance.invoke( // const selectRowData = this.$refs[this.gridName].gridInstance.invoke(
'getRow', // 'getRow',
rowIdxKey, // rowIdxKey,
); // );
if (selectRowData.batchExecTp == 'DP') { // if (selectRowData.batchExecTp == 'DP') {
// 여기에 팝업 레이어 띠우기 기능 추가 // // 여기에 팝업 레이어 띠우기 기능 추가
this.pageData.paramStrData = event.target.value; // this.pageData.paramStrData = event.target.value;
this.pageData.paramChangeDataTarget = event.target; // this.pageData.paramChangeDataTarget = event.target;
this.getRowParamData(); // this.getRowParamData();
this.dialog = true; // this.dialog = true;
} // }
} }
}, },
setParamChangeData() { setParamChangeData() {

View File

@ -1,7 +1,6 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<common-page-title /> <v-row ref="searchFilter">
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
@ -11,7 +10,7 @@
</v-col> </v-col>
<v-col cols="3"> <v-col cols="3">
<!-- <component :is="'SelectDateSolo'" :parentPrgmId="myPrgmId" /> --> <!-- <component :is="'SelectDateSolo'" :parentPrgmId="myPrgmId" /> -->
<DatePicker :parentPrgmId="myPrgmId" customClass="datepicker-large" :label="'조회연월'" /> <DatePicker :parentPrgmId="myPrgmId" :label="'조회연월'" />
</v-col> </v-col>
<v-col cols="6" class="text-right"> <v-col cols="6" class="text-right">
<BtnSearch @click="search()" size="large" /> <BtnSearch @click="search()" size="large" />
@ -21,29 +20,28 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row ref="contents" id="CalendarMngContent" class="mt-4"> <v-row ref="contents" id="CalendarMngContent" class="mt-4">
<v-col cols="12" lg="4" class=" pr-2"> <v-col cols="12" lg="4" class="h100 pr-2">
<v-card class="w100"> <v-card class="w100">
<v-card-title class="d-flex justify-space-between align-center"> <v-card-title class="d-flex justify-space-between align-center">
<span class="custom-title-4">캘린더 리스트</span> <span class="custom-title-4">캘린더 리스트</span>
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" /> <Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
</v-card-title> </v-card-title>
<v-card-actions class="pt-0 px-5 pb-5" :style="{ height: 'calc(100% - 10px)' }"> <v-card-actions class="pt-0 px-5 pb-5" :style="{ height: 'calc(100% - 72.56px)' }">
<div ref="gridParent" class="w100 h100"> <div ref="gridParent" class="w100 h100">
<component class="w100" :ref="gridName + myPrgmId" :is="loadGrid ? 'Grid' : null" <component class="w100" :ref="gridName + myPrgmId" :is="loadGrid ? 'Grid' : null"
:gridName="gridName" :parentPrgmId="myPrgmId" :editorGrid="true" :gridName="gridName" :parentPrgmId="myPrgmId" :editorGrid="true"
@getRowsData="getRowData" /> @getRowsData="getRowData" :dataPath="dataPathExample" />
</div> </div>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-col> </v-col>
<v-col cols="12" lg="8" class=" pl-3"> <v-col cols="12" lg="8" class="h100 pl-3">
<v-card> <v-card>
<v-card-title> <v-card-title>
<span class="custom-title-4">캘린더 미리보기</span> <span class="custom-title-4">캘린더 미리보기</span>
</v-card-title> </v-card-title>
<v-card-actions class="px-5 d-block" > <v-card-actions class="px-5 d-block" :style="{ height: 'calc(100% - 62px)' }">
<Calendar :parentPrgmId="myPrgmId" :gridName="gridName" :headerVisible="false" <Calendar :parentPrgmId="myPrgmId" :gridName="gridName" :headerVisible="false" />
:showTitle="false" />
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-col> </v-col>
@ -96,7 +94,81 @@ export default {
return { return {
myPrgmId: myPrgmId, myPrgmId: myPrgmId,
gridName: 'rowGrid', gridName: 'rowGrid',
loadGrid: false, loadGrid: true,
dataPathExample: {
"rowGrid": {
data: [
{
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-23",
"dtNm": "수요일",
"dt": "2025-07-21",
"dtNm": "월요일",
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-22",
"dtNm": "화요일",
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-24",
"dtNm": "목요일",
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-25",
"dtNm": "금요일",
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-26",
"dtNm": "토요일",
"hldyFg": "주말",
"hldyNm": ""
},
{
"dt": "2025-07-27",
"dtNm": "일요일",
"hldyFg": "휴일",
"hldyNm": "정기휴일"
}
],
column: [
{
header: '일자',
name: 'dt',
align: 'center',
// formatter({ value }) {
// return value.split(' ')[0];
// },
},
{
header: '요일',
name: 'dtNm',
align: 'center',
// formatter({ value }) {
// return value + '요일';
// },
},
{
header: '구분',
name: 'hldyFg',
align: 'center',
essential: true,
},
{ header: '휴일명', name: 'hldyNm', editor: 'text' },
],
}
},
rowKey: null, rowKey: null,
edtingFinishFlag: 'Y', edtingFinishFlag: 'Y',
}; };
@ -169,19 +241,16 @@ export default {
await this.gridInit(); await this.gridInit();
}, },
async search() { async search() {
await this.getRowGridData(); // await this.getRowGridData();
}, },
async gridInit() { async gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 30; // const gridHeight = this.$refs.gridParent.offsetHeight - 30;
this.setGridOption({ // this.setGridOption({
gridKey: this.gridName, // gridKey: this.gridName,
value: Object.assign(Utility.defaultGridOption(gridHeight), { // value: Object.assign(Utility.defaultGridOption(gridHeight), {
scrollX: false, header: { // scrollX: false,
height: 37, // }),
}, // });
rowHeight: 37,
}),
});
// this.getRowGridData(); // this.getRowGridData();
}, },
@ -281,86 +350,86 @@ export default {
this.loadGrid = false; this.loadGrid = false;
let res = await this.postApiReturn({ // let res = await this.postApiReturn({
apiKey: 'selectWorkCald', // apiKey: 'selectWorkCald',
resKey: 'workcaldData', // resKey: 'workcaldData',
sendParam: { // sendParam: {
blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId, // blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
yymm: this.chkFromDt, // yymm: this.chkFromDt,
comId: this.comId, // comId: this.comId,
}, // },
}); // });
let res2 = await this.postApiReturn({ // let res2 = await this.postApiReturn({
apiKey: 'selectWorkCaldDetl', // apiKey: 'selectWorkCaldDetl',
resKey: 'workcaldDetlData', // resKey: 'workcaldDetlData',
sendParam: { // sendParam: {
blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId, // blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
yymm: this.chkFromDt, // yymm: this.chkFromDt,
comId: this.comId, // comId: this.comId,
}, // },
}); // });
for (var i = 0; i < res2.length; i++) { // for (var i = 0; i < res2.length; i++) {
if ( // if (
!( // !(
res2[i].hldyNm == null || // res2[i].hldyNm == null ||
res2[i].hldyNm == '토요일' || // res2[i].hldyNm == '토요일' ||
res2[i].hldyNm == '일요일' // res2[i].hldyNm == '일요일'
) // )
) { // ) {
for (var j = i + 1; j < res2.length; j++) { // for (var j = i + 1; j < res2.length; j++) {
if (res2[i].hldyNm == res2[j].hldyNm) { // if (res2[i].hldyNm == res2[j].hldyNm) {
res2[i].hldyNm = ''; // res2[i].hldyNm = '';
} // }
} // }
} // }
} // }
res = res.map(item => { // res = res.map(item => {
const dt = this.$dayjs(item.dt.split(' ')[0]); // YYYY-MM-DD // const dt = this.$dayjs(item.dt.split(' ')[0]); // YYYY-MM-DD
const dtNm = dt.format('ddd'); // 요일 // const dtNm = dt.format('ddd'); // 요일
const newItem = { // const newItem = {
...item, // ...item,
dtNm: dtNm, // dtNm: dtNm,
hldyNm: item.hldyNm ? item.hldyNm : '', // hldyNm: item.hldyNm ? item.hldyNm : '',
rowStat: null, // rowStat: null,
}; // };
return newItem; // return newItem;
}); // });
this.loadGrid = true; // this.loadGrid = true;
this.setPageData({ isFind: false }); // this.setPageData({ isFind: false });
this.setGridColumn({ // this.setGridColumn({
gridKey: this.gridName, // gridKey: this.gridName,
value: myColumns, // value: myColumns,
}); // });
this.setGridData({ // this.setGridData({
gridKey: this.gridName, // gridKey: this.gridName,
value: res, // value: res,
}); // });
this.setPageData({ planData: res2 }); // this.setPageData({ planData: res2 });
// 첫번째 row 선택상태 // // 첫번째 row 선택상태
this.$nextTick(() => { // this.$nextTick(() => {
this.$refs[this.gridName + this.myPrgmId].focus({ // this.$refs[this.gridName + this.myPrgmId].focus({
//rowKey: 0, // //rowKey: 0,
rowKey: // rowKey:
this.pageData.rowGridSelectKey == '' || // this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null // this.pageData.rowGridSelectKey == null
? 0 // ? 0
: this.pageData.rowGridSelectKey == // : this.pageData.rowGridSelectKey ==
this.$refs[this.gridName + this.myPrgmId].getData().length - 1 // this.$refs[this.gridName + this.myPrgmId].getData().length - 1
? this.pageData.rowGridSelectKey // ? this.pageData.rowGridSelectKey
: 0, // : 0,
columnName: 'dt', // columnName: 'dt',
setScroll: true, // setScroll: true,
}); // });
this.setPageData({ isFind: false }); // this.setPageData({ isFind: false });
}); // });
}, },
async getRowData(data, gridName) { async getRowData(data, gridName) {
this.setGridSelectData({ this.setGridSelectData({
@ -535,17 +604,4 @@ select.selectbox {
border-width: 0px; border-width: 0px;
// box-sizing: border-box; // box-sizing: border-box;
} }
::v-deep {
.custom-vc-calender {
.vc-header {
display: none;
}
.vc-weeks {
padding: 0;
}
}
}
</style> </style>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<CommonPageTitle/> <PageTitle text="공통코드" />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -56,7 +56,7 @@
</v-col> </v-col>
<v-col :cols="12" class="text-right"> <v-col :cols="12" class="text-right">
<BtnSearch style="margin-top:20px" @click="search" size="large" /> <BtnSearch style="margin-top:20px" @click="search" />
</v-col> </v-col>
</v-row> </v-row>
<!-- <v-row align="center" no-gutters> <!-- <v-row align="center" no-gutters>
@ -363,7 +363,7 @@ export default {
gridKey: this.gridName, gridKey: this.gridName,
value: newRes, value: newRes,
}); });
this.loadGrid = true; this.loadGrid = true;
this.$nextTick(() => { this.$nextTick(() => {
if (newRes.length > 0) { if (newRes.length > 0) {
this.$refs[this.gridName].focus({ this.$refs[this.gridName].focus({

View File

@ -16,7 +16,7 @@
customClass="select-large" customClass="select-large"
/> />
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="4">
<InputText <InputText
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
label="프로그램명" label="프로그램명"
@ -50,16 +50,17 @@
/> />
</div> </div>
</div> </div>
<div ref="gridParent" style="height: 60vh"> <div style="min-height: 60vh">
<!-- <div ref="gridParent" class="px-5 h100"> <div ref="gridParent" class="px-5 h100">
</div> --> <component
<component :ref="gridName"
:ref="gridName" :is="loadGrid ? 'Grid' : null"
:is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
:parentPrgmId="myPrgmId" :gridName="gridName"
:gridName="gridName" @getRowsData="getRowData"
@getRowsData="getRowData" :dataPath="dataPathMock"
/> />
</div>
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
@ -261,6 +262,8 @@ export default {
}); });
// this.getRowGridData(); // this.getRowGridData();
this.loadGrid = true;
}, },
async search() { async search() {
await this.getRowGridData(); await this.getRowGridData();
@ -293,7 +296,6 @@ export default {
gridKey: this.gridName, gridKey: this.gridName,
value: newRes, value: newRes,
}); });
this.loadGrid = true;
this.$nextTick(() => { this.$nextTick(() => {
if (newRes.length > 0) { if (newRes.length > 0) {
@ -314,12 +316,6 @@ export default {
}); });
}, },
async getRowData(data, gridName) { async getRowData(data, gridName) {
// console.log("-----------------------DEBUG--getRowData--------------", {
// gridKey: gridName,
// gridSelect: true,
// rowGridSelectKey: data.rowKey,
// rowGridSelectData: data,
// });
this.setGridSelectData({ this.setGridSelectData({
gridKey: gridName, gridKey: gridName,
gridSelect: true, gridSelect: true,
@ -331,7 +327,6 @@ export default {
rowGridSelectKey: data.rowKey, rowGridSelectKey: data.rowKey,
rowGridSelectData: data, rowGridSelectData: data,
}); });
}, },
compareData(type, newDt) { compareData(type, newDt) {
if (this.selectedCommCdData[type] == newDt) { if (this.selectedCommCdData[type] == newDt) {

View File

@ -336,8 +336,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,
@ -628,3 +627,6 @@ const myDetail = [
}, },
]; ];
</script> </script>
<style lang="scss">
@import '@/assets/scss/common.scss';
</style>

View File

@ -1,6 +1,7 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<CommonPageTitle/> <!-- <h1 class="h1-title">대시보드</h1> -->
<PageTitle text="대시보드" />
<!-- <CheckBox <!-- <CheckBox
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
label="사용여부" label="사용여부"
@ -599,7 +600,7 @@ export default {
this.getEnrgUsage(); this.getEnrgUsage();
}, },
isDarkMode(newVal) { isDarkMode(newVal) {
// Update color of dark mode or light mode into each charts // let chartOption = this.getGuageChartOption2(this.chart_01);
let chartOption = getGaugeChartOption({ let chartOption = getGaugeChartOption({
title: this.chart_01, title: this.chart_01,
isDarkMode: this.isDarkMode, isDarkMode: this.isDarkMode,
@ -609,6 +610,7 @@ export default {
]?.series?.[0]?.data?.[0]?.value; ]?.series?.[0]?.data?.[0]?.value;
this.$store.state.pageData[myPrgmId][this.chart_01] = chartOption; this.$store.state.pageData[myPrgmId][this.chart_01] = chartOption;
// let chartOption3 = this.getGuageChartOption2(this.chart_03);
let chartOption3 = getGaugeChartOption({ let chartOption3 = getGaugeChartOption({
title: this.chart_03, title: this.chart_03,
isDarkMode: this.isDarkMode, isDarkMode: this.isDarkMode,
@ -618,24 +620,12 @@ export default {
]?.series?.[0]?.data?.[0]?.value; ]?.series?.[0]?.data?.[0]?.value;
this.$store.state.pageData[myPrgmId][this.chart_03] = chartOption3; this.$store.state.pageData[myPrgmId][this.chart_03] = chartOption3;
let mockres = this.$store.state.pageData[myPrgmId][this.chart_04];
this.setChart04Data(mockres);
let chart04Dat = this.$store.state.pageData[myPrgmId]['chart04Data']; this.setChart02Data("test");
this.setChart04Data(chart04Dat);
let chartOption2 = getLineChartOption({
xAxisData: this.$store.state.pageData[myPrgmId][this.chart_02].xAxisData,
seriesData: this.$store.state.pageData[myPrgmId][this.chart_02].seriesData,
isDarkMode: this.isDarkMode,
});
this.$store.state.pageData[myPrgmId][this.chart_02] = chartOption2
let chartOption5 = getLineChartOption({
xAxisData: this.$store.state.pageData[myPrgmId][this.chart_05].xAxisData,
seriesData: this.$store.state.pageData[myPrgmId][this.chart_05].seriesData,
isDarkMode: this.isDarkMode,
});
this.$store.state.pageData[myPrgmId][this.chart_05] = chartOption5
this.setChart05Data("test");
}, },
// beforeDestroy() { // beforeDestroy() {
// this.cancelAutoUpdate(); // this.cancelAutoUpdate();
@ -1179,7 +1169,6 @@ export default {
chartKey: "compareEqpmTGdChart", chartKey: "compareEqpmTGdChart",
value: chartOption, value: chartOption,
}); });
this.$store.state.pageData[myPrgmId][this.chart_05] = chartOption
}, },
async setChart04Data(data) { async setChart04Data(data) {
if (this.$store.state.pageData[this.myPrgmId].todayNgTopTen != undefined) { if (this.$store.state.pageData[this.myPrgmId].todayNgTopTen != undefined) {
@ -1279,7 +1268,6 @@ export default {
}, },
series: seriesData, series: seriesData,
}; };
await this.$nextTick(() => {}); await this.$nextTick(() => {});
this.setChartOption({ chartKey: "todayNgTopTen", value: chartOption }); this.setChartOption({ chartKey: "todayNgTopTen", value: chartOption });
}, },
@ -1413,7 +1401,6 @@ export default {
chartKey: "compareEqpmTotChart", chartKey: "compareEqpmTotChart",
value: chartOption, value: chartOption,
}); });
this.$store.state.pageData[myPrgmId][this.chart_02] = chartOption
}, },
getGuageChartOption(chartName) { getGuageChartOption(chartName) {
const gaugeColors = [ const gaugeColors = [
@ -1723,7 +1710,7 @@ export default {
let chartData = this.pageData.chart04Data; let chartData = this.pageData.chart04Data;
// let chartData = this.$store.state.pageData[myPrgmId][this.chart_04]['series'][0]['data'] // let chartData = this.$store.state.pageData[myPrgmId][this.chart_04]['series'][0]['data']
let selectedChartData = chartData.filter((item) => { let selectedChartData = chartData.filter((item) => {
return item.eqpmId == event["data"]["name"]; return item.eqpmId == event["data"]["groupId"];
}); });
var data = { var data = {
cmCycle: "CYC_DAY", cmCycle: "CYC_DAY",

View File

@ -25,7 +25,7 @@
:textCols="12" :searchOption="true" :customClass="'input-large'" :iconShow="true" /> :textCols="12" :searchOption="true" :customClass="'input-large'" :iconShow="true" />
</v-col> </v-col>
<BtnSearch @click="search" size="large" class="mr-2" /> <BtnSearch @click="search" size="large" />
</v-row> </v-row>
</v-card> </v-card>
@ -43,7 +43,8 @@
<div ref="gridParent" class="w100 h100"> <div ref="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :parentPrgmId="myPrgmId" @getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" /> @sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
/>
</div> </div>
</div> </div>
</v-card> </v-card>
@ -307,22 +308,12 @@ export default {
const _this = this; const _this = this;
const myColumns = [ const myColumns = [
{
header: '',
name: '',
align: 'center',
formatter: (props) => {
return `<span class="custom-radio">
<span class="radio-mark"></span>
</span>`;
}
},
{ header: '회사 ID', name: 'comId', hidden: true }, { header: '회사 ID', name: 'comId', hidden: true },
{ {
header: '검침개소명', header: '검침개소명',
name: 'readPlcNm', name: 'readPlcNm',
align: 'left', align: 'left',
minWidth: 350, minWidth: 400,
}, },
{ {
header: '검침개소 ID', header: '검침개소 ID',
@ -479,12 +470,12 @@ export default {
this.$refs[this.gridName].focus({ this.$refs[this.gridName].focus({
rowKey: rowKey:
this.pageData.rowGridSelectKey == '' || this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null this.pageData.rowGridSelectKey == null
? 0 ? 0
: this.pageData.rowGridSelectKey == : this.pageData.rowGridSelectKey ==
this.$refs[this.gridName].getData().length - 1 this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey ? this.pageData.rowGridSelectKey
: 0, : 0,
columnName: 'readPlcNm', columnName: 'readPlcNm',
setScroll: true, setScroll: true,
}); });
@ -502,7 +493,7 @@ export default {
if (this.tab == 2) { if (this.tab == 2) {
this.tab = 0; this.tab = 0;
} }
this.isImgTabDisabled = true; this.isImgTabDisabled = false;
} else { } else {
this.isImgTabDisabled = false; this.isImgTabDisabled = false;
} }
@ -926,47 +917,47 @@ const defaultData = {
}; };
const sampleData = [ const sampleData = [
{ {
readPlcNm: '서울 본사', readPlcNm: '서울 본사',
plcKind: '본사', plcKind: '본사',
useFg: '사용', useFg: '사용',
_children: [ _children: [
{ {
readPlcNm: '서울 본사 - 1층', readPlcNm: '서울 본사 - 1층',
plcKind: '층', plcKind: '층',
useFg: '사용', useFg: '사용',
}, },
{ {
readPlcNm: '서울 본사 - 2층', readPlcNm: '서울 본사 - 2층',
plcKind: '층', plcKind: '층',
useFg: '미사용', useFg: '미사용',
}, },
], ],
}, },
{ {
readPlcNm: '부산 지사', readPlcNm: '부산 지사',
plcKind: '지사', plcKind: '지사',
useFg: '사용', useFg: '사용',
_children: [ _children: [
{ {
readPlcNm: '부산 지사 - A동', readPlcNm: '부산 지사 - A동',
plcKind: '건물', plcKind: '건물',
useFg: '사용', useFg: '사용',
_children: [ _children: [
{ {
readPlcNm: '부산 지사 - A동 1층', readPlcNm: '부산 지사 - A동 1층',
plcKind: '층', plcKind: '층',
useFg: '사용', useFg: '사용',
}, },
], ],
}, },
], ],
}, },
{ {
readPlcNm: '대전 창고', readPlcNm: '대전 창고',
plcKind: '창고', plcKind: '창고',
useFg: '미사용', useFg: '미사용',
}, },
]; ];

View File

@ -1,6 +1,5 @@
<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">
@ -84,7 +83,7 @@
</v-card> </v-card>
</v-col> </v-col>
</v-row> </v-row>
<v-row > <v-row ref="contents" style="height: calc(100vh - 400px)">
<v-col :cols="5" class="h100"> <v-col :cols="5" class="h100">
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title class="d-flex justify-space-between align-end"> <v-card-title class="d-flex justify-space-between align-end">
@ -114,7 +113,7 @@
<v-col :cols="7" class="h100"> <v-col :cols="7" class="h100">
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title>에너지원 상세</v-card-title> <v-card-title>에너지원 상세</v-card-title>
<div class="px-5" style="min-height: auto;"> <div class="px-5" style="height:calc(100% - 70px)">
<v-tabs v-model="tab"> <v-tabs v-model="tab">
<v-tab <v-tab
v-for="item in items" v-for="item in items"
@ -126,21 +125,21 @@
</v-tabs> </v-tabs>
<v-tabs-items <v-tabs-items
v-model="tab" v-model="tab"
style="height: calc(100% - 65px);"
class="py-6" class="py-6"
style="min-height: auto;"
> >
<v-tab-item v-for="(item, idx) in items" :key="item.id"> <v-tab-item v-for="(item, idx) in items" :key="item.id">
<component <component
v-if="item.id == 'ercInfoTab'" v-if="item.id == 'ercInfoTab'"
:is="'Form'" :is="'Form'"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
:detailList="detailList" :detailList="detailList"
@gridEditingFinish="gridEditingFinish" @gridEditingFinish="gridEditingFinish"
/> />
<ErcChrgInfoTab <ErcChrgInfoTab
v-if="item.id == 'ercChrgInfoTab'" v-if="item.id == 'ercChrgInfoTab'"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
:innerTabGridInfo="{ tab, idx }" :innerTabGridInfo="{ tab, idx }"
/> />
</v-tab-item> </v-tab-item>
</v-tabs-items> </v-tabs-items>

View File

@ -31,7 +31,7 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row ref="contents" class="mt-3"> <v-row ref="contents" class="mt-3">
<v-col :cols="5" class="pr-2"> <v-col :cols="5" class="h100 pr-2">
<v-card class="pb-5"> <v-card class="pb-5">
<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">
물리량 리스트 물리량 리스트
@ -50,7 +50,7 @@
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<v-col :cols="7" class="pl-2"> <v-col :cols="7" class="h100 pl-2">
<v-card class="pb-5 px-4"> <v-card class="pb-5 px-4">
<v-card-title class="px-0">물리량 상세</v-card-title> <v-card-title class="px-0">물리량 상세</v-card-title>
<v-row no-gutters> <v-row no-gutters>
@ -114,7 +114,7 @@
<component :is="'TextArea'" :parentPrgmId="myPrgmId" ref="TextArea" :item="calcDescItem" /> <component :is="'TextArea'" :parentPrgmId="myPrgmId" ref="TextArea" :item="calcDescItem" />
</v-col> </v-col>
</v-row> </v-row>
<v-row no-gutters v-show="argContentShowFlag" align="end" > <v-row no-gutters v-show="argContentShowFlag">
<v-col :cols="12" class="py-2"> <v-col :cols="12" class="py-2">
<label for=""> <label for="">
<v-icon small <v-icon small
@ -122,13 +122,13 @@
계산Argument 계산Argument
</label> </label>
</v-col> </v-col>
<v-col :cols="6" class="py-2 pr-4"> <v-col :cols="6" class="py-2">
<InputText :parentPrgmId="myPrgmId" label="ARG갯수" valueNm="argCnt" :labelCols="12" <InputText :parentPrgmId="myPrgmId" label="ARG갯수" valueNm="argCnt" :labelCols="12"
:textCols="12" :iconShow="false" :required="requiredValueList[7]" :textCols="12" :iconShow="true" :required="requiredValueList[7]"
:disabled="disabledValueList[7]" :readonly="readOnlyValueList[7]" /> :disabled="disabledValueList[7]" :readonly="readOnlyValueList[7]" />
</v-col> </v-col>
<!-- <v-col :cols="4"> </v-col> --> <v-col :cols="4"> </v-col>
<v-col :cols="6" class="py-2" align="right"> <v-col :cols="12" class="py-2" align="right">
<a-button type="primary" @click="btnAction('add')" class="v-btn-add-text mr-1" icon="plus">추가</a-button> <a-button type="primary" @click="btnAction('add')" class="v-btn-add-text mr-1" icon="plus">추가</a-button>
<a-button type="danger" @click="btnAction('remove')" ghost danger icon="delete">삭제</a-button> <a-button type="danger" @click="btnAction('remove')" ghost danger icon="delete">삭제</a-button>
</v-col> </v-col>
@ -225,6 +225,61 @@ export default {
formatterSelectList02: [], formatterSelectList02: [],
loadGrid: false, loadGrid: false,
dataPathExample: {
"rowGrid": {
data: [
{
"pysclQtyId": "001",
"pysclQtyCd": "TEMP001",
"pysclQtyNm": "온도",
"pysclQtyTp": "실수"
},
{
"pysclQtyId": "002",
"pysclQtyCd": "PRESS001",
"pysclQtyNm": "압력",
"pysclQtyTp": "실수"
},
{
"pysclQtyId": "003",
"pysclQtyCd": "FLOW001",
"pysclQtyNm": "유량",
"pysclQtyTp": "정수"
},
{
"pysclQtyId": "004",
"pysclQtyCd": "HUMID001",
"pysclQtyNm": "습도",
"pysclQtyTp": "실수"
},
{
"pysclQtyId": "005",
"pysclQtyCd": "VOLT001",
"pysclQtyNm": "전압",
"pysclQtyTp": "실수"
}
]
,
column: [
{
header: '물리량 ID',
name: 'pysclQtyId',
width: 100,
align: 'center',
},
{ header: '물리량코드', name: 'pysclQtyCd', minWidth: 255 },
{ header: '물리량명', name: 'pysclQtyNm', width: 150 },
{
header: '물리량타입',
name: 'pysclQtyTp',
width: 80,
},
],
}
},
loadGrid2: false, loadGrid2: false,
detailList: myDetail, detailList: myDetail,
@ -899,8 +954,6 @@ export default {
height: 37, height: 37,
}, },
rowHeight: 'auto', rowHeight: 'auto',
scrollX: true,
scrollY: true,
}; };
this.setGridOption({ this.setGridOption({
@ -914,7 +967,7 @@ export default {
header: '물리량 ID', header: '물리량 ID',
name: 'pysclQtyId', name: 'pysclQtyId',
width: 100, width: 100,
align: 'left', align: 'center',
}, },
{ header: '설비그룹 ID', name: 'eqpmGrpId', hidden: true }, { header: '설비그룹 ID', name: 'eqpmGrpId', hidden: true },
{ header: 'argCnt', name: 'argCnt', hidden: true }, { header: 'argCnt', name: 'argCnt', hidden: true },

View File

@ -1,6 +1,6 @@
<template> <template>
<div ref="mainDiv" class="l-layout"> <div ref="mainDiv" class="l-layout">
<CommonPageTitle/> <PageTitle/>
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -359,7 +359,7 @@ const myDetail = [
label: '설비종류 ID', label: '설비종류 ID',
valueNm: 'eqpmKindId', valueNm: 'eqpmKindId',
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-1', class: 'py-2 pr-4',
iconShow: true, iconShow: true,
required: false, required: false,
readonly: true, readonly: true,
@ -373,7 +373,7 @@ const myDetail = [
valueNm: 'eqpmKindNm', valueNm: 'eqpmKindNm',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-1', class: 'py-2 pl-4',
iconShow: true, iconShow: true,
required: true, required: true,
labelCols: 12, labelCols: 12,

View File

@ -1,6 +1,6 @@
<template> <template>
<div ref="mainDiv" class="l-layout"> <div ref="mainDiv" class="l-layout">
<CommonPageTitle /> <PageTitle />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -461,7 +461,7 @@ const myDetail = [
valueNm: 'eqpmGrpId', valueNm: 'eqpmGrpId',
disabled: true, disabled: true,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-1', class: 'py-2 pr-4',
required: false, required: false,
iconShow: true, iconShow: true,
labelCols: 12, labelCols: 12,
@ -474,23 +474,24 @@ const myDetail = [
valueNm: 'eqpmGrpNm', valueNm: 'eqpmGrpNm',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-1', class: 'py-2 pl-4',
required: true, required: true,
iconShow: true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
{ {
type: 'CheckBox', type: 'CheckBox',
label: '사용 여부', label: '사용 여부',
valueNm: 'useFg', valueNm: 'useFg',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-4', class: 'py-2 pr-4 pt-5',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: true, required: true,
iconShow: true, iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'SelectBox', type: 'SelectBox',

View File

@ -119,6 +119,109 @@ export default {
selectValueList01: [], selectValueList01: [],
selectValue02: null, selectValue02: null,
selectValueList02: [], selectValueList02: [],
// pyscPopupValueChkList: 'pyscPopupValueChkList',
// pyscListChk: {
// pysclQtyId1 : null,
// pysclQtyId2 : null,
// pysclQtyId3 : null,
// pysclQtyId4 : null
// }
// dataPathExample: {
// "rowGrid": {
// data: [
// {
// gdIdxId: 'GD001',
// gdIdxNm: '온도 가이드',
// eqpmGrpId: 'EQ001',
// upTotMeth: 'AVG',
// careStndVal: 50,
// warnStndVal: 70,
// alrmMsg: '온도가 기준치를 초과했습니다.',
// },
// {
// gdIdxId: 'GD002',
// gdIdxNm: '습도 가이드',
// eqpmGrpId: 'EQ002',
// upTotMeth: 'MAX',
// careStndVal: 30,
// warnStndVal: 60,
// alrmMsg: '습도가 기준치를 초과했습니다.',
// },
// {
// gdIdxId: 'GD003',
// gdIdxNm: '압력 가이드',
// eqpmGrpId: 'EQ003',
// upTotMeth: 'SUM',
// careStndVal: 100,
// warnStndVal: 150,
// alrmMsg: '압력이 기준치를 초과했습니다.',
// }
// ],
// column: [
// {
// header: '가이드',
// name: 'gdIdxId',
// width: 100,
// align: 'center',
// },
// {
// header: '가이드명',
// name: 'gdIdxNm',
// width: 210,
// align: 'left',
// },
// {
// header: '설비그룹ID',
// name: 'eqpmGrpId',
// width: 100,
// align: 'center',
// // formatter({ value }) {
// // let retVal = '';
// // const newValue = _this.pageData.eqpmGrpList.filter(item => item.value == value);
// // if (newValue.length > 0) {
// // retVal = newValue[0].text;
// // }
// // return retVal;
// // },
// },
// {
// header: '상위집계방법',
// name: 'upTotMeth',
// width: 100,
// align: 'center',
// // formatter({ value }) {
// // let retVal = '';
// // const newValue = _this.pageData.upTotMethList.filter(item => item.commCd == value);
// // if (newValue.length > 0) {
// // retVal = newValue[0].commCdNm;
// // }
// // return retVal;
// // },
// },
// {
// header: '주의기준',
// name: 'careStndVal',
// width: 100,
// align: 'right',
// },
// {
// header: '경고기준',
// name: 'warnStndVal',
// width: 100,
// align: 'right',
// },
// {
// header: '알람메세지',
// name: 'alrmMsg',
// minWidth: 860,
// align: 'left',
// }
// ]
// }
// }
}; };
}, },
computed: { computed: {
@ -524,6 +627,58 @@ export default {
async getRowGridData() { async getRowGridData() {
this.loadGrid = false; this.loadGrid = false;
let res = []; let res = [];
// const newRes = [
// {
// comId: 'COM001',
// gdIdxId: 'GD001',
// gdIdxNm: '온도 가이드',
// eqpmGrpId: 'EQ001',
// upTotMeth: 'AVG',
// sortSeq: 1,
// pysclQtyId1: 'TEMP',
// pysclQtyId2: null,
// pysclQtyId3: null,
// pysclQtyId4: null,
// ctgr1: '환경',
// ctgr2: '내부',
// careStndVal: 50,
// warnStndVal: 70,
// gdMeth: '자동',
// useFg: '1',
// alrmMsg: '온도가 기준치를 초과했습니다.',
// calcProc: 'PROC001',
// calcDesc: '평균 계산',
// calcMeth: '(A+B)/2',
// unit: 'C',
// argCnt: 2,
// rowStat: null,
// },
// {
// comId: 'COM002',
// gdIdxId: 'GD002',
// gdIdxNm: '습도 가이드',
// eqpmGrpId: 'EQ002',
// upTotMeth: 'MAX',
// sortSeq: 2,
// pysclQtyId1: 'HUMID',
// pysclQtyId2: null,
// pysclQtyId3: null,
// pysclQtyId4: null,
// ctgr1: '환경',
// ctgr2: '외부',
// careStndVal: 30,
// warnStndVal: 60,
// gdMeth: '수동',
// useFg: '0',
// alrmMsg: '습도가 기준치를 초과했습니다.',
// calcProc: 'PROC002',
// calcDesc: '최대값 계산',
// calcMeth: 'MAX(A,B)',
// unit: '%',
// argCnt: 2,
// rowStat: null,
// },
// ];
res = await this.postApiReturn({ res = await this.postApiReturn({
apiKey: 'selectEqpmGdIdxDataList', apiKey: 'selectEqpmGdIdxDataList',
@ -1298,7 +1453,7 @@ const myDetail = [
class: 'pa-3', class: 'pa-3',
// required: true, // required: true,
openMode: 'ALL', openMode: 'ALL',
disabled: true, disabled: false,
eqpmKindId: '', eqpmKindId: '',
eqpmGrpId: '', eqpmGrpId: '',
closeBtnFg: true, closeBtnFg: true,

View File

@ -1,27 +1,63 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<CommonPageTitle /> <PageTitle text="측정 위치 데이터 조회" />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
<v-col :cols="3"> <v-col :cols="2">
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId" <component
:textCols="12" customClass="select-large" /> :is="'SelectBlocMstr'"
ref="SelectBlocMstr"
:parentPrgmId="myPrgmId"
:textCols="12"
customClass="select-large"
/>
</v-col> </v-col>
<!-- <v-col :cols="2">
<component
label="검침개소"
:is="'PastRsltDataReadPop'"
:parentPrgmId="myPrgmId"
/>
</v-col> -->
<!-- <v-col :cols="2">
<component
:is="'SelectTagNmList'"
ref="SelectTagNmList"
:parentPrgmId="myPrgmId"
/>
</v-col> -->
<v-col :cols="3"> <v-col :cols="3">
<component :is="'EvtObjPop'" :parentPrgmId="myPrgmId" :item="evtObjPopItem" <!-- <component
customClass="select-large" /> :is="'PastRsltDataReadTagPop'"
:parentPrgmId="myPrgmId"
:label="'TAG'"
/> -->
<component
:is="'EvtObjPop'"
:parentPrgmId="myPrgmId"
:item="evtObjPopItem"
customClass="select-large"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="4">
<!-- 대상일 --> <component
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'조회기간'" :textCols="12" :is="'Datepicker'"
customClass="datepicker-large" /> :parentPrgmId="myPrgmId"
:label="'조회기간'"
:textCols="12"
/>
</v-col> </v-col>
<v-col :cols="3" class="d-flex align-end justify-end text-right"> <v-col :cols="3" class="d-flex align-end justify-end text-right">
<BtnExcelDownload class="mr-1" :parentPrgmId="myPrgmId" :gridName="gridName" type="primary" <BtnExcelDownload
size="large" /> class="mr-1"
:parentPrgmId="myPrgmId"
:gridName="gridName"
type="primary"
size="large"
/>
<BtnSearch @click="search" size="large" /> <BtnSearch @click="search" size="large" />
</v-col> </v-col>
</v-row> </v-row>
@ -32,12 +68,12 @@
<v-col :cols="12" style="height: 100%" class="h100"> <v-col :cols="12" style="height: 100%" class="h100">
<v-card class="px-5 py-5 h100"> <v-card class="px-5 py-5 h100">
<div ref="gridParent" class="h100 px-5" style="height: 100%"> <div ref="gridParent" class="h100 px-5" style="height: 100%">
<component ref="myGrid" :is="loadGrid ? 'Grid' : null" :gridName="gridName" <component
:parentPrgmId="myPrgmId" /> ref="myGrid"
</div> :is="loadGrid ? 'Grid' : null"
<div class="d-flex align-center justify-space-between"> :gridName="gridName"
<pagination id="pagination" :total-count="totalCount" :page-num="page" :limit="limit" :parentPrgmId="myPrgmId"
@loadData="changeGrid" /> />
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
@ -61,7 +97,7 @@ import BtnExcelDownload from '~/components/common/button/BtnExcelDownload';
import DateUtility from '~/plugins/dateUtility'; import DateUtility from '~/plugins/dateUtility';
// import Search from "~/components/common/search"; // import Search from "~/components/common/search";
import EvtObjPop from '~/components/common/modal/EvtObjPop'; import EvtObjPop from '~/components/common/modal/EvtObjPop';
import pagination from '~/components/Pagination'; import PageTitle from "~/components/common/PageTitle";
let myTitle; let myTitle;
// const myPrgmId = "PRG0052"; // const myPrgmId = "PRG0052";
@ -94,7 +130,7 @@ export default {
PastRsltDataReadPop, PastRsltDataReadPop,
PastRsltDataReadTagPop, PastRsltDataReadTagPop,
EvtObjPop, EvtObjPop,
pagination, PageTitle,
}, },
data() { data() {
return { return {
@ -110,16 +146,12 @@ export default {
valueNm2: 'tagNm', valueNm2: 'tagNm',
iconShow: true, iconShow: true,
disabled: false, disabled: false,
labelCols: 12,
textCols: 12, textCols: 12,
class: 'py-2', class: 'py-2',
required: false, required: false,
formFg: false, formFg: false,
}, },
itemsPerPage: 10,
itemsPerPageArray: [10, 20, 30],
limit: 20,
page: 1,
totalCount: 0,
}; };
}, },
computed: { computed: {
@ -132,6 +164,9 @@ export default {
chkTagId() { chkTagId() {
return this.pageData.tagList === undefined ? null : this.pageData.tagId; return this.pageData.tagList === undefined ? null : this.pageData.tagId;
}, },
// chkTagList() {
// return this.pageData.tagList;
// },
chkTagNm() { chkTagNm() {
return this.pageData.tagData.tagNm; return this.pageData.tagData.tagNm;
}, },
@ -141,16 +176,18 @@ export default {
}, },
watch: { watch: {
chkIsFind(val) { chkIsFind(val) {
if (val) { if (val) this.search();
this.page = 1;
this.search();
}
}, },
chkTagId(val) { chkTagId(val) {
if (this.initFlag && val != null) { if (this.initFlag && val != null) {
this.search(); this.search();
} }
}, },
// chkTagList() {
// if(this.initFlag){
// this.search();
// }
// },
chkTagNm() { chkTagNm() {
if (this.initFlag) { if (this.initFlag) {
this.search(); this.search();
@ -170,7 +207,7 @@ export default {
defaultData: defaultData, defaultData: defaultData,
}); });
}, },
created() { }, created() {},
async mounted() { async mounted() {
await this.setFromDt(); await this.setFromDt();
await this.init(); await this.init();
@ -293,7 +330,6 @@ export default {
this.loadGrid = false; this.loadGrid = false;
let res = []; let res = [];
let res2 = [];
let yearQuarterData = []; let yearQuarterData = [];
yearQuarterData = this.yearQuarterMaker([ yearQuarterData = this.yearQuarterMaker([
this.pageData.fromDt, this.pageData.fromDt,
@ -345,18 +381,8 @@ export default {
apiKey: 'selectTagRawDataByQuarter', apiKey: 'selectTagRawDataByQuarter',
resKey: 'pastRsltReadData', resKey: 'pastRsltReadData',
sendParam: sendParams, sendParam: sendParams,
limit: this.limit,
page: this.page,
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
}); });
res2 = await this.postApiReturn({
apiKey: 'selectTagRawDataByQuarterPageTotal',
resKey: 'pastRslPageTotal',
sendParam: sendParams
});
this.totalCount = res2[0].totalcount;
this.setGridData({ this.setGridData({
gridKey: this.gridName, gridKey: this.gridName,
value: res, value: res,
@ -367,9 +393,6 @@ export default {
fromDt: this.pageData.fromDt, fromDt: this.pageData.fromDt,
toDt: this.pageData.toDt, toDt: this.pageData.toDt,
yearQuarterList: yearQuarterData['yearQuarterList'], yearQuarterList: yearQuarterData['yearQuarterList'],
limit: this.limit,
page: this.page,
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
}; };
sendParams['tagId'] = this.pageData.tagId; sendParams['tagId'] = this.pageData.tagId;
// //
@ -387,14 +410,6 @@ export default {
sendParam: sendParams, sendParam: sendParams,
}); });
res2 = await this.postApiReturn({
apiKey: 'selectTagRawDataByQuarterPageTotal',
resKey: 'pastRslPageTotal',
sendParam: sendParams
});
this.totalCount = res2[0].totalcount;
this.setGridData({ this.setGridData({
gridKey: this.gridName, gridKey: this.gridName,
value: res, value: res,
@ -472,12 +487,6 @@ export default {
finalResult['yearQuarterList'] = result; finalResult['yearQuarterList'] = result;
return finalResult; return finalResult;
}, },
changeGrid: async function (pageNum, limit) {
this.page = pageNum;
this.limit = limit;
this.search();
},
}, },
}; };

View File

@ -405,8 +405,6 @@ export default {
value: myColumns, value: myColumns,
}); });
this.loadGrid = true;
this.search(); this.search();
}, },
async getRowGridData() { async getRowGridData() {
@ -435,8 +433,9 @@ export default {
gridKey: this.gridName, gridKey: this.gridName,
value: newRes, value: newRes,
}); });
console.log('-------DEBUG-----newRes: ', newRes);
this.$nextTick(() => { this.$nextTick(() => {
this.loadGrid = true;
if (newRes.length > 0) { if (newRes.length > 0) {
try { try {
this.$refs[this.gridName].focus({ this.$refs[this.gridName].focus({

View File

@ -91,7 +91,7 @@
</a-button> </a-button>
</div> </div>
</div> </div>
<div ref="gridParent" class="px-5 w100" style="height: 55vh;"> <div ref="gridParent" class="px-5 w100" style="min-height: 60vh">
<component <component
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
:ref="gridName" :ref="gridName"
@ -242,10 +242,6 @@ export default {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
pageOptions: {
useClient: true,
perPage: 13,
},
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,

View File

@ -1,43 +1,61 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<CommonPageTitle/>
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="center" no-gutters> <v-row align="center" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<!-- 사업장 --> <!-- 사업장 -->
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId" <component
:textCols="12" customClass="select-large" /> :is="'SelectBlocMstr'"
ref="SelectBlocMstr"
:parentPrgmId="myPrgmId"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'측정 Data 유형'" <component
dataKey="searchReadDataType" :sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }" :is="'selectCodeList'"
:addAll="true" :textCols="12" customClass="select-large" /> :parentPrgmId="myPrgmId"
:label="'측정 Data 유형'"
dataKey="searchReadDataType"
:sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
:addAll="true"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<component :is="'SelectReadObj'" :parentPrgmId="myPrgmId" :label="'측정대상'" <component
dataKey="searchReadObj" :sendParam="{ useFg: '1' }" :labelCols="12" :textCols="12" :is="'SelectReadObj'"
:addAll="true" customClass="select-large" /> :parentPrgmId="myPrgmId"
:label="'측정대상'"
dataKey="searchReadObj"
:sendParam="{ useFg: '1' }"
:addAll="true"
/>
</v-col>
<v-col :cols="3" class="text-right">
<BtnSearch @click="search" />
</v-col> </v-col>
</v-row> </v-row>
<v-row align="end" no-gutters> <v-row align="center" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'" dataKey="useFg" <component
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :textCols="12" :is="'selectCodeList'"
customClass="select-large" /> :parentPrgmId="myPrgmId"
:label="'사용여부'"
dataKey="useFg"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:addAll="true"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="6">
<InputText :parentPrgmId="myPrgmId" label="TAG ID" valueNm="tagId" :labelCols="12" <InputText
:textCols="12" :searchOption="true" customClass="input-large" /> :parentPrgmId="myPrgmId"
</v-col> label="TAG명"
<v-col :cols="3"> valueNm="tagNm"
<InputText :parentPrgmId="myPrgmId" label="TAG명" valueNm="tagNm" :labelCols="12" :labelCols="2"
:textCols="12" :searchOption="true" customClass="input-large" /> :textCols="9"
</v-col> :searchOption="true"
<v-col :cols="3" class="d-flex align-end justify-end text-right"> />
<BtnSearch @click="search" size="large" />
</v-col> </v-col>
</v-row> </v-row>
</v-card> </v-card>
@ -48,33 +66,63 @@
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title class="d-flex justify-space-between align-end"> <v-card-title class="d-flex justify-space-between align-end">
<span class="tit ft-size_20 ft-weight_600">TAG 정보</span> <span class="tit ft-size_20 ft-weight_600">TAG 정보</span>
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList" <Buttons
:btnActionsFnc="btnActions" /> :parentPrgmId="myPrgmId"
:bindingData="gridName"
:detailList="detailList"
:btnActionsFnc="btnActions"
/>
</v-card-title> </v-card-title>
<v-card-actions> <v-card-actions>
<div ref="gridParent" class="w100" style="height: calc(100vh - 400px)"> <div
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" ref="gridParent"
:parentPrgmId="myPrgmId" @getRowsData="getRowData" class="w100"
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" /> style="height: calc(100vh - 360px)"
>
<component
:ref="gridName"
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
:selectedRowDataWatchFlag="true"
/>
</div> </div>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-col> </v-col>
<v-col :cols="7" class=""> <v-col :cols="7" class="h100">
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title>TAG 상세</v-card-title> <v-card-title>TAG 상세</v-card-title>
<div class="px-5" style="height:calc(100% - 70px)"> <div class="px-5" style="height:calc(100% - 70px)">
<v-tabs v-model="tab"> <v-tabs v-model="tab">
<v-tab v-for="item in items" :key="item.id" :disabled="item.disabledFlag"> <v-tab
v-for="item in items"
:key="item.id"
:disabled="item.disabledFlag"
>
{{ item.name }} {{ item.name }}
</v-tab> </v-tab>
</v-tabs> </v-tabs>
<v-tabs-items v-model="tab" style="height: calc(100% - 65px);" class="py-6"> <v-tabs-items
v-model="tab"
style="height: calc(100% - 65px);"
class="py-6"
>
<v-tab-item v-for="(item, idx) in items" :key="item.id"> <v-tab-item v-for="(item, idx) in items" :key="item.id">
<component v-if="item.id == 'tagBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId" <component
:detailList="detailList" @gridEditingFinish="gridEditingFinish" /> v-if="item.id == 'tagBaseInfoTab'"
<TagAddInfoTab v-if="item.id == 'tagAddInfoTab'" :parentPrgmId="myPrgmId" :is="'Form'"
:innerTabGridInfo="{ tab, idx }" /> :parentPrgmId="myPrgmId"
:detailList="detailList"
@gridEditingFinish="gridEditingFinish"
/>
<TagAddInfoTab
v-if="item.id == 'tagAddInfoTab'"
:parentPrgmId="myPrgmId"
:innerTabGridInfo="{ tab, idx }"
/>
</v-tab-item> </v-tab-item>
</v-tabs-items> </v-tabs-items>
</div> </div>
@ -86,7 +134,6 @@
<script> <script>
import { mapState, mapMutations, mapActions } from 'vuex'; import { mapState, mapMutations, mapActions } from 'vuex';
import mixinGlobal from '@/mixin/global.js'; import mixinGlobal from '@/mixin/global.js';
import { resize } from '@/mixin/resize.js';
import BtnSearch from '~/components/common/button/BtnSearch'; import BtnSearch from '~/components/common/button/BtnSearch';
import Buttons from '~/components/common/button/Buttons'; import Buttons from '~/components/common/button/Buttons';
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr'; import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
@ -102,7 +149,7 @@ let myTitle;
// const myPrgmId = "PRG0051"; // const myPrgmId = "PRG0051";
let myPrgmId; let myPrgmId;
export default { export default {
mixins: [mixinGlobal, resize], mixins: [mixinGlobal],
async asyncData(context) { async asyncData(context) {
const myState = context.store.state; const myState = context.store.state;
// context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]); // context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
@ -172,19 +219,15 @@ export default {
}, },
chkBlocId() { chkBlocId() {
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
// this.search();
}, },
chkReadDataType() { chkReadDataType() {
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
// this.search();
}, },
chkReadObj() { chkReadObj() {
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
// this.search();
}, },
chkUseFg() { chkUseFg() {
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
// this.search();
}, },
}, },
async beforeCreate() { async beforeCreate() {
@ -254,16 +297,12 @@ export default {
this.gridInit(); this.gridInit();
}, },
gridInit() { gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 16; const gridHeight = this.$refs.gridParent.offsetHeight - 30;
const myOptions = { const myOptions = {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
scrollX: true,
header: {
height: 38,
},
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,
@ -277,21 +316,21 @@ export default {
header: 'TAG ID', header: 'TAG ID',
name: 'tagId', name: 'tagId',
width: 'auto', width: 'auto',
minWidth: 340, minWidth: 280,
align: 'left', align: 'left',
}, },
{ {
header: 'TAG 명', header: 'TAG 명',
name: 'tagNm', name: 'tagNm',
width: 'auto', width: 'auto',
minWidth: 220, minWidth: 140,
align: 'left', align: 'left',
}, },
{ {
header: '측정 값 유형', header: '측정 값 유형',
name: 'readDataTypeCd', name: 'readDataTypeCd',
width: 90, width: 100,
align: 'left', align: 'center',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
const newValue = _this.pageData.readDataTypeCdList.filter( const newValue = _this.pageData.readDataTypeCdList.filter(
@ -307,7 +346,7 @@ export default {
header: '측정대상', header: '측정대상',
name: 'readObjId', name: 'readObjId',
width: 100, width: 100,
align: 'left', align: 'center',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
const newValue = _this.pageData.readObjList.filter( const newValue = _this.pageData.readObjList.filter(
@ -324,7 +363,7 @@ export default {
header: '단위', header: '단위',
name: 'unitCd', name: 'unitCd',
width: 80, width: 80,
align: 'left', align: 'center',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
const newValue = _this.pageData.unitCdList.filter( const newValue = _this.pageData.unitCdList.filter(
@ -454,7 +493,6 @@ export default {
readObjId: this.pageData.searchReadObj, readObjId: this.pageData.searchReadObj,
useFg: this.pageData.useFg, useFg: this.pageData.useFg,
tagNmLike: this.pageData.tagNm, tagNmLike: this.pageData.tagNm,
tagIdLike: this.pageData.tagId,
}, },
}); });
} else { } else {
@ -713,8 +751,7 @@ export default {
}); });
this.$nextTick(() => { this.$nextTick(() => {
// this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
this.search();
}); });
} }
} else { } else {
@ -781,7 +818,6 @@ function isValidAlrmVal(obj) {
const defaultData = { const defaultData = {
/* 검색옵션 */ /* 검색옵션 */
tagId: '',
tagNm: '', tagNm: '',
blocId: '', blocId: '',
blocMstrList: [], blocMstrList: [],
@ -871,39 +907,30 @@ const myDetail = [
label: 'TAG ID', label: 'TAG ID',
valueNm: 'tagId', valueNm: 'tagId',
disabled: false, disabled: false,
iconShow: true,
cols: 6, cols: 6,
class: 'py-2 pr-4', class: 'py-2',
required: false, required: false,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'InputText', type: 'InputText',
label: 'TAG 명', label: 'TAG 명',
valueNm: 'tagNm', valueNm: 'tagNm',
disabled: false, disabled: false,
iconShow: true,
cols: 6, cols: 6,
class: 'py-2 pl-4', class: 'py-2',
required: false, required: false,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'SelectBox', type: 'SelectBox',
label: '측정 값 유형', label: '측정 값 유형',
valueNm: 'readDataTypeCd', valueNm: 'readDataTypeCd',
disabled: false, disabled: false,
iconShow: true,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2',
list: 'readDataTypeCdList', list: 'readDataTypeCdList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
required: true, required: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'SelectBox', type: 'SelectBox',
@ -911,14 +938,11 @@ const myDetail = [
valueNm: 'readObjId', valueNm: 'readObjId',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2',
list: 'readObjList', list: 'readObjList',
itemText: 'readObjNm', itemText: 'readObjNm',
itemValue: 'readObjId', itemValue: 'readObjId',
required: true, required: true,
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'InputText', type: 'InputText',
@ -926,11 +950,8 @@ const myDetail = [
valueNm: 'mgnf', valueNm: 'mgnf',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2',
required: true, required: true,
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'SelectBox', type: 'SelectBox',
@ -938,13 +959,10 @@ const myDetail = [
valueNm: 'unitCd', valueNm: 'unitCd',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2',
list: 'unitCdList', list: 'unitCdList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'InputText', type: 'InputText',
@ -952,10 +970,7 @@ const myDetail = [
valueNm: 'rangMin', valueNm: 'rangMin',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2',
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'InputText', type: 'InputText',
@ -963,10 +978,7 @@ const myDetail = [
valueNm: 'rangMax', valueNm: 'rangMax',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2',
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'InputText', type: 'InputText',
@ -974,10 +986,7 @@ const myDetail = [
valueNm: 'alrmHihi', valueNm: 'alrmHihi',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2',
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'InputText', type: 'InputText',
@ -985,10 +994,7 @@ const myDetail = [
valueNm: 'alrmHi', valueNm: 'alrmHi',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2',
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'InputText', type: 'InputText',
@ -996,10 +1002,7 @@ const myDetail = [
valueNm: 'alrmLo', valueNm: 'alrmLo',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2',
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'InputText', type: 'InputText',
@ -1007,10 +1010,7 @@ const myDetail = [
valueNm: 'alrmLolo', valueNm: 'alrmLolo',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2',
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'CheckBox', type: 'CheckBox',
@ -1018,11 +1018,8 @@ const myDetail = [
valueNm: 'totFg', valueNm: 'totFg',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'CheckBox', type: 'CheckBox',
@ -1030,12 +1027,9 @@ const myDetail = [
valueNm: 'useFg', valueNm: 'useFg',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: false, required: false,
iconShow: true,
labelCols: 12,
textCols: 12,
}, },
{ {
type: 'SelectBox', type: 'SelectBox',

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<CommonPageTitle/> <PageTitle/>
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -58,7 +58,7 @@
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" /> @sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
</div> </div>
</v-card-actions> </v-card-actions>
<div class="d-flex align-center justify-space-between"> <!-- <div class="d-flex align-center justify-space-between">
<pagination <pagination
id="pagination" id="pagination"
:total-count="totalCount" :total-count="totalCount"
@ -66,10 +66,10 @@
:limit="limit" :limit="limit"
@loadData="changeGrid" @loadData="changeGrid"
/> />
</div> </div> -->
</v-card> </v-card>
</v-col> </v-col>
<v-col :cols="7" class=""> <v-col :cols="7" class="h100">
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title>TAG 상세</v-card-title> <v-card-title>TAG 상세</v-card-title>
<div class="px-5" style="height:calc(100% - 70px)"> <div class="px-5" style="height:calc(100% - 70px)">
@ -107,6 +107,7 @@ import TagAddInfoTab from '@/components/pages/ems/TagInfo/TagAddInfoTab';
import Grid from '~/components/common/Grid'; import Grid from '~/components/common/Grid';
import Utility from '~/plugins/utility'; import Utility from '~/plugins/utility';
import pagination from '~/components/Pagination'; import pagination from '~/components/Pagination';
import PageTitle from "~/components/common/PageTitle";
let myTitle; let myTitle;
// const myPrgmId = "PRG0051"; // const myPrgmId = "PRG0051";
@ -139,12 +140,13 @@ export default {
TagAddInfoTab, TagAddInfoTab,
Grid, Grid,
pagination, pagination,
PageTitle
}, },
data() { data() {
return { return {
myPrgmId: myPrgmId, myPrgmId: myPrgmId,
gridName: 'rowGrid', gridName: 'rowGrid',
loadGrid: false, loadGrid: true,
tab: null, tab: null,
items: [ items: [
{ name: 'TAG 정보', id: 'tagBaseInfoTab', disabledFlag: false }, { name: 'TAG 정보', id: 'tagBaseInfoTab', disabledFlag: false },
@ -273,12 +275,16 @@ export default {
this.gridInit(); this.gridInit();
}, },
gridInit() { gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 16; const gridHeight = this.$refs.gridParent.offsetHeight - 180;
const myOptions = { const myOptions = {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
pageOptions: {
useClient: true,
perPage: 10,
},
scrollX: true, scrollX: true,
header: { header: {
height: 38, height: 38,
@ -521,16 +527,16 @@ export default {
//rowKey: 0, //rowKey: 0,
rowKey: rowKey:
this.pageData.rowGridSelectKey == '' || this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null this.pageData.rowGridSelectKey == null
? 0 ? 0
: this.pageData.rowGridSelectKey == : this.pageData.rowGridSelectKey ==
this.$refs[this.gridName].getData().length - 1 this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey ? this.pageData.rowGridSelectKey
: 0, : 0,
columnName: 'tagId', columnName: 'tagId',
setScroll: true, setScroll: true,
}); });
} catch (error) {} } catch (error) { }
// this.$refs[this.gridName].focus({ // this.$refs[this.gridName].focus({
// rowKey: 0, // rowKey: 0,
// columnName: "tagId", // columnName: "tagId",
@ -767,7 +773,7 @@ export default {
gridEditingFinish(data) { gridEditingFinish(data) {
this.$refs[this.gridName].editingFinish(data); this.$refs[this.gridName].editingFinish(data);
}, },
changeGrid: async function(pageNum, limit) { changeGrid: async function (pageNum, limit) {
this.page = pageNum; this.page = pageNum;
this.limit = limit; this.limit = limit;
@ -811,9 +817,9 @@ function isValidAlrmVal(obj) {
if (Number(obj[keyList[i]]) >= Number(obj[keyList[j]])) { if (Number(obj[keyList[i]]) >= Number(obj[keyList[j]])) {
alert( alert(
nameList[j] + nameList[j] +
'값은 ' + '값은 ' +
nameList[i] + nameList[i] +
'값보다 큰 숫자를 입력해야 합니다.', '값보다 큰 숫자를 입력해야 합니다.',
); );
return false; return false;
} }

View File

@ -1,7 +1,6 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<common-page-title /> <v-row ref="searchFilter">
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="center" no-gutters> <v-row align="center" no-gutters>
@ -556,7 +555,7 @@ export default {
header: { header: {
height: 37, height: 37,
}, },
rowHeight: 37, rowHeight: 'auto',
// pageOptions: { // pageOptions: {

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
<template> <template>
<div ref="mainDiv" class="l-layout"> <div ref="mainDiv" class="l-layout">
<CommonPageTitle /> <PageTitle text="냉동기" />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -180,7 +180,7 @@ export default {
contentData: {}, contentData: {},
loadChart: false, loadChart: false,
testFlag: false, testFlag: true,
}; };
}, },
computed: { computed: {
@ -270,14 +270,15 @@ export default {
} }
}, },
async getEnrgUseTotSummData() { async getEnrgUseTotSummData() {
var res = await this.postApiReturn({ // var res = await this.postApiReturn({
apiKey: "selectEnrgUseTotSumm", // apiKey: "selectEnrgUseTotSumm",
resKey: "data", // resKey: "data",
sendParam: { // sendParam: {
fromDt: this.pageData.fromDt, // fromDt: this.pageData.fromDt,
eqpmKind: this.selectValue01, // eqpmKind: this.selectValue01,
}, // },
}); // });
let res = [];
if (this.testFlag == true) { if (this.testFlag == true) {
res = [ res = [

View File

@ -4,7 +4,7 @@
<v-avatar size="12" :style="{ backgroundColor: 'currentColor' }"></v-avatar> <v-avatar size="12" :style="{ backgroundColor: 'currentColor' }"></v-avatar>
에너지 사용량 실적 에너지 사용량 실적
</h1> --> </h1> -->
<CommonPageTitle /> <PageTitle text="에너지 사용량 실적" />
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
@ -255,8 +255,9 @@ export default {
}, },
methods: { methods: {
async init() { async init() {
await this.getSelectValueList(); // await this.getSelectValueList();
await this.setQueryParams();
// await this.setQueryParams();
this.gridInit(); this.gridInit();
await this.getGridData(); await this.getGridData();
@ -487,41 +488,131 @@ export default {
this.loadGrid = false; this.loadGrid = false;
this.enrgUseMainIdxDesc = []; this.enrgUseMainIdxDesc = [];
var apiKey = null; var apiKey = 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,
}; // };
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";
} else if (this.pageData.cmCycle == "CYC_MONTH") { // } else if (this.pageData.cmCycle == "CYC_MONTH") {
apiKey = "selectMonthlyEnrgUseMainIdx"; // apiKey = "selectMonthlyEnrgUseMainIdx";
} // }
var res = await this.postApiReturn({ // var res = await this.postApiReturn({
apiKey: apiKey, // apiKey: apiKey,
resKey: "eqpmIndMntrData", // resKey: "eqpmIndMntrData",
sendParam: params, // sendParam: params,
}); // });
this.enrgUseMainIdxDesc = await this.postApiReturn({ // this.enrgUseMainIdxDesc = await this.postApiReturn({
apiKey: "selectEnrgUseMainIdxDesc", // apiKey: "selectEnrgUseMainIdxDesc",
resKey: "eqpmIndMntrData", // resKey: "eqpmIndMntrData",
sendParam: { // sendParam: {
eqpmGrpId: this.selectValue03, // eqpmGrpId: this.selectValue03,
// },
// });
var newRes = [
{
no: 1,
fabId: "FAB001",
fabNm: "서울FAB",
eqpmGrpId: "GRP01",
eqpmGrpNm: "조립라인",
eqpmId: "EQ001",
eqpmNm: "설비A",
planVal: 1000,
usedVal: 950,
effcRt: "95%",
gd01: 88,
gd02: 90,
gd03: 85,
gd04: 87,
gd05: 89,
gd06: 86,
gd07: 90,
gd08: 88,
gd09: 87,
gd10: 89,
}, },
}); {
no: 2,
fabId: "FAB002",
fabNm: "부산FAB",
eqpmGrpId: "GRP02",
eqpmGrpNm: "검사라인",
eqpmId: "EQ002",
eqpmNm: "설비B",
planVal: 1200,
usedVal: 1100,
effcRt: "91.7%",
gd01: 85,
gd02: 84,
gd03: 86,
gd04: 83,
gd05: 82,
gd06: 84,
gd07: 85,
gd08: 86,
gd09: 87,
gd10: 88,
},
{
no: 3,
fabId: "FAB003",
fabNm: "대전FAB",
eqpmGrpId: "GRP03",
eqpmGrpNm: "포장라인",
eqpmId: "EQ003",
eqpmNm: "설비C",
planVal: 900,
usedVal: 870,
effcRt: "96.7%",
gd01: 90,
gd02: 91,
gd03: 89,
gd04: 88,
gd05: 90,
gd06: 91,
gd07: 92,
gd08: 90,
gd09: 89,
gd10: 91,
},
{
no: 4,
fabId: "FAB004",
fabNm: "광주FAB",
eqpmGrpId: "GRP04",
eqpmGrpNm: "테스트라인",
eqpmId: "EQ004",
eqpmNm: "설비D",
planVal: 1100,
usedVal: 1050,
effcRt: "95.5%",
gd01: 87,
gd02: 88,
gd03: 86,
gd04: 85,
gd05: 86,
gd06: 87,
gd07: 88,
gd08: 89,
gd09: 90,
gd10: 91,
},
];
var newRes = []; // for (var i = 0; i < res.length; i++) {
for (var i = 0; i < res.length; i++) { // newRes.push({
newRes.push({ // ...res[i],
...res[i], // no: i + 1,
no: i + 1, // });
}); // }
}
this.setGridData({ this.setGridData({
gridKey: this.gridName, gridKey: this.gridName,
@ -661,9 +752,141 @@ const defaultData = {
}, },
fromDt: Utility.setFormatDate(new Date(), "YYYYMM"), // 조회 시작일 fromDt: Utility.setFormatDate(new Date(), "YYYYMM"), // 조회 시작일
grid01: { grid01: {
data: [], data: [
column: [], {
option: {}, no: 1,
fabId: "FAB001",
fabNm: "서울FAB",
eqpmGrpId: "GRP01",
eqpmGrpNm: "조립라인",
eqpmId: "EQ001",
eqpmNm: "설비A",
planVal: 1000,
usedVal: 950,
effcRt: "95%",
gd01: 88,
gd02: 90,
gd03: 85,
gd04: 87,
gd05: 89,
gd06: 86,
gd07: 90,
gd08: 88,
gd09: 87,
gd10: 89,
},
{
no: 2,
fabId: "FAB002",
fabNm: "부산FAB",
eqpmGrpId: "GRP02",
eqpmGrpNm: "검사라인",
eqpmId: "EQ002",
eqpmNm: "설비B",
planVal: 1200,
usedVal: 1100,
effcRt: "91.7%",
gd01: 85,
gd02: 84,
gd03: 86,
gd04: 83,
gd05: 82,
gd06: 84,
gd07: 85,
gd08: 86,
gd09: 87,
gd10: 88,
},
{
no: 3,
fabId: "FAB003",
fabNm: "대전FAB",
eqpmGrpId: "GRP03",
eqpmGrpNm: "포장라인",
eqpmId: "EQ003",
eqpmNm: "설비C",
planVal: 900,
usedVal: 870,
effcRt: "96.7%",
gd01: 90,
gd02: 91,
gd03: 89,
gd04: 88,
gd05: 90,
gd06: 91,
gd07: 92,
gd08: 90,
gd09: 89,
gd10: 91,
},
{
no: 4,
fabId: "FAB004",
fabNm: "광주FAB",
eqpmGrpId: "GRP04",
eqpmGrpNm: "테스트라인",
eqpmId: "EQ004",
eqpmNm: "설비D",
planVal: 1100,
usedVal: 1050,
effcRt: "95.5%",
gd01: 87,
gd02: 88,
gd03: 86,
gd04: 85,
gd05: 86,
gd06: 87,
gd07: 88,
gd08: 89,
gd09: 90,
gd10: 91,
},
],
column: [
{ header: "NO", name: "no", align: "center" },
{ header: "fabId", name: "fabId", hidden: true },
{ header: "FAB", name: "fabNm", align: "left" },
{ header: "eqpmGrpId", name: "eqpmGrpId", hidden: true },
{ header: "설비그룹", name: "eqpmGrpNm", align: "left" },
{ header: "eqpmId", name: "eqpmId", hidden: true },
{ header: "설비명", name: "eqpmNm", align: "left" },
{ header: "계획량", name: "planVal", align: "right" },
{ header: "사용량", name: "usedVal", align: "right" },
{ header: "KPI", name: "effcRt", align: "right" },
{ header: "지표1", name: "gd01", align: "right" },
{ header: "지표2", name: "gd02", align: "right" },
{ header: "지표3", name: "gd03", align: "right" },
{ header: "지표4", name: "gd04", align: "right" },
{ header: "지표5", name: "gd05", align: "right" },
{ header: "지표6", name: "gd06", align: "right" },
{ header: "지표7", name: "gd07", align: "right" },
{ header: "지표8", name: "gd08", align: "right" },
{ header: "지표9", name: "gd09", align: "right" },
{ header: "지표10", name: "gd10", align: "right" },
],
option: {
header: {
height: 65,
complexColumns: [
{
header: "주요지표",
name: "complexColumn01",
childNames: [
"gd01",
"gd02",
"gd03",
"gd04",
"gd05",
"gd06",
"gd07",
"gd08",
"gd09",
"gd10",
],
},
],
},
},
}, },
}; };

View File

@ -253,9 +253,8 @@ export class NewCustomRenderer {
} else { } else {
el.type = 'text'; el.type = 'text';
$(el).addClass('tui-grid-cell-content w100'); $(el).addClass('tui-grid-cell-content');
$(el).css('text-align', 'center'); $(el).css('text-align', 'center');
$(el).css('border', '0');
} }
this.render(props); this.render(props);
if(!this.disabled){ if(!this.disabled){
@ -315,8 +314,6 @@ export class NewCustomEditor {
this.rowKey = rowKey; this.rowKey = rowKey;
this.columnInfo = columnInfo; this.columnInfo = columnInfo;
this.grid = grid; this.grid = grid;
const divEl = document.createElement('div');
$(divEl).css('text-align', 'center');
const el = document.createElement('input'); const el = document.createElement('input');
if ( if (
props.grid.store.data.rawData[props.rowKey].addInfoDataKind == 'FG' props.grid.store.data.rawData[props.rowKey].addInfoDataKind == 'FG'
@ -367,19 +364,15 @@ export class NewCustomEditor {
$(el).addClass('tui-grid-content-text'); $(el).addClass('tui-grid-content-text');
} }
divEl.append(el);
// console.log('props: %o', props); // console.log('props: %o', props);
// console.log('el: %o', el); // console.log('el: %o', el);
this.el = el; this.el = el;
this.divEl = divEl;
this.render(props); this.render(props);
} }
getElement() { getElement() {
return this.divEl; return this.el;
} }
getValue() { getValue() {
@ -396,9 +389,9 @@ export class NewCustomEditor {
} }
mounted() { mounted() {
// if (this.el.type == 'checkbox') { if (this.el.type == 'checkbox') {
// $(this.el.parentElement).css('text-align', 'center'); $(this.el.parentElement).css('text-align', 'center');
// } }
this.el.select(); this.el.select();
} }
} }

View File

@ -669,8 +669,7 @@ const INIT_URL_STATE = {
// prgmId : PRG0052 과거 검침 데이터 조회 // prgmId : PRG0052 과거 검침 데이터 조회
selectTagRawDataByQuarter: selectTagRawDataByQuarter:
'ems/base/PastRsltDataReadCtr/selectTagRawDataByQuarter', 'ems/base/PastRsltDataReadCtr/selectTagRawDataByQuarter',
selectTagRawDataByQuarterPageTotal:
'ems/base/PastRsltDataReadCtr/selectTagRawDataByQuarterPageTotal',
// prgmId : PRG4107 개인화 대시보드 // prgmId : PRG4107 개인화 대시보드
selectIndvWidgetList: 'ems/base/DashboardHfemsCtr/selectIndvWidgetList', selectIndvWidgetList: 'ems/base/DashboardHfemsCtr/selectIndvWidgetList',
selectEnergyUseReadHourAddup: selectEnergyUseReadHourAddup: