Compare commits
23 Commits
dev-dungtv
...
dev-luannv
Author | SHA1 | Date | |
---|---|---|---|
3ae3ff8167 | |||
881a5ceb2d | |||
e4074201e4 | |||
a557130c15 | |||
34d5a1eeb7 | |||
3c249aa476 | |||
f9643f46a0 | |||
056d1a1e17 | |||
a58062a7b7 | |||
44077048e6 | |||
e32f03c9ae | |||
58bb7f915c | |||
a85f9f98f6 | |||
791b291c30 | |||
e6e1703942 | |||
9b89a5625b | |||
e600089f7e | |||
adbf220770 | |||
51b59bf4c9 | |||
b2e50837fd | |||
88b59f5f33 | |||
1faf49056d | |||
e9ab3faa51 |
@ -434,7 +434,7 @@ a {
|
||||
.v-application.#{$theme}-mode {
|
||||
min-width: 1000px;
|
||||
|
||||
.head-logo{
|
||||
.head-logo {
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
@ -474,7 +474,7 @@ a {
|
||||
|
||||
.header {
|
||||
background-color: map-deep-get($config, #{$theme}, "header-backgroud");
|
||||
border-color: #D3D6EA;
|
||||
border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-header-border");
|
||||
}
|
||||
|
||||
.btn-header {
|
||||
@ -485,9 +485,11 @@ a {
|
||||
|
||||
.container--fluid {
|
||||
background-color: map-deep-get($config, #{$theme}, "container-fluid");
|
||||
|
||||
.menu-container {
|
||||
height:calc(100vh - 60px);
|
||||
overflow-y: auto;
|
||||
border-right: 1px solid map-deep-get($config, #{$theme}, "v-sidebar-border") ;
|
||||
}
|
||||
}
|
||||
|
||||
@ -950,15 +952,24 @@ a {
|
||||
"v-calendar-weekday-backgroundColor"
|
||||
);
|
||||
border-right: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||
border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||
border-top: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||
color: map-deep-get($config, #{$theme}, "v-calendar-weekday-color");
|
||||
|
||||
&:nth-of-type(1) {
|
||||
color: map-deep-get($color, "week", "sun");
|
||||
// color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "v-calendar-is-sun"
|
||||
// );
|
||||
border-left: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||
}
|
||||
|
||||
&:nth-of-type(7) {
|
||||
color: map-deep-get($color, "week", "sat");
|
||||
}
|
||||
// &:nth-of-type(7) {
|
||||
// color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "v-calendar-is-sat"
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
>.vc-day {
|
||||
@ -967,22 +978,33 @@ a {
|
||||
|
||||
.day-hldyNm,
|
||||
.day-label.is-holiday {
|
||||
color: map-deep-get($color, "week", "sun");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sun"
|
||||
);
|
||||
}
|
||||
|
||||
&.weekday-1 {
|
||||
|
||||
.day-label,
|
||||
.day-hldyNm {
|
||||
color: map-deep-get($color, "week", "sun");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sun"
|
||||
);
|
||||
}
|
||||
|
||||
border-left: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||
}
|
||||
|
||||
&.weekday-7 {
|
||||
|
||||
.day-label,
|
||||
.day-hldyNm {
|
||||
color: map-deep-get($color, "week", "sat");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sat"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1184,11 +1206,17 @@ a {
|
||||
}
|
||||
|
||||
th.tui-sun {
|
||||
color: map-deep-get($color, "week", "sun");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sun"
|
||||
);
|
||||
}
|
||||
|
||||
th.tui-sat {
|
||||
color: map-deep-get($color, "week", "sat");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sat"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1204,11 +1232,17 @@ a {
|
||||
}
|
||||
|
||||
td.tui-calendar-sun {
|
||||
color: map-deep-get($color, "week", "sun");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sun"
|
||||
);
|
||||
}
|
||||
|
||||
td.tui-calendar-sat {
|
||||
color: map-deep-get($color, "week", "sat");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sat"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1322,11 +1356,12 @@ a {
|
||||
color: #46c0ff;
|
||||
}
|
||||
}
|
||||
|
||||
.v-btn {
|
||||
background-color: transparent !important;
|
||||
color: map-deep-get($config, #{$theme}, "btn-header-select-color") !important;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
[hover-tooltip] {
|
||||
|
@ -109,6 +109,15 @@
|
||||
);
|
||||
}
|
||||
|
||||
.grid-toggle-section{
|
||||
.tui-grid-rside-area{
|
||||
.tui-grid-body-area {
|
||||
height: auto !important;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid {
|
||||
&-table {
|
||||
border: 1px solid;
|
||||
@ -278,8 +287,8 @@
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
height: 11px;
|
||||
width: 11px;
|
||||
height: 8px;
|
||||
width: 8px;
|
||||
border-radius: 50%;
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
|
@ -171,8 +171,8 @@
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-left: 28px;
|
||||
margin: 10px;
|
||||
padding-left: 0;
|
||||
margin: 5px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.custom-radio input[type="radio"] {
|
||||
@ -183,13 +183,13 @@
|
||||
/* Custom radio appearance */
|
||||
.radio-mark {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
left: -8px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
height: 14px;
|
||||
width: 14px;
|
||||
// background-color: white;
|
||||
border: 2px solid #ccc;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 50%;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
@ -32,8 +32,8 @@ $color: (
|
||||
"black": ("0": #000,
|
||||
"1": #111),
|
||||
"white": ("0": #fff),
|
||||
"week": ("sun": #fb5a83,
|
||||
"sat": #2d8cf6)
|
||||
"week": ("sun": #FF4D4F,
|
||||
"sat": #597EF7)
|
||||
);
|
||||
|
||||
$config: (
|
||||
@ -96,12 +96,14 @@ $config: (
|
||||
v-input-disabled-backgroundColor:rgba(255, 255, 255, 0.08),
|
||||
v-input-disabled-color: rgba(255, 255, 255, 0.5),
|
||||
v-select-label-color: rgba(255, 255, 255, 0.85),
|
||||
v-calendar-weekday-backgroundColor: #383f5d,
|
||||
v-calendar-weekday-color: #fff,
|
||||
v-calendar-weekday-border-color: rgba(255, 255, 255, 0.1),
|
||||
v-calendar-day-color: #fff,
|
||||
v-calendar-day-in-not-month-color: rgba(255, 255, 255, 0.05),
|
||||
v-calendar-is-today-background-color: #2d4571,
|
||||
v-calendar-weekday-backgroundColor: #FFFFFF0A,
|
||||
v-calendar-weekday-color: #FFFFFFD9,
|
||||
v-calendar-weekday-border-color: #FFFFFF0F,
|
||||
v-calendar-day-color: #FFFFFFD9,
|
||||
v-calendar-day-in-not-month-color: #FFFFFF14,
|
||||
v-calendar-is-today-background-color: #0A224F,
|
||||
v-calendar-is-sat: #263EA0,
|
||||
v-calendar-is-sun:#A61D24,
|
||||
tui-grid-title-color: #FFFFFFD9,
|
||||
tui-grid-header-backgroundColor: #2a2b2d,
|
||||
tui-grid-header-color: #FFFFFFD9,
|
||||
@ -172,6 +174,8 @@ $config: (
|
||||
btn-header-select-bg: #1F1F1F,
|
||||
btn-header-select-color:#FFFFFFD9,
|
||||
subtitle-tab: #FFFFFFA6,
|
||||
v-header-border: #424242,
|
||||
v-sidebar-border: #303030,
|
||||
),
|
||||
light: (w-g5: $--color-gray_555,
|
||||
g5-w: $--color-white,
|
||||
@ -234,12 +238,14 @@ $config: (
|
||||
v-input-disabled-backgroundColor: rgba(0, 0, 0, 0.04),
|
||||
v-input-disabled-color: rgba(0, 0, 0, 0.25),
|
||||
v-select-label-color: rgba(0, 0, 0, 0.88),
|
||||
v-calendar-weekday-backgroundColor: #e0e0e0,
|
||||
v-calendar-weekday-color: #111,
|
||||
v-calendar-weekday-border-color: #d4d4d4,
|
||||
v-calendar-day-color: #111,
|
||||
v-calendar-day-in-not-month-color: #f8f8f8,
|
||||
v-calendar-is-today-background-color: #e3eaf3,
|
||||
v-calendar-weekday-backgroundColor: #00000005,
|
||||
v-calendar-weekday-color: #000000E0,
|
||||
v-calendar-weekday-border-color: #0000000F,
|
||||
v-calendar-day-color: #000000E0,
|
||||
v-calendar-day-in-not-month-color: #0000000A,
|
||||
v-calendar-is-today-background-color: #E6F4FF,
|
||||
v-calendar-is-sat: #597EF7,
|
||||
v-calendar-is-sun:#FF4D4F,
|
||||
tui-grid-title-color: #000000E0,
|
||||
tui-grid-header-backgroundColor: #fafafa, //#e0e0e0,
|
||||
tui-grid-header-color: rgba(0, 0, 0, 0.88),
|
||||
@ -308,5 +314,7 @@ $config: (
|
||||
btn-header-select-color:#1F1F1F,
|
||||
btn-header-select-bg:#FFFFFF,
|
||||
subtitle-tab: #000000A6,
|
||||
v-header-border: #D9D9D9,
|
||||
v-sidebar-border: #F0F0F0,
|
||||
),
|
||||
);
|
@ -3,45 +3,28 @@
|
||||
<div class="custom-vc-calender-title text-center" v-if="headerVisible">
|
||||
<span>{{ selectedYear }}년 {{ selectedMonth }}월</span>
|
||||
</div>
|
||||
<vc-calendar
|
||||
ref="myCalendar"
|
||||
:attributes="calendarAttributes"
|
||||
class="custom-calendar"
|
||||
>
|
||||
<vc-calendar locale="ko-KR" ref="myCalendar" :attributes="calendarAttributes" class="custom-calendar">
|
||||
<!-- disable-page-swipe
|
||||
is-expanded -->
|
||||
<template v-slot:day-content="{ day, attributes }">
|
||||
<div class="plusButton" style="overflow:auto">
|
||||
<!-- <p class="plusButton mr-1" >+</p> -->
|
||||
<span
|
||||
:class="['day-label', { 'is-holiday': hldyValues(day.day) }]"
|
||||
@click="addPlan(day.year, day.month, day.day)"
|
||||
>{{ day.day }}</span
|
||||
>
|
||||
<span :class="['day-label', { 'is-holiday': hldyValues(day.day) }]"
|
||||
@click="addPlan(day.year, day.month, day.day)">{{ day.day }}</span>
|
||||
<span v-for="attr in attributes" :key="attr.key" class="day-hldyNm">
|
||||
{{ attr.customData.title }}
|
||||
</span>
|
||||
<div class="">
|
||||
<p
|
||||
v-for="attr in attributes"
|
||||
:key="attr.key"
|
||||
:class="attr.customData.planColor"
|
||||
@click="updatePlan(attr.customData.planSeq)"
|
||||
>
|
||||
<p v-for="attr in attributes" :key="attr.key" :class="attr.customData.planColor"
|
||||
@click="updatePlan(attr.customData.planSeq)">
|
||||
{{ attr.customData.planTitle }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</vc-calendar>
|
||||
<component
|
||||
ref="planPop"
|
||||
:is="'PlanPop'"
|
||||
v-show="false"
|
||||
:detailList="detailList"
|
||||
:label="planLabel"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
/>
|
||||
<component ref="planPop" :is="'PlanPop'" v-show="false" :detailList="detailList" :label="planLabel"
|
||||
:parentPrgmId="parentPrgmId" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@ -63,6 +46,10 @@ export default {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
showTitle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
@ -122,7 +109,7 @@ export default {
|
||||
planColor:
|
||||
// item.endDt < Utility.setFormatDate(new Date(), 'YYYY-MM-DD')
|
||||
// ? 'grey':
|
||||
item.planColor,
|
||||
item.planColor,
|
||||
},
|
||||
dates: new Date(yy, mm, dd),
|
||||
});
|
||||
@ -166,15 +153,14 @@ export default {
|
||||
this.$refs['planPop'].strtDt = '';
|
||||
this.$refs['planPop'].endDt = '';
|
||||
this.$refs['planPop'].addPlanData = {
|
||||
year : year,
|
||||
month : month,
|
||||
day : day
|
||||
year: year,
|
||||
month: month,
|
||||
day: day
|
||||
}
|
||||
// BEGIN TEST UI
|
||||
// this.$refs['planPop'].blocId = this.pageData.blocMstrList[
|
||||
// this.pageData.blocId
|
||||
// ].blocId;
|
||||
// END TEST UI
|
||||
|
||||
this.$refs['planPop'].blocId = this.pageData.blocMstrList[
|
||||
this.pageData.blocId
|
||||
].blocId;
|
||||
this.$refs['planPop'].dialog = true;
|
||||
},
|
||||
updatePlan(val) {
|
||||
@ -188,7 +174,7 @@ export default {
|
||||
this.$refs['planPop'].dialog = true;
|
||||
},
|
||||
},
|
||||
mounted() {},
|
||||
mounted() { },
|
||||
};
|
||||
const myDetail = [];
|
||||
</script>
|
||||
@ -196,36 +182,44 @@ const myDetail = [];
|
||||
<style lang="scss" scoped>
|
||||
@import '@/assets/scss/var.scss';
|
||||
@import '@/assets/scss/mixin.scss';
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.custom-vc-calender {
|
||||
&-title {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
.custom-calendar.vc-container {
|
||||
width: 100%;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.vc-header,
|
||||
.vc-arrows-container {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.vc-weeks {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
padding: 0;
|
||||
> div {
|
||||
|
||||
>div {
|
||||
flex: 1 0 calc(100% / 7);
|
||||
}
|
||||
}
|
||||
|
||||
.vc-weekday {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -233,6 +227,7 @@ const myDetail = [];
|
||||
height: 36px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.vc-day {
|
||||
height: 10.889vh;
|
||||
min-height: auto;
|
||||
@ -241,6 +236,7 @@ const myDetail = [];
|
||||
font-size: 1rem;
|
||||
line-height: 1.235;
|
||||
}
|
||||
|
||||
.day-hldyNm {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@ -251,25 +247,27 @@ const myDetail = [];
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
> div {
|
||||
>div {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
padding: 10px;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.vc-day.is-not-in-month {
|
||||
* {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
}
|
||||
.plusButton:hover > span:first-child {
|
||||
|
||||
.plusButton:hover>span:first-child {
|
||||
font-weight: bolder;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.red {
|
||||
//background-color: rgba(229,62,62,var(--bg-opacity));
|
||||
background-color: #e53e3e !important;
|
||||
background-color: #FF4D4F !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -277,9 +275,9 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.blue {
|
||||
//background-color: rgba(66,153,225,var(--bg-opacity));
|
||||
background-color: #4299e1 !important;
|
||||
background-color: #597EF7 !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -287,9 +285,9 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.puple {
|
||||
//background-color: rgba(102,126,234,var(--bg-opacity));
|
||||
background-color: #667eea !important;
|
||||
background-color: #9254DE !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -297,9 +295,9 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.green {
|
||||
//background-color: rgba(56,178,172,var(--bg-opacity));
|
||||
background-color: #38b2ac !important;
|
||||
background-color: #73D13D !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -308,9 +306,9 @@ const myDetail = [];
|
||||
margin-bottom: 0.25rem;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.orange {
|
||||
//background-color: rgba(237,137,54,var(--bg-opacity));
|
||||
background-color: #ed8936 !important;
|
||||
background-color: #FFA940 !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -318,9 +316,9 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.pink {
|
||||
//background-color: rgba(237,100,166,var(--bg-opacity));
|
||||
background-color: #ed64a6 !important;
|
||||
background-color: #F759AB !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -328,8 +326,8 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.grey {
|
||||
background-color: #6d6d6d;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
|
@ -9,7 +9,7 @@
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<div class="datepicker-container">
|
||||
<div :class="['datepicker-container', customClass]" >
|
||||
<v-text-field
|
||||
id="startpicker"
|
||||
ref="startpicker"
|
||||
@ -79,6 +79,10 @@ export default {
|
||||
require: false,
|
||||
default: 8,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div class="d-flex flex-column justify-center align-center">
|
||||
<div class="d-flex flex-row justify-center align-center" style="gap: 12px">
|
||||
<!--<v-btn icon tile :ripple="false" @click="btnActionsFnc('addLeftToRight')">
|
||||
<v-icon>mdi-chevron-right</v-icon>
|
||||
</v-btn> -->
|
||||
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost icon="right" >
|
||||
<a-button @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost icon="up" >
|
||||
</a-button>
|
||||
|
||||
<!--<v-btn
|
||||
@ -15,7 +15,7 @@
|
||||
>
|
||||
<v-icon>mdi-chevron-left</v-icon>
|
||||
</v-btn> -->
|
||||
<a-button class="mt-2" @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost icon="left">
|
||||
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost icon="down">
|
||||
</a-button>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -80,11 +80,11 @@
|
||||
</div> -->
|
||||
|
||||
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
||||
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)"
|
||||
class="mr-2">닫기</a-button>
|
||||
<a-button v-if="item.closeBtnFg || false" :ripple="false" type="danger" ghost danger
|
||||
|
||||
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
|
||||
<a-button v-if="item.closeBtnFg || false" :ripple="false" type="danger" ghost danger
|
||||
@click="deleteBtnAction($event)" class="mr-2">삭제</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="setUpdate($event)" >확인</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -156,23 +156,7 @@ export default {
|
||||
return {
|
||||
dialog: false,
|
||||
|
||||
loadGrid: true,
|
||||
dataPathPopExample: {
|
||||
"rowGrid": {
|
||||
data: [
|
||||
{
|
||||
'calcProc': 'AVG_CNT2',
|
||||
'argCnt': '2',
|
||||
'calcDesc': '두개 변수에 대한 평균'
|
||||
|
||||
}
|
||||
],
|
||||
column: [
|
||||
{ header: '계산코드', name: 'calcProc', width: 150 },
|
||||
{ header: '아규먼트갯수', name: 'argCnt', align: 'center', width: 100 },
|
||||
]
|
||||
}
|
||||
},
|
||||
loadGrid: false,
|
||||
grid_01: 'grid_01',
|
||||
myModalKey: 'egrpPysclQtyPop',
|
||||
modalDataKey: 'pyscModalData',
|
||||
@ -337,13 +321,6 @@ export default {
|
||||
this.selectValueList01 = [];
|
||||
this.selectValue01 = null;
|
||||
}
|
||||
|
||||
// this.selectValueList01 = [
|
||||
// { label: '냉동기고온', value: '냉동기고온' },
|
||||
// { label: '냉동기저온', value: '냉동기저온' },
|
||||
// { label: '공조기', value: '공조기' },
|
||||
// { label: '보일러', value: '보일러' }
|
||||
// ];
|
||||
},
|
||||
search() {
|
||||
this.getGridData();
|
||||
@ -365,7 +342,7 @@ export default {
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: Object.assign(
|
||||
// Utility.defaultGridOption(this.$refs.modalGridParent.offsetHeight - 60, myOptions),
|
||||
// Utility.defaultGridOption(100, myOptions),
|
||||
Utility.defaultGridOption(400, myOptions),
|
||||
myOptions,
|
||||
),
|
||||
});
|
||||
@ -423,6 +400,15 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
// res = [
|
||||
// {
|
||||
// 'pysclQtyId' : 'PYSCL00001',
|
||||
// 'pysclQtyCd' : 'AMP_1A',
|
||||
// 'pysclQtyNm' : '회로1 전류A',
|
||||
// 'pysclQtyTpNm' : 'TAG'
|
||||
|
||||
// }
|
||||
// ]
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.grid_01,
|
||||
@ -477,10 +463,10 @@ export default {
|
||||
this.dialog = flag;
|
||||
},
|
||||
async dialogOpenCloseEvent(val) {
|
||||
// await this.setSelectValueList01();
|
||||
// if (!this.myBindingData) {
|
||||
// return alert('그리드를 먼저 선택해주세요.');
|
||||
// }
|
||||
await this.setSelectValueList01();
|
||||
if (!this.myBindingData) {
|
||||
return alert('그리드를 먼저 선택해주세요.');
|
||||
}
|
||||
this.dialog = !val;
|
||||
},
|
||||
deleteBtnAction(v) {
|
||||
|
@ -5,7 +5,7 @@
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ option.labelContent }}
|
||||
|
@ -43,7 +43,10 @@
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-0 pl-2">
|
||||
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
|
||||
<div class="startpicker-container2">
|
||||
<component :parentPrgmId="parentPrgmId" :is="'SelectBoxTime'" ref="SelectBox1"
|
||||
:propsValue="selectTimeValue1" :itemList="selectTimeValueList1" :minInterval="selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
|
||||
" @update:propsValue="selectTimeValue1 = $event" />
|
||||
<!-- <div class="startpicker-container2">
|
||||
<v-text-field id="startpicker2" ref="startpicker2" v-model="strtDt"
|
||||
:class="'v-input__custom'" :hide-details="true" readonly outlined>
|
||||
<template #append>
|
||||
@ -53,7 +56,7 @@
|
||||
<div ref="startpicker-container2" id="startpicker-container2"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</div>
|
||||
</div> -->
|
||||
</v-col>
|
||||
<!-- <v-col :cols="2">
|
||||
<vue-numeric-input v-model="strtHh" :min="0" :max="23" controls-type="updown"
|
||||
@ -91,17 +94,9 @@
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="pl-2">
|
||||
<div class="startpicker-container3">
|
||||
<v-text-field id="startpicker3" ref="startpicker3" v-model="endDt"
|
||||
:class="'v-input__custom'" :hide-details="true" readonly outlined>
|
||||
<template #append>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container3" id="startpicker-container3"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</div>
|
||||
<component :parentPrgmId="parentPrgmId" :is="'SelectBoxTime'" ref="SelectBox2"
|
||||
:propsValue="selectTimeValue2" :itemList="selectTimeValueList2" :minInterval="selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
|
||||
" @update:propsValue="selectTimeValue2 = $event" />
|
||||
</v-col>
|
||||
<!-- <v-col :cols="2">
|
||||
<vue-numeric-input v-model="endHh" :min="0" :max="23" controls-type="updown"
|
||||
@ -186,10 +181,11 @@
|
||||
</div>
|
||||
</template>
|
||||
<v-card-actions class="justify-end">
|
||||
<a-button :ripple="false" @click="btnAction('save')" class="mr-2">저장</a-button>
|
||||
<a-button :ripple="false" @click="btnAction('close')" class="mr-2">닫기</a-button>
|
||||
<a-button type="primary" :ripple="false" @click="btnAction('save')" class="mr-2">저장</a-button>
|
||||
<a-button v-show="popUpAction === 'update'" type="danger" ghost danger :ripple="false"
|
||||
@click="btnAction('delete')" class="mr-2">삭제</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="btnAction('close')" class="mr-2">닫기</a-button>
|
||||
@click="btnAction('delete')">삭제</a-button>
|
||||
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -210,6 +206,7 @@ import DatePicker from '~/components/common/Datepicker';
|
||||
import mixinGlobal from '@/mixin/global.js';
|
||||
import Utility from '~/plugins/utility';
|
||||
import TuiDatepicker from 'tui-date-picker';
|
||||
import SelectBoxTime from "@/components/common/select/SelectBoxTime";
|
||||
|
||||
export default {
|
||||
mixins: [mixinGlobal],
|
||||
@ -237,6 +234,13 @@ export default {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
selectBoxTimeItemList: {
|
||||
type: Object,
|
||||
require: false,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
},
|
||||
components: {
|
||||
InputText,
|
||||
@ -250,6 +254,7 @@ export default {
|
||||
Utility,
|
||||
TuiDatepicker,
|
||||
VueNumericInput,
|
||||
SelectBoxTime,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -272,7 +277,23 @@ export default {
|
||||
planSeq: '',
|
||||
blocId: '',
|
||||
addPlanData: {
|
||||
}
|
||||
},
|
||||
selectTimeValue1:
|
||||
this.selectBoxTimeItemList.selectTimeValue1 != undefined
|
||||
? this.selectBoxTimeItemList.selectTimeValue1
|
||||
: null, // selectBoxTime에 필요한 prop
|
||||
selectTimeValueList1:
|
||||
this.selectBoxTimeItemList.selectTimeValueList1 != undefined
|
||||
? this.selectBoxTimeItemList.selectTimeValueList1
|
||||
: [], // selectBoxTime에 필요한 prop
|
||||
selectTimeValue2:
|
||||
this.selectBoxTimeItemList.selectTimeValue2 != undefined
|
||||
? this.selectBoxTimeItemList.selectTimeValue2
|
||||
: null, // selectBoxTime에 필요한 prop
|
||||
selectTimeValueList2:
|
||||
this.selectBoxTimeItemList.selectTimeValueList2 != undefined
|
||||
? this.selectBoxTimeItemList.selectTimeValueList2
|
||||
: [], // selectBoxTime에 필요한 prop
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -310,7 +331,11 @@ export default {
|
||||
}
|
||||
},
|
||||
strtHh(val) {
|
||||
// console.log('strtHh : ', val);
|
||||
|
||||
// const [hh, mm] = selectTimeValue1.split(':');
|
||||
// console.log(`Hours: ${hh}, Minutes: ${mm}`);
|
||||
|
||||
console.log('strtHh : ', val);
|
||||
this.checkStrtAndEndDateTime('start');
|
||||
},
|
||||
endHh(val) {
|
||||
@ -323,6 +348,12 @@ export default {
|
||||
endMm(val) {
|
||||
this.checkStrtAndEndDateTime('end');
|
||||
},
|
||||
selectTimeValue1(val) {
|
||||
this.setPageData({ selectTimeValue1: val });
|
||||
},
|
||||
selectTimeValue2(val) {
|
||||
this.setPageData({ selectTimeValue2: val });
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({
|
||||
@ -505,10 +536,8 @@ export default {
|
||||
let returnData = res[0];
|
||||
this.strtDt = Utility.setFormatDate(returnData.strtDt, 'YYYY-MM-DD');
|
||||
this.endDt = Utility.setFormatDate(returnData.endDt, 'YYYY-MM-DD');
|
||||
this.strtHh = returnData.strtHh;
|
||||
this.strtMm = returnData.strtMm;
|
||||
this.endHh = returnData.endHh;
|
||||
this.endMm = returnData.endMm;
|
||||
this.selectTimeValue1 = returnData.strtHh+' : '+ returnData.strtMm;
|
||||
this.selectTimeValue2 = returnData.endHh+' : '+ returnData.endMm;
|
||||
this.planTitle = returnData.planTitle;
|
||||
this.planCntn = returnData.planCntn;
|
||||
this.planColor = returnData.planColor;
|
||||
@ -525,10 +554,8 @@ export default {
|
||||
if (
|
||||
this.strtDt === '' ||
|
||||
this.endDt === '' ||
|
||||
this.strtHh === '' ||
|
||||
this.strtMm === '' ||
|
||||
this.endHh === '' ||
|
||||
this.endMm === '' ||
|
||||
this.selectTimeValue1 === '' ||
|
||||
this.selectTimeValue2 === '' ||
|
||||
this.planTitle === '' ||
|
||||
this.planCntn === '' ||
|
||||
this.planColor === ''
|
||||
@ -542,10 +569,8 @@ export default {
|
||||
if (
|
||||
this.strtDt == '' ||
|
||||
this.endDt == '' ||
|
||||
this.strtHh == '' ||
|
||||
this.strtMm == '' ||
|
||||
this.endHh == '' ||
|
||||
this.endMm == '' ||
|
||||
this.selectTimeValue1 === '' ||
|
||||
this.selectTimeValue2 === '' ||
|
||||
this.planTitle == '' ||
|
||||
this.planCntn == '' ||
|
||||
this.planColor == ''
|
||||
@ -565,13 +590,17 @@ export default {
|
||||
//console.log(this);
|
||||
},
|
||||
async insertDetail() {
|
||||
|
||||
const [strtHh, strtMm] = this.selectTimeValue1 ? this.selectTimeValue1.split(':') : '00:00'.split(':');
|
||||
const [endHh, endMm] = this.selectTimeValue2 ? this.selectTimeValue2.split(':') : '01:00'.split(':');
|
||||
|
||||
var params = {
|
||||
strtDt: this.strtDt,
|
||||
endDt: this.endDt,
|
||||
strtHh: this.strtHh.toString(),
|
||||
strtMm: this.strtMm.toString(),
|
||||
endHh: this.endHh.toString(),
|
||||
endMm: this.endMm.toString(),
|
||||
strtHh: strtHh.trim().toString(),
|
||||
strtMm: strtMm.trim().toString(),
|
||||
endHh: endHh.trim().toString(),
|
||||
endMm: endMm.trim().toString(),
|
||||
blocId: this.blocId,
|
||||
planTitle: this.planTitle,
|
||||
planCntn: this.planCntn,
|
||||
@ -592,13 +621,16 @@ export default {
|
||||
});
|
||||
},
|
||||
async updateDetail() {
|
||||
const [strtHh, strtMm] = this.selectTimeValue1 ? this.selectTimeValue1.split(':') : '00:00'.split(':');
|
||||
const [endHh, endMm] = this.selectTimeValue2 ? this.selectTimeValue2.split(':') : '01:00'.split(':');
|
||||
|
||||
var params = {
|
||||
strtDt: this.strtDt.substr(0, 10),
|
||||
endDt: this.endDt.substr(0, 10),
|
||||
strtHh: this.strtHh.toString(),
|
||||
strtMm: this.strtMm.toString(),
|
||||
endHh: this.endHh.toString(),
|
||||
endMm: this.endMm.toString(),
|
||||
strtHh: strtHh.trim().toString(),
|
||||
strtMm: strtMm.trim().toString(),
|
||||
endHh: endHh.trim().toString(),
|
||||
endMm: endMm.trim().toString(),
|
||||
planTitle: this.planTitle,
|
||||
planCntn: this.planCntn,
|
||||
planColor: this.planColor,
|
||||
|
@ -67,7 +67,7 @@
|
||||
Expand All
|
||||
</a-button></v-col>
|
||||
</v-row>
|
||||
|
||||
|
||||
<!-- <v-btn color="primary" dark @click="btnTreeExpand()">{{
|
||||
treeExpand
|
||||
}}</v-btn> -->
|
||||
@ -268,7 +268,7 @@ export default {
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
width: 20,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
@ -278,10 +278,10 @@ export default {
|
||||
{
|
||||
header: '검침개소명',
|
||||
name: 'readPlcNm',
|
||||
width: 300,
|
||||
width: 500,
|
||||
align: 'left',
|
||||
},
|
||||
{ header: '검침개소', name: 'name', align: 'center' },
|
||||
{ header: '검침개소', name: 'name', align: 'left', width: 200 },
|
||||
],
|
||||
});
|
||||
},
|
||||
@ -307,6 +307,9 @@ export default {
|
||||
|
||||
// console.log("treeData", res)
|
||||
let myOptionsTree = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
treeColumnOptions: {
|
||||
name: 'readPlcNm',
|
||||
},
|
||||
|
@ -22,11 +22,11 @@
|
||||
outlined
|
||||
:menu-props="{ auto: true, offsetY: true }"
|
||||
:hide-details="true"
|
||||
:class="'v-select__custom select-large'"
|
||||
:class="'v-select__custom'"
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
@click="setDatepickerHide"
|
||||
style="width: 170px; border-radius: 6px !important"
|
||||
style="min-width: 170px;"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<a-icon
|
||||
|
@ -20,7 +20,6 @@
|
||||
:editorGrid="true"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -54,22 +53,10 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowDetailGrid',
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
dataPathMock: {
|
||||
"rowDetailGrid": {
|
||||
column: [
|
||||
{ header: '추가 정보', name: 'readObjId', align: 'left' },
|
||||
{ header: 'Data 구분', name: 'readObjNm', align: 'left' },
|
||||
{ header: '추가 정보 값', name: 'readObjKind', align: 'left' },
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -444,22 +431,4 @@ export default {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
readObjId: 'OBJ001',
|
||||
readObjNm: '서울 본사',
|
||||
readObjKind: 'TYPE01',
|
||||
},
|
||||
{
|
||||
readObjId: 'OBJ002',
|
||||
readObjNm: '부산 지사',
|
||||
readObjKind: 'TYPE02',
|
||||
},
|
||||
{
|
||||
readObjId: 'OBJ003',
|
||||
readObjNm: '대전 공장',
|
||||
readObjKind: 'TYPE03',
|
||||
}
|
||||
]
|
||||
</script>
|
||||
|
@ -19,7 +19,6 @@
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
@ -60,24 +59,11 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowEccIaoGrid',
|
||||
inputList_emMapDiv: [],
|
||||
inputList_cmInOut: [],
|
||||
detailList: myDetail,
|
||||
dataPathMock: {
|
||||
"rowEccIaoGrid": {
|
||||
column: [
|
||||
{ header: '검침 대상 ID', name: 'readObjId', align: 'left' },
|
||||
{ header: '검침 대상 명', name: 'readObjNm', align: 'left' },
|
||||
{ header: '검침 대상 유형', name: 'readObjKind', align: 'left' },
|
||||
{ header: '그룹', name: 'grpCd', align: 'left' },
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -516,12 +502,4 @@ const myDetail = [
|
||||
iconShow: true,
|
||||
},
|
||||
];
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
readObjId: 'OBJ001',
|
||||
readObjNm: '서울 본사',
|
||||
readObjKind: 'TYPE01',
|
||||
grpCd: 'GRP01',
|
||||
},
|
||||
]
|
||||
</script>
|
||||
|
@ -6,12 +6,23 @@
|
||||
:btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
|
||||
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo" />
|
||||
<Grid
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
/>
|
||||
</div>
|
||||
<div class="mt-3" ref="formParent" style="height: calc((100vh - 400px) /2);">
|
||||
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
|
||||
:detailList="detailReadPlcTagList" @gridEditingFinish="gridEditingFinish" />
|
||||
<div ref="formParent" style="height: calc((100vh - 400px) /2);">
|
||||
<component
|
||||
:is="'Form'"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
:detailList="detailReadPlcTagList"
|
||||
@gridEditingFinish="gridEditingFinish"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -99,9 +110,9 @@ export default {
|
||||
// bodyHeight: gridHeight,
|
||||
// minBodyHeight: gridHeight,
|
||||
header: {
|
||||
height: 28,
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 29,
|
||||
rowHeight: 37,
|
||||
minRowHeight: 29,
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
|
@ -107,8 +107,7 @@ export default {
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
rowHeight: 22,
|
||||
minRowHeight: 22,
|
||||
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
};
|
||||
@ -269,7 +268,7 @@ export default {
|
||||
{
|
||||
header: 'Data 구분',
|
||||
name: 'addInfoDataKind',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = addInfoDataKindList.filter(
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<common-page-title />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -34,7 +35,7 @@
|
||||
<div class="h100 px-4" style="height:calc(100% - 70px)">
|
||||
<div ref="treeGridParent" class="w100 h100">
|
||||
<component :ref="gridName + myPrgmId" :is="loadTree ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" />
|
||||
</div>
|
||||
</div>
|
||||
</v-card>
|
||||
@ -91,21 +92,9 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'treeGrid',
|
||||
loadTree: true,
|
||||
loadTree: false,
|
||||
detailList: myDetail,
|
||||
addRowFg: false,
|
||||
dataPathExample: {
|
||||
"treeGrid": {
|
||||
data: sampleData,
|
||||
column: [
|
||||
{ header: '메뉴명', name: 'menuNm' },
|
||||
{ header: 'prgmId ', name: 'prgmId', hidden: true },
|
||||
{ header: 'sysDivCd ', name: 'sysDivCd', hidden: true },
|
||||
],
|
||||
option: myOptions,
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -162,10 +151,17 @@ export default {
|
||||
gridInit() {
|
||||
const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 30;
|
||||
const myOptionsTree = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
treeColumnOptions: {
|
||||
name: 'menuNm',
|
||||
},
|
||||
scrollX: false,
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 37,
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -178,6 +174,17 @@ export default {
|
||||
this.setGridColumn({
|
||||
gridKey: this.gridName,
|
||||
value: [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 20,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '메뉴명', name: 'menuNm' },
|
||||
{ header: 'prgmId ', name: 'prgmId', hidden: true },
|
||||
{ header: 'sysDivCd ', name: 'sysDivCd', hidden: true },
|
||||
|
@ -12,6 +12,8 @@
|
||||
:parentPrgmId="myPrgmId"
|
||||
:sendParam="{ comId }"
|
||||
customClass="select-large"
|
||||
labelCols="12"
|
||||
textCols="12"
|
||||
/>
|
||||
<!-- <component
|
||||
:is="'selectCodeList'"
|
||||
@ -79,7 +81,6 @@
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -126,13 +127,13 @@
|
||||
|
||||
<!-- 역할수정 -->
|
||||
<template v-else-if="item.id == 'AsgnRoleByUser'">
|
||||
<v-col :cols="3" class="h100">
|
||||
<v-col :cols="12" class="overflow-y-scroll grid-toggle-section">
|
||||
<v-card-title
|
||||
class="pa-0 custom-title-4"
|
||||
class="pa-0 custom-subtitle-tab"
|
||||
style="min-height:36px;"
|
||||
>역할리스트</v-card-title
|
||||
>
|
||||
<div style="height:calc(100% - 36px)" class="py-5">
|
||||
<div class="py-5">
|
||||
<component
|
||||
class="w100"
|
||||
:is="loadGridTab2 ? 'Grid' : null"
|
||||
@ -144,7 +145,7 @@
|
||||
/>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="1" class="d-flex justify-center">
|
||||
<v-col :cols="12" class="d-flex justify-center">
|
||||
<ActionButtons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:leftGridName="gridName2"
|
||||
@ -152,9 +153,9 @@
|
||||
:btnActionsFnc="dualGridBtnActions"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="8" class="h100">
|
||||
<v-col :cols="12" class="h100">
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<v-card-title class="pa-0 custom-title-4">
|
||||
<v-card-title class="pa-0 custom-subtitle-tab">
|
||||
사용자 역할</v-card-title
|
||||
>
|
||||
<div>
|
||||
@ -307,40 +308,10 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
this.gridInit();
|
||||
await this.gridInit();
|
||||
},
|
||||
|
||||
gridInitTest() {
|
||||
const rowGrid = {
|
||||
column: [
|
||||
{ header: '사용자No', name: 'userNo', align: 'center', hidden: true },
|
||||
{ header: '사용자명', name: 'userNm' },
|
||||
{ header: '사용자ID', name: 'userLoginId' },
|
||||
{ header: '사용자비밀번호', name: 'userPswd', hidden: true },
|
||||
{ header: '사업장', name: 'blocId', hidden: true },
|
||||
{ header: 'email', name: 'email', hidden: true },
|
||||
{ header: '등록자NO', name: 'regUserNo', hidden: true },
|
||||
{ header: '등록일시', name: 'regDttm', hidden: true },
|
||||
{ header: '수정자NO', name: 'procUserNo', hidden: true },
|
||||
{ header: '수정일시', name: 'procDttm', hidden: true },
|
||||
{ header: 'comId', name: 'comId', hidden: true },
|
||||
{ header: 'deptId', name: 'deptId', hidden: true },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: [],
|
||||
}
|
||||
this.dataPathMock = {rowGrid};
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
|
||||
// 사용자 리스트 그리드 세팅
|
||||
gridInit() {
|
||||
|
||||
// this.gridInitTest(); return
|
||||
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 90;
|
||||
|
||||
const myOptions = {
|
||||
@ -923,6 +894,7 @@ const defaultData = {
|
||||
};
|
||||
|
||||
const myColumns = [
|
||||
|
||||
{ header: '사용자No', name: 'userNo', align: 'center', hidden: true },
|
||||
{ header: '사용자명', name: 'userNm' },
|
||||
{ header: '사용자ID', name: 'userLoginId' },
|
||||
@ -938,6 +910,17 @@ const myColumns = [
|
||||
];
|
||||
|
||||
const unAsgnRoleByUserColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '역할ID', name: 'roleId', align: 'center' },
|
||||
{ header: '역할명', name: 'roleNm' },
|
||||
{ header: '적용시작일', name: 'aplyStartDt', hidden: true },
|
||||
@ -947,6 +930,7 @@ const unAsgnRoleByUserColumns = [
|
||||
];
|
||||
|
||||
const asgnRoleByUserColumns = [
|
||||
|
||||
{ header: '역할ID', name: 'roleId', align: 'center' },
|
||||
{ header: '역할명', name: 'roleNm' },
|
||||
{
|
||||
@ -960,7 +944,19 @@ const asgnRoleByUserColumns = [
|
||||
{ header: 'comId', name: 'comId', hidden: true },
|
||||
];
|
||||
|
||||
const asgnMenuByUserColumns = [{ header: '메뉴명', name: 'menuNm' }];
|
||||
const asgnMenuByUserColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '메뉴명', name: 'menuNm' }];
|
||||
|
||||
const myDetail = blocCdList => {
|
||||
return [
|
||||
@ -1100,67 +1096,4 @@ function sha512(str) {
|
||||
.update(str)
|
||||
.digest('hex');
|
||||
}
|
||||
|
||||
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
userNo: 1,
|
||||
userNm: '홍길동',
|
||||
userLoginId: 'hong123',
|
||||
userPswd: 'password123',
|
||||
blocId: 'B001',
|
||||
email: 'hong@example.com',
|
||||
regUserNo: 100,
|
||||
regDttm: '2025-07-01 10:00:00',
|
||||
procUserNo: 101,
|
||||
procDttm: '2025-07-15 14:30:00',
|
||||
comId: 'C001',
|
||||
deptId: 'D001'
|
||||
},
|
||||
{
|
||||
userNo: 2,
|
||||
userNm: '김영희',
|
||||
userLoginId: 'kimyh',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
},
|
||||
{
|
||||
userNo: 3,
|
||||
userNm: '관리자',
|
||||
userLoginId: 'user',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
},
|
||||
{
|
||||
userNo: 4,
|
||||
userNm: '사용자',
|
||||
userLoginId: 'admin',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
</script>
|
||||
</script>
|
@ -4,24 +4,26 @@
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="2">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="2.5">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="배치ID"
|
||||
valueNm="batchId"
|
||||
:searchOption="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<v-col :cols="2.5">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="배치명"
|
||||
valueNm="batchNm"
|
||||
:searchOption="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<v-col :cols="2.5">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -29,20 +31,21 @@
|
||||
:dataKey="'execRsltCd'"
|
||||
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_RSLT', useFg: '1' }"
|
||||
:addAll="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<v-col :cols="2.5">
|
||||
<component
|
||||
:is="'Datepicker'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'조회기간'"
|
||||
customClass="datepicker-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col :cols="4" class="text-right">
|
||||
<div class="text-right d-flex align-end justify-end pl-9" style="gap: 8px">
|
||||
<BtnSearch />
|
||||
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" />
|
||||
</v-col>
|
||||
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" size="large" />
|
||||
</div>
|
||||
</v-row>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -426,7 +429,4 @@ const myDetail = [
|
||||
class: 'py-2',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@import '@/assets/scss/common.scss';
|
||||
</style>
|
||||
</script>
|
@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<!-- 조회조견 -->
|
||||
<v-row ref="searchFilter">
|
||||
<common-page-title />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -24,7 +25,7 @@
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<v-col :cols="2.5" class="pr-4">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -34,7 +35,7 @@
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<BtnSearch size="large" />
|
||||
<BtnSearch size="large" class="mr-2" />
|
||||
|
||||
</v-row>
|
||||
</v-card>
|
||||
@ -57,7 +58,7 @@
|
||||
<div class="px-4">
|
||||
<div ref="gridParent" class="h100 w100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
|
||||
:gridName="gridName" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||
:gridName="gridName" @getRowsData="getRowData" />
|
||||
</div>
|
||||
<!-- </v-card-actions> -->
|
||||
</div>
|
||||
@ -77,7 +78,7 @@
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-dialog ref="popModal" v-model="dialog" width="700" overlay-color="#000" overlay-opacity="0.8" scrollable>
|
||||
<v-dialog ref="popModal" v-model="dialog" width="800" overlay-color="#000" overlay-opacity="0.8" scrollable>
|
||||
<v-card style="height: 100%">
|
||||
<v-card-title class="v-card__title d-flex align-center justify-space-between">
|
||||
<span class="custom-title-4">DB 프로시져 파라메터 설정</span>
|
||||
@ -91,7 +92,6 @@
|
||||
<v-col cols="12" class="text-right"> </v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<v-card-text style="height: 300px;">
|
||||
<div id="gridParent" class="mt-6" style="height:calc(100% - 36px);">
|
||||
<div style="height:calc(100% - 36px);">
|
||||
@ -101,7 +101,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</v-card-text>
|
||||
<v-divider></v-divider>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="primary" dark @click="setParamChangeData()">확인</v-btn>
|
||||
@ -155,76 +154,16 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowGrid',
|
||||
dataPathExample: {
|
||||
"rowGrid": {
|
||||
data: [
|
||||
{
|
||||
"batchId": "BATCH001",
|
||||
"batchNm": "일일 데이터 백업",
|
||||
"batchExecTp": "자동 실행",
|
||||
"batchDupExecFg": "N",
|
||||
"useFg": "사용"
|
||||
},
|
||||
{
|
||||
"batchId": "BATCH002",
|
||||
"batchNm": "월간 리포트 생성",
|
||||
"batchExecTp": "수동 실행",
|
||||
"batchDupExecFg": "Y",
|
||||
"useFg": "사용"
|
||||
},
|
||||
{
|
||||
"batchId": "BATCH003",
|
||||
"batchNm": "로그 정리 작업",
|
||||
"batchExecTp": "자동 실행",
|
||||
"batchDupExecFg": "N",
|
||||
"useFg": "미사용"
|
||||
},
|
||||
{
|
||||
"batchId": "BATCH004",
|
||||
"batchNm": "사용자 통계 수집",
|
||||
"batchExecTp": "예약 실행",
|
||||
"batchDupExecFg": "Y",
|
||||
"useFg": "사용"
|
||||
},
|
||||
{
|
||||
"batchId": "BATCH005",
|
||||
"batchNm": "서버 상태 점검",
|
||||
"batchExecTp": "수동 실행",
|
||||
"batchDupExecFg": "N",
|
||||
"useFg": "미사용"
|
||||
}
|
||||
]
|
||||
|
||||
,
|
||||
column: [
|
||||
{ header: '배치ID', name: 'batchId', align: 'center', width: 100 },
|
||||
{ header: '배치명', name: 'batchNm', minWidth: 200 },
|
||||
{
|
||||
header: '배치 실행 구분',
|
||||
name: 'batchExecTp',
|
||||
align: 'left',
|
||||
minWidth: 190,
|
||||
},
|
||||
{ header: '배치 중복 여부', name: 'batchDupExecFg', hidden: true },
|
||||
{
|
||||
header: '사용여부',
|
||||
name: 'useFg',
|
||||
align: 'center',
|
||||
width: 145,
|
||||
},
|
||||
],
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
// rowGridOrigin: [],
|
||||
detailList: myDetail,
|
||||
|
||||
// 파라메터 셋팅용 변수
|
||||
dialog: false,
|
||||
gridNameParam: 'paramGrid',
|
||||
paramLoadGrid: true,
|
||||
paramLoadGrid: false,
|
||||
selectedGridNameParamRow: null,
|
||||
};
|
||||
},
|
||||
@ -292,7 +231,7 @@ export default {
|
||||
}),
|
||||
init() {
|
||||
// this.layoutInit();
|
||||
// this.gridInit();
|
||||
this.gridInit();
|
||||
this.gridParamInit();
|
||||
},
|
||||
// layoutInit() {
|
||||
@ -309,6 +248,10 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 37,
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -384,7 +327,7 @@ export default {
|
||||
},
|
||||
async search() {
|
||||
// console.log("search");
|
||||
// await this.getRowGridData();
|
||||
await this.getRowGridData();
|
||||
await this.setPageData({
|
||||
isFind: false,
|
||||
});
|
||||
@ -629,20 +572,20 @@ export default {
|
||||
gridKey: this.gridNameParam,
|
||||
value: myOptions,
|
||||
});
|
||||
// setTimeout(() => { });
|
||||
setTimeout(() => { });
|
||||
|
||||
// let modeList = [];
|
||||
// const modeIn = { text: 'IN', value: 'IN' };
|
||||
// const modeOut = { text: 'OUT', value: 'OUT' };
|
||||
// modeList.push(modeIn);
|
||||
// modeList.push(modeOut);
|
||||
// let typeList = [];
|
||||
// const typeInt = { text: 'INT', value: 'int' };
|
||||
// const typeStr = { text: 'STRING', value: 'str' };
|
||||
// const typeFunc = { text: 'FUNCTION', value: 'function' };
|
||||
// typeList.push(typeInt);
|
||||
// typeList.push(typeStr);
|
||||
// typeList.push(typeFunc);
|
||||
let modeList = [];
|
||||
const modeIn = { text: 'IN', value: 'IN' };
|
||||
const modeOut = { text: 'OUT', value: 'OUT' };
|
||||
modeList.push(modeIn);
|
||||
modeList.push(modeOut);
|
||||
let typeList = [];
|
||||
const typeInt = { text: 'INT', value: 'int' };
|
||||
const typeStr = { text: 'STRING', value: 'str' };
|
||||
const typeFunc = { text: 'FUNCTION', value: 'function' };
|
||||
typeList.push(typeInt);
|
||||
typeList.push(typeStr);
|
||||
typeList.push(typeFunc);
|
||||
|
||||
const myColumns = [
|
||||
{ header: 'ID', name: 'id', editor: 'text' },
|
||||
@ -664,27 +607,27 @@ export default {
|
||||
header: 'Type',
|
||||
name: 'type',
|
||||
align: 'center',
|
||||
// formatter({ value }) {
|
||||
// let retVal = '';
|
||||
// switch (value) {
|
||||
// case 'int':
|
||||
// retVal = 'INT';
|
||||
// break;
|
||||
// case 'str':
|
||||
// retVal = 'STRING';
|
||||
// break;
|
||||
// case 'function':
|
||||
// retVal = 'FUNCTION';
|
||||
// break;
|
||||
// }
|
||||
// return retVal;
|
||||
// },
|
||||
// editor: {
|
||||
// type: 'select',
|
||||
// options: {
|
||||
// listItems: typeList,
|
||||
// },
|
||||
// },
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
switch (value) {
|
||||
case 'int':
|
||||
retVal = 'INT';
|
||||
break;
|
||||
case 'str':
|
||||
retVal = 'STRING';
|
||||
break;
|
||||
case 'function':
|
||||
retVal = 'FUNCTION';
|
||||
break;
|
||||
}
|
||||
return retVal;
|
||||
},
|
||||
editor: {
|
||||
type: 'select',
|
||||
options: {
|
||||
listItems: typeList,
|
||||
},
|
||||
},
|
||||
},
|
||||
{ header: '값', name: 'val', editor: 'text' },
|
||||
{ header: 'rowStat', name: 'rowStat', hidden: true },
|
||||
@ -703,86 +646,49 @@ export default {
|
||||
|
||||
// /* this.pageData.paramStrData 처리 */
|
||||
// // console.log("this.pageData.paramStrData : ", JSON.parse(this.pageData.paramStrData));
|
||||
// let rowData = {};
|
||||
// if (
|
||||
// this.pageData.paramStrData.startsWith('{') &&
|
||||
// this.pageData.paramStrData.endsWith('}')
|
||||
// ) {
|
||||
// rowData = JSON.parse(this.pageData.paramStrData);
|
||||
// }
|
||||
// var keys = Object.keys(rowData); //키를 가져옵니다. 이때, keys 는 반복가능한 객체가 됩니다.
|
||||
// for (var i = 0; i < keys.length; i++) {
|
||||
// var key = keys[i];
|
||||
// res.push(rowData[key]);
|
||||
// }
|
||||
let rowData = {};
|
||||
if (
|
||||
this.pageData.paramStrData.startsWith('{') &&
|
||||
this.pageData.paramStrData.endsWith('}')
|
||||
) {
|
||||
rowData = JSON.parse(this.pageData.paramStrData);
|
||||
}
|
||||
var keys = Object.keys(rowData); //키를 가져옵니다. 이때, keys 는 반복가능한 객체가 됩니다.
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var key = keys[i];
|
||||
res.push(rowData[key]);
|
||||
}
|
||||
|
||||
// const newRes = res.map(item => {
|
||||
// const newObj = {
|
||||
// ...item,
|
||||
// rowStat: null,
|
||||
// id: item.id || '',
|
||||
// mode: item.mode || 'in',
|
||||
// type: item.type || 'str',
|
||||
// val: item.val || '',
|
||||
// };
|
||||
// return newObj;
|
||||
// });
|
||||
const newRes = res.map(item => {
|
||||
const newObj = {
|
||||
...item,
|
||||
rowStat: null,
|
||||
id: item.id || '',
|
||||
mode: item.mode || 'in',
|
||||
type: item.type || 'str',
|
||||
val: item.val || '',
|
||||
};
|
||||
return newObj;
|
||||
});
|
||||
|
||||
const newRes = [
|
||||
{
|
||||
"id": "VAR001",
|
||||
"mode": "OUT",
|
||||
"type": "int",
|
||||
"val": "100",
|
||||
"rowStat": "C"
|
||||
},
|
||||
{
|
||||
"id": "VAR002",
|
||||
"mode": "IN",
|
||||
"type": "str",
|
||||
"val": "Hello World",
|
||||
"rowStat": "U"
|
||||
},
|
||||
{
|
||||
"id": "FUNC001",
|
||||
"mode": "out",
|
||||
"type": "function",
|
||||
"val": "calculateSum()",
|
||||
"rowStat": "C"
|
||||
},
|
||||
{
|
||||
"id": "VAR003",
|
||||
"mode": "IN",
|
||||
"type": "int",
|
||||
"val": "42",
|
||||
"rowStat": "D"
|
||||
},
|
||||
{
|
||||
"id": "VAR004",
|
||||
"mode": "OUT",
|
||||
"type": "str",
|
||||
"val": "Sample Text",
|
||||
"rowStat": "C"
|
||||
}
|
||||
];
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridNameParam,
|
||||
value: newRes,
|
||||
});
|
||||
// this.$nextTick(() => {
|
||||
// if (newRes.length > 0) {
|
||||
// try {
|
||||
// this.$refs[this.gridNameParam].focus({
|
||||
// //rowKey: 0,
|
||||
// rowKey: 0,
|
||||
// setScroll: true,
|
||||
// });
|
||||
// } catch (error) {
|
||||
// console.log('error[nextTick grid] : ', error);
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
this.$nextTick(() => {
|
||||
if (newRes.length > 0) {
|
||||
try {
|
||||
this.$refs[this.gridNameParam].focus({
|
||||
//rowKey: 0,
|
||||
rowKey: 0,
|
||||
setScroll: true,
|
||||
});
|
||||
} catch (error) {
|
||||
console.log('error[nextTick grid] : ', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
this.paramLoadGrid = true;
|
||||
},
|
||||
xlsDataBind(res) {
|
||||
@ -812,21 +718,21 @@ export default {
|
||||
inputClick(event, item, valueNm) {
|
||||
if (valueNm == 'refVal1') {
|
||||
this.dialog = true;
|
||||
// const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke(
|
||||
// 'getFocusedCell',
|
||||
// ).rowKey;
|
||||
// const selectRowData = this.$refs[this.gridName].gridInstance.invoke(
|
||||
// 'getRow',
|
||||
// rowIdxKey,
|
||||
// );
|
||||
const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke(
|
||||
'getFocusedCell',
|
||||
).rowKey;
|
||||
const selectRowData = this.$refs[this.gridName].gridInstance.invoke(
|
||||
'getRow',
|
||||
rowIdxKey,
|
||||
);
|
||||
|
||||
// if (selectRowData.batchExecTp == 'DP') {
|
||||
// // 여기에 팝업 레이어 띠우기 기능 추가
|
||||
// this.pageData.paramStrData = event.target.value;
|
||||
// this.pageData.paramChangeDataTarget = event.target;
|
||||
// this.getRowParamData();
|
||||
// this.dialog = true;
|
||||
// }
|
||||
if (selectRowData.batchExecTp == 'DP') {
|
||||
// 여기에 팝업 레이어 띠우기 기능 추가
|
||||
this.pageData.paramStrData = event.target.value;
|
||||
this.pageData.paramChangeDataTarget = event.target;
|
||||
this.getRowParamData();
|
||||
this.dialog = true;
|
||||
}
|
||||
}
|
||||
},
|
||||
setParamChangeData() {
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<common-page-title />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -20,28 +21,29 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents" id="CalendarMngContent" class="mt-4">
|
||||
<v-col cols="12" lg="4" class="h100 pr-2">
|
||||
<v-col cols="12" lg="4" class=" pr-2">
|
||||
<v-card class="w100">
|
||||
<v-card-title class="d-flex justify-space-between align-center">
|
||||
<span class="custom-title-4">캘린더 리스트</span>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||
</v-card-title>
|
||||
<v-card-actions class="pt-0 px-5 pb-5" :style="{ height: 'calc(100% - 72.56px)' }">
|
||||
<v-card-actions class="pt-0 px-5 pb-5" :style="{ height: 'calc(100% - 10px)' }">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component class="w100" :ref="gridName + myPrgmId" :is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName" :parentPrgmId="myPrgmId" :editorGrid="true"
|
||||
@getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||
@getRowsData="getRowData" />
|
||||
</div>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col cols="12" lg="8" class="h100 pl-3">
|
||||
<v-col cols="12" lg="8" class=" pl-3">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
<span class="custom-title-4">캘린더 미리보기</span>
|
||||
</v-card-title>
|
||||
<v-card-actions class="px-5 d-block" :style="{ height: 'calc(100% - 62px)' }">
|
||||
<Calendar :parentPrgmId="myPrgmId" :gridName="gridName" :headerVisible="false" />
|
||||
<v-card-actions class="px-5 d-block" >
|
||||
<Calendar :parentPrgmId="myPrgmId" :gridName="gridName" :headerVisible="false"
|
||||
:showTitle="false" />
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -94,81 +96,7 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
dataPathExample: {
|
||||
"rowGrid": {
|
||||
data: [
|
||||
{
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-23",
|
||||
"dtNm": "수요일",
|
||||
"dt": "2025-07-21",
|
||||
"dtNm": "월요일",
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-22",
|
||||
"dtNm": "화요일",
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-24",
|
||||
"dtNm": "목요일",
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-25",
|
||||
"dtNm": "금요일",
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-26",
|
||||
"dtNm": "토요일",
|
||||
"hldyFg": "주말",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-27",
|
||||
"dtNm": "일요일",
|
||||
"hldyFg": "휴일",
|
||||
"hldyNm": "정기휴일"
|
||||
}
|
||||
],
|
||||
column: [
|
||||
{
|
||||
header: '일자',
|
||||
name: 'dt',
|
||||
align: 'center',
|
||||
// formatter({ value }) {
|
||||
// return value.split(' ')[0];
|
||||
// },
|
||||
},
|
||||
{
|
||||
header: '요일',
|
||||
name: 'dtNm',
|
||||
align: 'center',
|
||||
// formatter({ value }) {
|
||||
// return value + '요일';
|
||||
// },
|
||||
},
|
||||
{
|
||||
header: '구분',
|
||||
name: 'hldyFg',
|
||||
align: 'center',
|
||||
essential: true,
|
||||
},
|
||||
{ header: '휴일명', name: 'hldyNm', editor: 'text' },
|
||||
],
|
||||
|
||||
}
|
||||
},
|
||||
loadGrid: false,
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
};
|
||||
@ -241,16 +169,19 @@ export default {
|
||||
await this.gridInit();
|
||||
},
|
||||
async search() {
|
||||
// await this.getRowGridData();
|
||||
await this.getRowGridData();
|
||||
},
|
||||
async gridInit() {
|
||||
// const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
// this.setGridOption({
|
||||
// gridKey: this.gridName,
|
||||
// value: Object.assign(Utility.defaultGridOption(gridHeight), {
|
||||
// scrollX: false,
|
||||
// }),
|
||||
// });
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
value: Object.assign(Utility.defaultGridOption(gridHeight), {
|
||||
scrollX: false, header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 37,
|
||||
}),
|
||||
});
|
||||
|
||||
// this.getRowGridData();
|
||||
},
|
||||
@ -350,86 +281,86 @@ export default {
|
||||
|
||||
this.loadGrid = false;
|
||||
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectWorkCald',
|
||||
// resKey: 'workcaldData',
|
||||
// sendParam: {
|
||||
// blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
|
||||
// yymm: this.chkFromDt,
|
||||
// comId: this.comId,
|
||||
// },
|
||||
// });
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectWorkCald',
|
||||
resKey: 'workcaldData',
|
||||
sendParam: {
|
||||
blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
|
||||
yymm: this.chkFromDt,
|
||||
comId: this.comId,
|
||||
},
|
||||
});
|
||||
|
||||
// let res2 = await this.postApiReturn({
|
||||
// apiKey: 'selectWorkCaldDetl',
|
||||
// resKey: 'workcaldDetlData',
|
||||
// sendParam: {
|
||||
// blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
|
||||
// yymm: this.chkFromDt,
|
||||
// comId: this.comId,
|
||||
// },
|
||||
// });
|
||||
let res2 = await this.postApiReturn({
|
||||
apiKey: 'selectWorkCaldDetl',
|
||||
resKey: 'workcaldDetlData',
|
||||
sendParam: {
|
||||
blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
|
||||
yymm: this.chkFromDt,
|
||||
comId: this.comId,
|
||||
},
|
||||
});
|
||||
|
||||
// for (var i = 0; i < res2.length; i++) {
|
||||
// if (
|
||||
// !(
|
||||
// res2[i].hldyNm == null ||
|
||||
// res2[i].hldyNm == '토요일' ||
|
||||
// res2[i].hldyNm == '일요일'
|
||||
// )
|
||||
// ) {
|
||||
// for (var j = i + 1; j < res2.length; j++) {
|
||||
// if (res2[i].hldyNm == res2[j].hldyNm) {
|
||||
// res2[i].hldyNm = '';
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
for (var i = 0; i < res2.length; i++) {
|
||||
if (
|
||||
!(
|
||||
res2[i].hldyNm == null ||
|
||||
res2[i].hldyNm == '토요일' ||
|
||||
res2[i].hldyNm == '일요일'
|
||||
)
|
||||
) {
|
||||
for (var j = i + 1; j < res2.length; j++) {
|
||||
if (res2[i].hldyNm == res2[j].hldyNm) {
|
||||
res2[i].hldyNm = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// res = res.map(item => {
|
||||
// const dt = this.$dayjs(item.dt.split(' ')[0]); // YYYY-MM-DD
|
||||
// const dtNm = dt.format('ddd'); // 요일
|
||||
// const newItem = {
|
||||
// ...item,
|
||||
// dtNm: dtNm,
|
||||
// hldyNm: item.hldyNm ? item.hldyNm : '',
|
||||
// rowStat: null,
|
||||
// };
|
||||
// return newItem;
|
||||
// });
|
||||
res = res.map(item => {
|
||||
const dt = this.$dayjs(item.dt.split(' ')[0]); // YYYY-MM-DD
|
||||
const dtNm = dt.format('ddd'); // 요일
|
||||
const newItem = {
|
||||
...item,
|
||||
dtNm: dtNm,
|
||||
hldyNm: item.hldyNm ? item.hldyNm : '',
|
||||
rowStat: null,
|
||||
};
|
||||
return newItem;
|
||||
});
|
||||
|
||||
// this.loadGrid = true;
|
||||
// this.setPageData({ isFind: false });
|
||||
this.loadGrid = true;
|
||||
this.setPageData({ isFind: false });
|
||||
|
||||
// this.setGridColumn({
|
||||
// gridKey: this.gridName,
|
||||
// value: myColumns,
|
||||
// });
|
||||
this.setGridColumn({
|
||||
gridKey: this.gridName,
|
||||
value: myColumns,
|
||||
});
|
||||
|
||||
// this.setGridData({
|
||||
// gridKey: this.gridName,
|
||||
// value: res,
|
||||
// });
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: res,
|
||||
});
|
||||
|
||||
// this.setPageData({ planData: res2 });
|
||||
this.setPageData({ planData: res2 });
|
||||
|
||||
// // 첫번째 row 선택상태
|
||||
// this.$nextTick(() => {
|
||||
// this.$refs[this.gridName + this.myPrgmId].focus({
|
||||
// //rowKey: 0,
|
||||
// rowKey:
|
||||
// this.pageData.rowGridSelectKey == '' ||
|
||||
// this.pageData.rowGridSelectKey == null
|
||||
// ? 0
|
||||
// : this.pageData.rowGridSelectKey ==
|
||||
// this.$refs[this.gridName + this.myPrgmId].getData().length - 1
|
||||
// ? this.pageData.rowGridSelectKey
|
||||
// : 0,
|
||||
// columnName: 'dt',
|
||||
// setScroll: true,
|
||||
// });
|
||||
// this.setPageData({ isFind: false });
|
||||
// });
|
||||
// 첫번째 row 선택상태
|
||||
this.$nextTick(() => {
|
||||
this.$refs[this.gridName + this.myPrgmId].focus({
|
||||
//rowKey: 0,
|
||||
rowKey:
|
||||
this.pageData.rowGridSelectKey == '' ||
|
||||
this.pageData.rowGridSelectKey == null
|
||||
? 0
|
||||
: this.pageData.rowGridSelectKey ==
|
||||
this.$refs[this.gridName + this.myPrgmId].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
columnName: 'dt',
|
||||
setScroll: true,
|
||||
});
|
||||
this.setPageData({ isFind: false });
|
||||
});
|
||||
},
|
||||
async getRowData(data, gridName) {
|
||||
this.setGridSelectData({
|
||||
@ -604,4 +535,17 @@ select.selectbox {
|
||||
border-width: 0px;
|
||||
// box-sizing: border-box;
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
.custom-vc-calender {
|
||||
.vc-header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.vc-weeks {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -64,7 +64,6 @@
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -137,24 +136,10 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
detailList: myDetail,
|
||||
initedFlag: false,
|
||||
dataPathMock : {
|
||||
'rowGrid': {
|
||||
column: [
|
||||
{ header: '추가 정보 그룹', name: 'addGrpId', align: 'left' },
|
||||
{ header: '추가 정보 ID', name: 'addInfoId', align: 'left' },
|
||||
{ header: '추가 정보 명', name: 'addInfoNm', align: 'left' },
|
||||
{ header: 'Data 형식', name: 'addInfoDataKind', align: 'center' },
|
||||
{ header: '사용여부', name: 'useFg', align: 'center' },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -642,43 +627,4 @@ const myDetail = [
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
];
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
addGrpId: 'GRP001',
|
||||
addInfoId: 'INFO001',
|
||||
addInfoNm: '온도 센서',
|
||||
addInfoDataKind: 'DATA01',
|
||||
useFg: true,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP002',
|
||||
addInfoId: 'INFO002',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA02',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP003',
|
||||
addInfoId: 'INFO003',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA03',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP004',
|
||||
addInfoId: 'INFO004',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA04',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP005',
|
||||
addInfoId: 'INFO005',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA05',
|
||||
useFg: false,
|
||||
},
|
||||
];
|
||||
|
||||
</script>
|
||||
|
@ -3,8 +3,8 @@
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="2.5">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -12,11 +12,9 @@
|
||||
dataKey="searchLocKind"
|
||||
:sendParam="{ commGrpCd: 'EM_LOC_KIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -24,12 +22,10 @@
|
||||
dataKey="searchEccKind"
|
||||
:sendParam="{ commGrpCd: 'EM_ECC_KIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="3">
|
||||
사업장
|
||||
<v-col :cols="3">
|
||||
<!-- 사업장 -->
|
||||
<div style="visibility:hidden">
|
||||
<component
|
||||
:is="'SelectBlocMstr'"
|
||||
@ -37,8 +33,13 @@
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
</div>
|
||||
</v-col> -->
|
||||
<v-col :cols="2.5">
|
||||
</v-col>
|
||||
<v-col :cols="3" class="text-right">
|
||||
<BtnSearch @click="search" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -46,23 +47,18 @@
|
||||
dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<v-col :cols="6">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="공정명"
|
||||
valueNm="eccNm"
|
||||
:labelCols="12"
|
||||
:textCols="12"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:searchOption="true"
|
||||
:iconShow="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-row>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -79,17 +75,16 @@
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
||||
<div ref="gridParent" class="w100 h100 pb-2">
|
||||
<div class="px-5" style="height:calc(100% - 76px)">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -196,15 +191,13 @@ export default {
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
selectedRowKey: null,
|
||||
// rowSelectionStatus: {},
|
||||
dataPathMock : { },
|
||||
items: [
|
||||
{ name: '공정 정보', id: 'eccBaseInfoTab', disabledFlag: false },
|
||||
{ name: '공정 추가 정보', id: 'eccAddInfoTab', disabledFlag: false },
|
||||
{ name: '공정 연결 정보', id: 'eccIaoTab', disabledFlag: false },
|
||||
],
|
||||
detailList: myDetail,
|
||||
loadGrid: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -320,23 +313,11 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
this.$nextTick(() => {
|
||||
// const checkbox = document.getElementById('headerCheckbox');
|
||||
// if (checkbox) {
|
||||
// checkbox.addEventListener('change', this.handleHeaderCheckboxChange);
|
||||
// }
|
||||
});
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.chkOpenTabList({ key: 'destroy', prgmId: myPrgmId });
|
||||
},
|
||||
methods: {
|
||||
handleHeaderCheckboxChange(event) {
|
||||
const checked = event.target.checked;
|
||||
this.dataPathMock.rowGrid.data.forEach(row => {
|
||||
row.selected = checked;
|
||||
});},
|
||||
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
}),
|
||||
@ -351,41 +332,7 @@ export default {
|
||||
blocId: this.userInfo.blocId,
|
||||
});
|
||||
},
|
||||
gridInitTest() {
|
||||
const rowGrid = {
|
||||
column: [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '공정 정보', name: 'eccNm', align: 'left' },
|
||||
{ header: '현재 상태', name: 'status', align: 'center' },
|
||||
{ header: '공정 유형', name: 'eccKind', align: 'left' },
|
||||
{ header: '사용 여부', name: 'useFg', align: 'center' },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: {
|
||||
...gridOptions,
|
||||
},
|
||||
}
|
||||
this.dataPathMock = {rowGrid};
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
gridInit() {
|
||||
// Test
|
||||
this.gridInitTest(); return;
|
||||
// End test
|
||||
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const gridWidth = this.$refs.gridParent.offsetWidth;
|
||||
|
||||
@ -404,6 +351,17 @@ export default {
|
||||
|
||||
const _this = this;
|
||||
const myColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||
{
|
||||
header: '공정 명',
|
||||
@ -598,16 +556,6 @@ export default {
|
||||
});
|
||||
},
|
||||
async getRowData(data) {
|
||||
|
||||
//Progess and fake radio
|
||||
// const rowKey = data.rowKey;
|
||||
// this.selectedRowKey = rowKey;
|
||||
// Object.keys(this.rowSelectionStatus).forEach(key => {
|
||||
// this.$set(this.rowSelectionStatus, key, false);
|
||||
// });
|
||||
// this.$set(this.rowSelectionStatus, rowKey, true);
|
||||
|
||||
|
||||
this.setEccAddInfo(data);
|
||||
this.setEccIao(data);
|
||||
this.setGridSelectData({
|
||||
@ -623,9 +571,6 @@ export default {
|
||||
rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectData: Object.assign({}, data),
|
||||
});
|
||||
//fake radio need recheck
|
||||
// this.$refs[this.gridName]?.repaint?.();
|
||||
|
||||
},
|
||||
async setEccAddInfo(data) {
|
||||
this.setPageData({
|
||||
@ -1070,142 +1015,4 @@ const myDetail = [
|
||||
value: { '1': true, '0': false },
|
||||
},
|
||||
];
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
eccId: 'ECC000001',
|
||||
eccNm: 'EGP_HVAC_LT_CH001',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000002',
|
||||
eccNm: 'B01',
|
||||
status: '대기',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000005',
|
||||
eccNm: 'B01-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000009',
|
||||
eccNm: 'B01-1-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000010',
|
||||
eccNm: 'B01-1-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000011',
|
||||
eccNm: 'B01-1-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000006',
|
||||
eccNm: 'B01-2',
|
||||
status: '점검중',
|
||||
eccKind: '공정',
|
||||
useFg: '0',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC0000013',
|
||||
eccNm: 'B01-2-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000014',
|
||||
eccNm: 'B01-1-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000015',
|
||||
eccNm: 'B01-1-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000007',
|
||||
eccNm: 'B01-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000009',
|
||||
eccNm: 'B01-3-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000010',
|
||||
eccNm: 'B01-3-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000011',
|
||||
eccNm: 'B01-3-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000003',
|
||||
eccNm: 'B02',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000004',
|
||||
eccNm: 'B03',
|
||||
status: '점검중',
|
||||
eccKind: '공정',
|
||||
useFg: '0',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const gridOptions = {
|
||||
treeColumnOptions: {
|
||||
name: 'eccNm', // Showing tree table
|
||||
useIcon: false, // Not using icon
|
||||
indentWidth: 10,// spacing when showing children
|
||||
},
|
||||
header: {
|
||||
height: 40,
|
||||
},
|
||||
rowHeight: 35,
|
||||
showCheckbox: false,
|
||||
};
|
||||
</script>
|
||||
</script>
|
@ -25,7 +25,7 @@
|
||||
:textCols="12" :searchOption="true" :customClass="'input-large'" :iconShow="true" />
|
||||
</v-col>
|
||||
|
||||
<BtnSearch @click="search" size="large" />
|
||||
<BtnSearch @click="search" size="large" class="mr-2" />
|
||||
|
||||
</v-row>
|
||||
</v-card>
|
||||
@ -43,8 +43,7 @@
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
|
||||
/>
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
|
||||
</div>
|
||||
</div>
|
||||
</v-card>
|
||||
@ -308,12 +307,22 @@ export default {
|
||||
|
||||
const _this = this;
|
||||
const myColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
formatter: (props) => {
|
||||
return `<span class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</span>`;
|
||||
}
|
||||
},
|
||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||
{
|
||||
header: '검침개소명',
|
||||
name: 'readPlcNm',
|
||||
align: 'left',
|
||||
minWidth: 400,
|
||||
minWidth: 350,
|
||||
},
|
||||
{
|
||||
header: '검침개소 ID',
|
||||
@ -470,12 +479,12 @@ export default {
|
||||
this.$refs[this.gridName].focus({
|
||||
rowKey:
|
||||
this.pageData.rowGridSelectKey == '' ||
|
||||
this.pageData.rowGridSelectKey == null
|
||||
this.pageData.rowGridSelectKey == null
|
||||
? 0
|
||||
: this.pageData.rowGridSelectKey ==
|
||||
this.$refs[this.gridName].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
this.$refs[this.gridName].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
columnName: 'readPlcNm',
|
||||
setScroll: true,
|
||||
});
|
||||
@ -493,7 +502,7 @@ export default {
|
||||
if (this.tab == 2) {
|
||||
this.tab = 0;
|
||||
}
|
||||
this.isImgTabDisabled = false;
|
||||
this.isImgTabDisabled = true;
|
||||
} else {
|
||||
this.isImgTabDisabled = false;
|
||||
}
|
||||
@ -917,47 +926,47 @@ const defaultData = {
|
||||
};
|
||||
|
||||
const sampleData = [
|
||||
{
|
||||
readPlcNm: '서울 본사',
|
||||
plcKind: '본사',
|
||||
useFg: '사용',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '서울 본사 - 1층',
|
||||
plcKind: '층',
|
||||
useFg: '사용',
|
||||
},
|
||||
{
|
||||
readPlcNm: '서울 본사 - 2층',
|
||||
plcKind: '층',
|
||||
useFg: '미사용',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
readPlcNm: '부산 지사',
|
||||
plcKind: '지사',
|
||||
useFg: '사용',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동',
|
||||
plcKind: '건물',
|
||||
useFg: '사용',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동 1층',
|
||||
plcKind: '층',
|
||||
useFg: '사용',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
readPlcNm: '대전 창고',
|
||||
plcKind: '창고',
|
||||
useFg: '미사용',
|
||||
},
|
||||
{
|
||||
readPlcNm: '서울 본사',
|
||||
plcKind: '본사',
|
||||
useFg: '사용',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '서울 본사 - 1층',
|
||||
plcKind: '층',
|
||||
useFg: '사용',
|
||||
},
|
||||
{
|
||||
readPlcNm: '서울 본사 - 2층',
|
||||
plcKind: '층',
|
||||
useFg: '미사용',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
readPlcNm: '부산 지사',
|
||||
plcKind: '지사',
|
||||
useFg: '사용',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동',
|
||||
plcKind: '건물',
|
||||
useFg: '사용',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동 1층',
|
||||
plcKind: '층',
|
||||
useFg: '사용',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
readPlcNm: '대전 창고',
|
||||
plcKind: '창고',
|
||||
useFg: '미사용',
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents" class="mt-3">
|
||||
<v-col :cols="5" class="h100 pr-2">
|
||||
<v-col :cols="5" class="pr-2">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex align-center justify-space-between pa-5">
|
||||
물리량 리스트
|
||||
@ -50,7 +50,7 @@
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100 pl-2">
|
||||
<v-col :cols="7" class="pl-2">
|
||||
<v-card class="pb-5 px-4">
|
||||
<v-card-title class="px-0">물리량 상세</v-card-title>
|
||||
<v-row no-gutters>
|
||||
@ -114,7 +114,7 @@
|
||||
<component :is="'TextArea'" :parentPrgmId="myPrgmId" ref="TextArea" :item="calcDescItem" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row no-gutters v-show="argContentShowFlag">
|
||||
<v-row no-gutters v-show="argContentShowFlag" align="end" >
|
||||
<v-col :cols="12" class="py-2">
|
||||
<label for="">
|
||||
<v-icon small
|
||||
@ -122,13 +122,13 @@
|
||||
계산Argument
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<v-col :cols="6" class="py-2 pr-4">
|
||||
<InputText :parentPrgmId="myPrgmId" label="ARG갯수" valueNm="argCnt" :labelCols="12"
|
||||
:textCols="12" :iconShow="true" :required="requiredValueList[7]"
|
||||
:textCols="12" :iconShow="false" :required="requiredValueList[7]"
|
||||
:disabled="disabledValueList[7]" :readonly="readOnlyValueList[7]" />
|
||||
</v-col>
|
||||
<v-col :cols="4"> </v-col>
|
||||
<v-col :cols="12" class="py-2" align="right">
|
||||
<!-- <v-col :cols="4"> </v-col> -->
|
||||
<v-col :cols="6" class="py-2" align="right">
|
||||
<a-button type="primary" @click="btnAction('add')" class="v-btn-add-text mr-1" icon="plus">추가</a-button>
|
||||
<a-button type="danger" @click="btnAction('remove')" ghost danger icon="delete">삭제</a-button>
|
||||
</v-col>
|
||||
@ -225,61 +225,6 @@ export default {
|
||||
formatterSelectList02: [],
|
||||
|
||||
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,
|
||||
detailList: myDetail,
|
||||
|
||||
@ -954,6 +899,8 @@ export default {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
scrollX: true,
|
||||
scrollY: true,
|
||||
};
|
||||
|
||||
this.setGridOption({
|
||||
@ -967,7 +914,7 @@ export default {
|
||||
header: '물리량 ID',
|
||||
name: 'pysclQtyId',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
},
|
||||
{ header: '설비그룹 ID', name: 'eqpmGrpId', hidden: true },
|
||||
{ header: 'argCnt', name: 'argCnt', hidden: true },
|
||||
|
@ -359,7 +359,7 @@ const myDetail = [
|
||||
label: '설비종류 ID',
|
||||
valueNm: 'eqpmKindId',
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 pt-1',
|
||||
iconShow: true,
|
||||
required: false,
|
||||
readonly: true,
|
||||
@ -373,7 +373,7 @@ const myDetail = [
|
||||
valueNm: 'eqpmKindNm',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 pt-1',
|
||||
iconShow: true,
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
|
@ -461,7 +461,7 @@ const myDetail = [
|
||||
valueNm: 'eqpmGrpId',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 pt-1',
|
||||
required: false,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
@ -474,7 +474,7 @@ const myDetail = [
|
||||
valueNm: 'eqpmGrpNm',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 pt-1',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
|
@ -119,109 +119,6 @@ export default {
|
||||
selectValueList01: [],
|
||||
selectValue02: null,
|
||||
selectValueList02: [],
|
||||
// pyscPopupValueChkList: 'pyscPopupValueChkList',
|
||||
// pyscListChk: {
|
||||
// pysclQtyId1 : null,
|
||||
// pysclQtyId2 : null,
|
||||
// pysclQtyId3 : null,
|
||||
// pysclQtyId4 : null
|
||||
// }
|
||||
// dataPathExample: {
|
||||
// "rowGrid": {
|
||||
// data: [
|
||||
|
||||
// {
|
||||
// gdIdxId: 'GD001',
|
||||
// gdIdxNm: '온도 가이드',
|
||||
// eqpmGrpId: 'EQ001',
|
||||
// upTotMeth: 'AVG',
|
||||
// careStndVal: 50,
|
||||
// warnStndVal: 70,
|
||||
// alrmMsg: '온도가 기준치를 초과했습니다.',
|
||||
// },
|
||||
// {
|
||||
// gdIdxId: 'GD002',
|
||||
// gdIdxNm: '습도 가이드',
|
||||
// eqpmGrpId: 'EQ002',
|
||||
// upTotMeth: 'MAX',
|
||||
// careStndVal: 30,
|
||||
// warnStndVal: 60,
|
||||
// alrmMsg: '습도가 기준치를 초과했습니다.',
|
||||
// },
|
||||
// {
|
||||
// gdIdxId: 'GD003',
|
||||
// gdIdxNm: '압력 가이드',
|
||||
// eqpmGrpId: 'EQ003',
|
||||
// upTotMeth: 'SUM',
|
||||
// careStndVal: 100,
|
||||
// warnStndVal: 150,
|
||||
// alrmMsg: '압력이 기준치를 초과했습니다.',
|
||||
// }
|
||||
|
||||
// ],
|
||||
// column: [
|
||||
// {
|
||||
// header: '가이드',
|
||||
// name: 'gdIdxId',
|
||||
// width: 100,
|
||||
// align: 'center',
|
||||
// },
|
||||
// {
|
||||
// header: '가이드명',
|
||||
// name: 'gdIdxNm',
|
||||
// width: 210,
|
||||
// align: 'left',
|
||||
// },
|
||||
// {
|
||||
// header: '설비그룹ID',
|
||||
// name: 'eqpmGrpId',
|
||||
// width: 100,
|
||||
// align: 'center',
|
||||
// // formatter({ value }) {
|
||||
// // let retVal = '';
|
||||
// // const newValue = _this.pageData.eqpmGrpList.filter(item => item.value == value);
|
||||
// // if (newValue.length > 0) {
|
||||
// // retVal = newValue[0].text;
|
||||
// // }
|
||||
// // return retVal;
|
||||
// // },
|
||||
// },
|
||||
// {
|
||||
// header: '상위집계방법',
|
||||
// name: 'upTotMeth',
|
||||
// width: 100,
|
||||
// align: 'center',
|
||||
// // formatter({ value }) {
|
||||
// // let retVal = '';
|
||||
// // const newValue = _this.pageData.upTotMethList.filter(item => item.commCd == value);
|
||||
// // if (newValue.length > 0) {
|
||||
// // retVal = newValue[0].commCdNm;
|
||||
// // }
|
||||
// // return retVal;
|
||||
// // },
|
||||
// },
|
||||
// {
|
||||
// header: '주의기준',
|
||||
// name: 'careStndVal',
|
||||
// width: 100,
|
||||
// align: 'right',
|
||||
// },
|
||||
// {
|
||||
// header: '경고기준',
|
||||
// name: 'warnStndVal',
|
||||
// width: 100,
|
||||
// align: 'right',
|
||||
// },
|
||||
// {
|
||||
// header: '알람메세지',
|
||||
// name: 'alrmMsg',
|
||||
// minWidth: 860,
|
||||
// align: 'left',
|
||||
// }
|
||||
// ]
|
||||
|
||||
// }
|
||||
// }
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -627,59 +524,7 @@ export default {
|
||||
async getRowGridData() {
|
||||
this.loadGrid = false;
|
||||
let res = [];
|
||||
// const newRes = [
|
||||
// {
|
||||
// comId: 'COM001',
|
||||
// gdIdxId: 'GD001',
|
||||
// gdIdxNm: '온도 가이드',
|
||||
// eqpmGrpId: 'EQ001',
|
||||
// upTotMeth: 'AVG',
|
||||
// sortSeq: 1,
|
||||
// pysclQtyId1: 'TEMP',
|
||||
// pysclQtyId2: null,
|
||||
// pysclQtyId3: null,
|
||||
// pysclQtyId4: null,
|
||||
// ctgr1: '환경',
|
||||
// ctgr2: '내부',
|
||||
// careStndVal: 50,
|
||||
// warnStndVal: 70,
|
||||
// gdMeth: '자동',
|
||||
// useFg: '1',
|
||||
// alrmMsg: '온도가 기준치를 초과했습니다.',
|
||||
// calcProc: 'PROC001',
|
||||
// calcDesc: '평균 계산',
|
||||
// calcMeth: '(A+B)/2',
|
||||
// unit: 'C',
|
||||
// argCnt: 2,
|
||||
// rowStat: null,
|
||||
// },
|
||||
// {
|
||||
// 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({
|
||||
apiKey: 'selectEqpmGdIdxDataList',
|
||||
resKey: 'eqpmGdIdxDataList',
|
||||
@ -1453,7 +1298,7 @@ const myDetail = [
|
||||
class: 'pa-3',
|
||||
// required: true,
|
||||
openMode: 'ALL',
|
||||
disabled: false,
|
||||
disabled: true,
|
||||
eqpmKindId: '',
|
||||
eqpmGrpId: '',
|
||||
closeBtnFg: true,
|
||||
|
@ -16,7 +16,8 @@
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<!-- 대상일 -->
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'조회기간'" :textCols="12" />
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'조회기간'" :textCols="12"
|
||||
customClass="datepicker-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||
<BtnExcelDownload class="mr-1" :parentPrgmId="myPrgmId" :gridName="gridName" type="primary"
|
||||
@ -391,6 +392,7 @@ export default {
|
||||
resKey: 'pastRslPageTotal',
|
||||
sendParam: sendParams
|
||||
});
|
||||
|
||||
this.totalCount = res2[0].totalcount;
|
||||
|
||||
this.setGridData({
|
||||
|
@ -1,61 +1,43 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<!-- 사업장 -->
|
||||
<component
|
||||
:is="'SelectBlocMstr'"
|
||||
ref="SelectBlocMstr"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId"
|
||||
:textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'측정 Data 유형'"
|
||||
dataKey="searchReadDataType"
|
||||
:sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'측정 Data 유형'"
|
||||
dataKey="searchReadDataType" :sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
|
||||
:addAll="true" :textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'SelectReadObj'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'측정대상'"
|
||||
dataKey="searchReadObj"
|
||||
:sendParam="{ useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3" class="text-right">
|
||||
<BtnSearch @click="search" />
|
||||
<component :is="'SelectReadObj'" :parentPrgmId="myPrgmId" :label="'측정대상'"
|
||||
dataKey="searchReadObj" :sendParam="{ useFg: '1' }" :labelCols="12" :textCols="12"
|
||||
:addAll="true" customClass="select-large" />
|
||||
</v-col>
|
||||
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'사용여부'"
|
||||
dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'" dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :textCols="12"
|
||||
customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="TAG명"
|
||||
valueNm="tagNm"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:searchOption="true"
|
||||
/>
|
||||
<v-col :cols="3">
|
||||
<InputText :parentPrgmId="myPrgmId" label="TAG ID" valueNm="tagId" :labelCols="12"
|
||||
:textCols="12" :searchOption="true" customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<InputText :parentPrgmId="myPrgmId" label="TAG명" valueNm="tagNm" :labelCols="12"
|
||||
:textCols="12" :searchOption="true" customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
@ -66,63 +48,33 @@
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex justify-space-between align-end">
|
||||
<span class="tit ft-size_20 ft-weight_600">TAG 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:bindingData="gridName"
|
||||
:detailList="detailList"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||
:btnActionsFnc="btnActions" />
|
||||
</v-card-title>
|
||||
<v-card-actions>
|
||||
<div
|
||||
ref="gridParent"
|
||||
class="w100"
|
||||
style="height: calc(100vh - 360px)"
|
||||
>
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
/>
|
||||
<div ref="gridParent" class="w100" style="height: calc(100vh - 400px)">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
|
||||
</div>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" class="">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>TAG 상세</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 70px)">
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab
|
||||
v-for="item in items"
|
||||
:key="item.id"
|
||||
:disabled="item.disabledFlag"
|
||||
>
|
||||
<v-tab v-for="item in items" :key="item.id" :disabled="item.disabledFlag">
|
||||
{{ item.name }}
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
<v-tabs-items
|
||||
v-model="tab"
|
||||
style="height: calc(100% - 65px);"
|
||||
class="py-6"
|
||||
>
|
||||
<v-tabs-items v-model="tab" style="height: calc(100% - 65px);" class="py-6">
|
||||
<v-tab-item v-for="(item, idx) in items" :key="item.id">
|
||||
<component
|
||||
v-if="item.id == 'tagBaseInfoTab'"
|
||||
:is="'Form'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:detailList="detailList"
|
||||
@gridEditingFinish="gridEditingFinish"
|
||||
/>
|
||||
<TagAddInfoTab
|
||||
v-if="item.id == 'tagAddInfoTab'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }"
|
||||
/>
|
||||
<component v-if="item.id == 'tagBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId"
|
||||
:detailList="detailList" @gridEditingFinish="gridEditingFinish" />
|
||||
<TagAddInfoTab v-if="item.id == 'tagAddInfoTab'" :parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }" />
|
||||
</v-tab-item>
|
||||
</v-tabs-items>
|
||||
</div>
|
||||
@ -134,6 +86,7 @@
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import mixinGlobal from '@/mixin/global.js';
|
||||
import { resize } from '@/mixin/resize.js';
|
||||
import BtnSearch from '~/components/common/button/BtnSearch';
|
||||
import Buttons from '~/components/common/button/Buttons';
|
||||
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
|
||||
@ -149,7 +102,7 @@ let myTitle;
|
||||
// const myPrgmId = "PRG0051";
|
||||
let myPrgmId;
|
||||
export default {
|
||||
mixins: [mixinGlobal],
|
||||
mixins: [mixinGlobal, resize],
|
||||
async asyncData(context) {
|
||||
const myState = context.store.state;
|
||||
// context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
|
||||
@ -219,15 +172,19 @@ export default {
|
||||
},
|
||||
chkBlocId() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkReadDataType() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkReadObj() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkUseFg() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
},
|
||||
async beforeCreate() {
|
||||
@ -297,12 +254,16 @@ export default {
|
||||
this.gridInit();
|
||||
},
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 16;
|
||||
|
||||
const myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
scrollX: true,
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -316,21 +277,21 @@ export default {
|
||||
header: 'TAG ID',
|
||||
name: 'tagId',
|
||||
width: 'auto',
|
||||
minWidth: 280,
|
||||
minWidth: 340,
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
header: 'TAG 명',
|
||||
name: 'tagNm',
|
||||
width: 'auto',
|
||||
minWidth: 140,
|
||||
minWidth: 220,
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
header: '측정 값 유형',
|
||||
name: 'readDataTypeCd',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
width: 90,
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.readDataTypeCdList.filter(
|
||||
@ -346,7 +307,7 @@ export default {
|
||||
header: '측정대상',
|
||||
name: 'readObjId',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.readObjList.filter(
|
||||
@ -363,7 +324,7 @@ export default {
|
||||
header: '단위',
|
||||
name: 'unitCd',
|
||||
width: 80,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.unitCdList.filter(
|
||||
@ -493,6 +454,7 @@ export default {
|
||||
readObjId: this.pageData.searchReadObj,
|
||||
useFg: this.pageData.useFg,
|
||||
tagNmLike: this.pageData.tagNm,
|
||||
tagIdLike: this.pageData.tagId,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
@ -751,7 +713,8 @@ export default {
|
||||
});
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.setPageData({ isFind: true });
|
||||
this.search();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
@ -818,6 +781,7 @@ function isValidAlrmVal(obj) {
|
||||
|
||||
const defaultData = {
|
||||
/* 검색옵션 */
|
||||
tagId: '',
|
||||
tagNm: '',
|
||||
blocId: '',
|
||||
blocMstrList: [],
|
||||
@ -907,30 +871,39 @@ const myDetail = [
|
||||
label: 'TAG ID',
|
||||
valueNm: 'tagId',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4',
|
||||
required: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
label: 'TAG 명',
|
||||
valueNm: 'tagNm',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4',
|
||||
required: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
label: '측정 값 유형',
|
||||
valueNm: 'readDataTypeCd',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
list: 'readDataTypeCdList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -938,11 +911,14 @@ const myDetail = [
|
||||
valueNm: 'readObjId',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
list: 'readObjList',
|
||||
itemText: 'readObjNm',
|
||||
itemValue: 'readObjId',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -950,8 +926,11 @@ const myDetail = [
|
||||
valueNm: 'mgnf',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -959,10 +938,13 @@ const myDetail = [
|
||||
valueNm: 'unitCd',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
list: 'unitCdList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -970,7 +952,10 @@ const myDetail = [
|
||||
valueNm: 'rangMin',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -978,7 +963,10 @@ const myDetail = [
|
||||
valueNm: 'rangMax',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -986,7 +974,10 @@ const myDetail = [
|
||||
valueNm: 'alrmHihi',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -994,7 +985,10 @@ const myDetail = [
|
||||
valueNm: 'alrmHi',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -1002,7 +996,10 @@ const myDetail = [
|
||||
valueNm: 'alrmLo',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -1010,7 +1007,10 @@ const myDetail = [
|
||||
valueNm: 'alrmLolo',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'CheckBox',
|
||||
@ -1018,8 +1018,11 @@ const myDetail = [
|
||||
valueNm: 'totFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
value: { '1': true, '0': false },
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'CheckBox',
|
||||
@ -1027,9 +1030,12 @@ const myDetail = [
|
||||
valueNm: 'useFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
value: { '1': true, '0': false },
|
||||
required: false,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -1056,4 +1062,4 @@ const myDetail = [
|
||||
class: 'py-2',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
</script>
|
@ -69,7 +69,7 @@
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" class="">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>TAG 상세</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 70px)">
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<common-page-title />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="center" no-gutters>
|
||||
@ -555,7 +556,7 @@ export default {
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
rowHeight: 37,
|
||||
|
||||
|
||||
// pageOptions: {
|
||||
|
@ -6,7 +6,7 @@
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="2.5">
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연도'" />
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연도'" customClass="datepicker-large"/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||
@ -24,9 +24,9 @@
|
||||
<BtnSearch size="large" @click="search" />
|
||||
<!-- <v-col>
|
||||
</v-col> -->
|
||||
<component ref="EnrgUsePlanModiPop" :is="'EnrgUsePlanModiPop'" :label="'test'" :parentPrgmId="myPrgmId"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
</v-row>
|
||||
<component ref="EnrgUsePlanModiPop" :is="'EnrgUsePlanModiPop'" :label="'test'" :parentPrgmId="myPrgmId"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -44,8 +44,6 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@ -106,9 +104,6 @@ export default {
|
||||
fromDt: new Date().getFullYear(),
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
dataPathMock: {
|
||||
// "grid01": {}
|
||||
},
|
||||
// gridName: 'rowGrid',
|
||||
};
|
||||
},
|
||||
@ -166,12 +161,8 @@ export default {
|
||||
defaultData: defaultData,
|
||||
});
|
||||
},
|
||||
created() { },
|
||||
created() {},
|
||||
async mounted() {
|
||||
// -------
|
||||
// this.initTest();
|
||||
// return;
|
||||
// ========End test===========
|
||||
await this.init();
|
||||
this.initedFlag = true;
|
||||
},
|
||||
@ -184,122 +175,6 @@ export default {
|
||||
getBlocMstrList: 'modules/search/getBlocMstrList',
|
||||
getAddInfoList: 'modules/search/getAddInfoList',
|
||||
}),
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
}),
|
||||
initTest() {
|
||||
let _this = this;
|
||||
// _this.setPageData({ popupDialogFg: true });
|
||||
|
||||
class MockCustumButton {
|
||||
constructor(props) {
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
const value = columnInfo.renderer.options.value;
|
||||
|
||||
const elDiv = document.createElement('div');
|
||||
elDiv.innerHTML = `<span>${value}</span>`;
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el = document.createElement('button');
|
||||
$(el).addClass('edit-btn blue--text');
|
||||
el.innerText = 'Edit';
|
||||
|
||||
el.addEventListener('click', function (event) {
|
||||
// console.log("------DEBUG----_this:", _this);
|
||||
// _this.setPageData({ eqpmNm: selectedGridData[0]?.eqpmNm });
|
||||
_this.setPageData({ popupDialogFg: true });
|
||||
});
|
||||
|
||||
elDiv.appendChild(el);
|
||||
this.elDiv = elDiv;
|
||||
}
|
||||
|
||||
getElement() {
|
||||
return this.elDiv;
|
||||
}
|
||||
}
|
||||
const mockData = {
|
||||
column: [
|
||||
{ header: 'No', name: 'rowNum', align: 'center', width: 40 },
|
||||
{ header: 'FAB', name: 'fab', align: 'left', width: 80 },
|
||||
{ header: '설비 그룹', name: 'eqpmGrpNm', align: 'left', minWidth: 150 },
|
||||
// {
|
||||
// header: '설비명', name: 'eqpmNm', align: 'left', minWidth: 150,
|
||||
// formatter: ({ value, row }) => {
|
||||
// return `
|
||||
// <div class="d-flex justify-space-between">
|
||||
// <span>${value}</span>
|
||||
// <button class="edit-btn blue--text" data-row='${JSON.stringify(row)}'>Edit</button
|
||||
// </div>
|
||||
// `;
|
||||
// }
|
||||
// },
|
||||
{
|
||||
header: '설비명',
|
||||
name: 'eqpmNm',
|
||||
width: 70,
|
||||
align: 'left',
|
||||
minWidth: 150,
|
||||
renderer: {
|
||||
type: MockCustumButton,
|
||||
options: {
|
||||
value: '계획수정',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
header: '구분', name: 'gubun', align: 'left', width: 80,
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
if (value == '1RSLT') {
|
||||
retVal = '전년실적';
|
||||
} else if (value == '2PLAN') {
|
||||
retVal = '계획';
|
||||
} else {
|
||||
retVal = value;
|
||||
}
|
||||
return retVal;
|
||||
},
|
||||
},
|
||||
|
||||
{ header: '1월', name: 'jan', align: 'right', width: 80 },
|
||||
{ header: '2월', name: 'feb', align: 'right', width: 80 },
|
||||
{ header: '3월', name: 'mar', align: 'right', width: 80 },
|
||||
{ header: '4월', name: 'apr', align: 'right', width: 80 },
|
||||
{ header: '5월', name: 'may', align: 'right', width: 80 },
|
||||
{ header: '6월', name: 'jun', align: 'right', width: 80 },
|
||||
{ header: '7월', name: 'jul', align: 'right', width: 80 },
|
||||
{ header: '8월', name: 'aug', align: 'right', width: 80 },
|
||||
{ header: '9월', name: 'sep', align: 'right', width: 80 },
|
||||
{ header: '10월', name: 'oct', align: 'right', width: 80 },
|
||||
{ header: '11월', name: 'nov', align: 'right', width: 80 },
|
||||
{ header: '12월', name: 'dec', align: 'right', width: 80 }
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 65,
|
||||
complexColumns: [
|
||||
{
|
||||
header: '2025 년',
|
||||
name: 'yyyyCol',
|
||||
childNames: [
|
||||
'jan', 'feb', 'mar', 'apr', 'may', 'jun',
|
||||
'jul', 'aug', 'sep', 'oct', 'nov', 'dec'
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
||||
};
|
||||
this.dataPathMock[this.gridName] = mockData;
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
async init() {
|
||||
await this.getFab();
|
||||
await this.getEqpmKind();
|
||||
@ -436,7 +311,7 @@ export default {
|
||||
|
||||
if (!this.disabled) {
|
||||
// click 이벤트
|
||||
el2.addEventListener('click', function (event) {
|
||||
this.el.addEventListener('click', function(event) {
|
||||
let gridData = grid.store.data.rawData;
|
||||
let rowNum = gridData[rowKey].rowNum;
|
||||
let selectedGridData = gridData.filter(item => {
|
||||
@ -600,7 +475,7 @@ export default {
|
||||
let selectedGridData = gridData.filter(item => {
|
||||
return item.rowNum == data.rowNum;
|
||||
});
|
||||
await this.$nextTick(() => { });
|
||||
await this.$nextTick(() => {});
|
||||
this.setPageData({
|
||||
rowGrid2SelectData: selectedGridData,
|
||||
});
|
||||
@ -799,8 +674,8 @@ export default {
|
||||
dataArr[i][qty] == ''
|
||||
? null
|
||||
: parseInt(dataArr[i][qty]) == 0
|
||||
? 0
|
||||
: dataArr[i][qty];
|
||||
? 0
|
||||
: dataArr[i][qty];
|
||||
dataList.push(temp);
|
||||
}
|
||||
}
|
||||
@ -942,110 +817,18 @@ const defaultData = {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
rowNum: 1,
|
||||
fab: 'B01',
|
||||
eqpmGrpNm: '방송기술운',
|
||||
eqpmNm: 'U/T_LT_CH101',
|
||||
gubun: '전력량',
|
||||
jan: 110000,
|
||||
feb: 112000,
|
||||
mar: 115000,
|
||||
apr: 117000,
|
||||
may: 120000,
|
||||
jun: 118000,
|
||||
jul: 119000,
|
||||
aug: 121000,
|
||||
sep: 122000,
|
||||
oct: 123000,
|
||||
nov: 124000,
|
||||
dec: 125000
|
||||
},
|
||||
{
|
||||
rowNum: 2,
|
||||
fab: 'B02',
|
||||
eqpmGrpNm: '방송기술운',
|
||||
eqpmNm: 'U/T_LT_CH102',
|
||||
gubun: '전력량',
|
||||
jan: 81000,
|
||||
feb: 82000,
|
||||
mar: 83000,
|
||||
apr: 84000,
|
||||
may: 85000,
|
||||
jun: 86000,
|
||||
jul: 87000,
|
||||
aug: 88000,
|
||||
sep: 89000,
|
||||
oct: 90000,
|
||||
nov: 91000,
|
||||
dec: 92000
|
||||
},
|
||||
{
|
||||
rowNum: 3, fab: 'C01', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH124', gubun: '수도량',
|
||||
jan: 106178, feb: 104740, mar: 92283, apr: 116081, may: 98945, jun: 126579,
|
||||
jul: 90690, aug: 124243, sep: 97524, oct: 84072, nov: 88160, dec: 118183
|
||||
},
|
||||
{
|
||||
rowNum: 4, fab: 'B01', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH103', gubun: '가스량',
|
||||
jan: 80442, feb: 102867, mar: 114939, apr: 106335, may: 81743, jun: 83711,
|
||||
jul: 86114, aug: 97432, sep: 84146, oct: 84775, nov: 117921, dec: 119417
|
||||
},
|
||||
{
|
||||
rowNum: 5, fab: 'B01', eqpmGrpNm: '설비운영팀', eqpmNm: 'U/T_LT_CH156', gubun: '전력량',
|
||||
jan: 90341, feb: 94072, mar: 122754, apr: 85471, may: 90813, jun: 116831,
|
||||
jul: 90856, aug: 109437, sep: 94029, oct: 96075, nov: 127067, dec: 102503
|
||||
},
|
||||
{
|
||||
rowNum: 6, fab: 'B03', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH183', gubun: '가스량',
|
||||
jan: 104163, feb: 107012, mar: 104631, apr: 83055, may: 106311, jun: 117306,
|
||||
jul: 86434, aug: 117087, sep: 118414, oct: 91499, nov: 93829, dec: 94192
|
||||
},
|
||||
{
|
||||
rowNum: 7, fab: 'C01', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH158', gubun: '가스량',
|
||||
jan: 84821, feb: 128234, mar: 116883, apr: 116718, may: 114738, jun: 88297,
|
||||
jul: 93840, aug: 84700, sep: 98360, oct: 87021, nov: 113098, dec: 94734
|
||||
},
|
||||
{
|
||||
rowNum: 8, fab: 'B02', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH179', gubun: '가스량',
|
||||
jan: 128714, feb: 88797, mar: 124808, apr: 109283, may: 113141, jun: 82873,
|
||||
jul: 114993, aug: 129108, sep: 100885, oct: 125730, nov: 92127, dec: 122286
|
||||
},
|
||||
{
|
||||
rowNum: 9, fab: 'C01', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH191', gubun: '전력량',
|
||||
jan: 107258, feb: 108424, mar: 113604, apr: 116648, may: 124149, jun: 129978,
|
||||
jul: 112215, aug: 129602, sep: 93551, oct: 111272, nov: 89736, dec: 128423
|
||||
},
|
||||
{
|
||||
rowNum: 10, fab: 'B02', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH104', gubun: '전력량',
|
||||
jan: 82089, feb: 102793, mar: 96784, apr: 85238, may: 86153, jun: 123849,
|
||||
jul: 115095, aug: 129484, sep: 102109, oct: 80976, nov: 119841, dec: 106309
|
||||
},
|
||||
{
|
||||
rowNum: 11, fab: 'C02', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH139', gubun: '전력량',
|
||||
jan: 128592, feb: 95647, mar: 85982, apr: 126824, may: 87928, jun: 128967,
|
||||
jul: 94637, aug: 107530, sep: 122533, oct: 97546, nov: 112110, dec: 126250
|
||||
},
|
||||
{
|
||||
rowNum: 12, fab: 'C01', eqpmGrpNm: '설비운영팀', eqpmNm: 'U/T_LT_CH109', gubun: '전력량',
|
||||
jan: 106530, feb: 91716, mar: 111104, apr: 102663, may: 108912, jun: 91464,
|
||||
jul: 121245, aug: 90785, sep: 120586, oct: 105718, nov: 96191, dec: 111513
|
||||
}
|
||||
];
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
// @import '@/assets/scss/common.scss';
|
||||
@import '@/assets/scss/var.scss';
|
||||
|
||||
@each $theme in dark, light {
|
||||
.v-application.#{$theme}-mode {
|
||||
.tui-grid {
|
||||
|
||||
&-row-odd,
|
||||
&-row-even {
|
||||
&:hover>.colrowspan {
|
||||
background-color: map-deep-get($config,
|
||||
&:hover > .colrowspan {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
'tui-grid-cell-backgroundColor'
|
||||
) !important;
|
||||
@ -1055,10 +838,10 @@ const dataPathDataExample = [
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-cell {
|
||||
&.row-selected.colrowspan {
|
||||
background-color: map-deep-get($config,
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
'tui-grid-cell-backgroundColor'
|
||||
) !important;
|
||||
|
@ -253,8 +253,9 @@ export class NewCustomRenderer {
|
||||
} else {
|
||||
el.type = 'text';
|
||||
|
||||
$(el).addClass('tui-grid-cell-content');
|
||||
$(el).addClass('tui-grid-cell-content w100');
|
||||
$(el).css('text-align', 'center');
|
||||
$(el).css('border', '0');
|
||||
}
|
||||
this.render(props);
|
||||
if(!this.disabled){
|
||||
@ -314,6 +315,8 @@ export class NewCustomEditor {
|
||||
this.rowKey = rowKey;
|
||||
this.columnInfo = columnInfo;
|
||||
this.grid = grid;
|
||||
const divEl = document.createElement('div');
|
||||
$(divEl).css('text-align', 'center');
|
||||
const el = document.createElement('input');
|
||||
if (
|
||||
props.grid.store.data.rawData[props.rowKey].addInfoDataKind == 'FG'
|
||||
@ -363,16 +366,20 @@ export class NewCustomEditor {
|
||||
}
|
||||
$(el).addClass('tui-grid-content-text');
|
||||
}
|
||||
|
||||
divEl.append(el);
|
||||
|
||||
// console.log('props: %o', props);
|
||||
// console.log('el: %o', el);
|
||||
this.el = el;
|
||||
this.divEl = divEl;
|
||||
|
||||
this.render(props);
|
||||
|
||||
}
|
||||
|
||||
getElement() {
|
||||
return this.el;
|
||||
return this.divEl;
|
||||
}
|
||||
|
||||
getValue() {
|
||||
@ -389,9 +396,9 @@ export class NewCustomEditor {
|
||||
}
|
||||
|
||||
mounted() {
|
||||
if (this.el.type == 'checkbox') {
|
||||
$(this.el.parentElement).css('text-align', 'center');
|
||||
}
|
||||
// if (this.el.type == 'checkbox') {
|
||||
// $(this.el.parentElement).css('text-align', 'center');
|
||||
// }
|
||||
this.el.select();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user