Compare commits
23 Commits
dev-luannv
...
39905e6f80
Author | SHA1 | Date | |
---|---|---|---|
39905e6f80 | |||
0825663c64 | |||
8d444eafcd | |||
71e90064a2 | |||
7d2bcb9496 | |||
84c7e61254 | |||
ffdc56b8f1 | |||
245444d5fa | |||
541ae86068 | |||
5c43496282 | |||
31413d1e48 | |||
dd24592eca | |||
e59078a19c | |||
bc96d2ae45 | |||
4fd2eac344 | |||
c40352e37c | |||
6583d68ea7 | |||
5859c5d681 | |||
d6dd66c4b3 | |||
f666110a1a | |||
d22b09cc47 | |||
ecfbeb3afa | |||
1ece377457 |
3
assets/images/SwapRight.svg
Normal file
3
assets/images/SwapRight.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.4369 8.15117L10.1947 5.30742C10.1538 5.25551 10.1017 5.21353 10.0423 5.18464C9.98285 5.15575 9.91764 5.14071 9.85156 5.14062H8.96562C8.87402 5.14062 8.82344 5.2459 8.87949 5.31836L10.8523 7.82031H2.57812C2.51797 7.82031 2.46875 7.86953 2.46875 7.92969V8.75C2.46875 8.81016 2.51797 8.85938 2.57812 8.85938H12.0924C12.4588 8.85938 12.6625 8.43828 12.4369 8.15117Z" fill="black" fill-opacity="0.45"/>
|
||||
</svg>
|
After Width: | Height: | Size: 514 B |
3
assets/images/SwapRight_Dark.svg
Normal file
3
assets/images/SwapRight_Dark.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.4369 8.15117L10.1947 5.30742C10.1538 5.25551 10.1017 5.21353 10.0423 5.18464C9.98285 5.15575 9.91764 5.14071 9.85156 5.14062H8.96562C8.87402 5.14062 8.82344 5.2459 8.87949 5.31836L10.8523 7.82031H2.57812C2.51797 7.82031 2.46875 7.86953 2.46875 7.92969V8.75C2.46875 8.81016 2.51797 8.85938 2.57812 8.85938H12.0924C12.4588 8.85938 12.6625 8.43828 12.4369 8.15117Z" fill="white" fill-opacity="0.45"/>
|
||||
</svg>
|
After Width: | Height: | Size: 514 B |
@ -9,6 +9,7 @@
|
||||
@import "./common/card.scss";
|
||||
@import "./common/tabs.scss";
|
||||
@import "./common/numericInput.scss";
|
||||
@import "./common/pagination.scss";
|
||||
@import "./common/editor.scss";
|
||||
|
||||
|
||||
@ -443,6 +444,10 @@ a {
|
||||
.v-application.#{$theme}-mode {
|
||||
min-width: 1000px;
|
||||
|
||||
.icon-datepicker-color {
|
||||
color: map-deep-get($config, #{$theme}, "icon-datepicker-color");
|
||||
}
|
||||
|
||||
.head-logo {
|
||||
gap: 8px;
|
||||
}
|
||||
@ -949,6 +954,7 @@ a {
|
||||
& th,
|
||||
& td {
|
||||
height: 48px;
|
||||
color: map-deep-get($config, #{$theme}, "tui-datepicker-calendar-color");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -140,6 +140,7 @@
|
||||
&.ant-btn-popup-default {
|
||||
background:map-deep-get($config, #{$theme}, "ant-btn-popup-bg");
|
||||
color:map-deep-get($config, #{$theme}, "ant-btn-popup-color");
|
||||
border: 1px solid map-deep-get($config, #{$theme}, "ant-btn-popup-border");
|
||||
}
|
||||
|
||||
&.ant-btn-danger {
|
||||
|
43
assets/scss/common/pagination.scss
Normal file
43
assets/scss/common/pagination.scss
Normal file
@ -0,0 +1,43 @@
|
||||
@each $theme in dark, light {
|
||||
|
||||
// @include theme($theme);
|
||||
.v-application.#{$theme}-mode {
|
||||
|
||||
.ant-pagination-item,
|
||||
.ant-pagination-prev,
|
||||
.ant-pagination-next {
|
||||
// border: none !important;
|
||||
// box-shadow: none !important;
|
||||
background-color: map-deep-get($config, #{$theme}, "paging-background") !important;
|
||||
color: map-deep-get($config, #{$theme}, "paging-text") !important;
|
||||
border: none;
|
||||
|
||||
.ant-pagination-item-link {
|
||||
border: none;
|
||||
background-color: map-deep-get($config, #{$theme}, "paging-background") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-pagination-item-active {
|
||||
border: 1px solid #1890ff !important;
|
||||
color: #1890ff !important
|
||||
}
|
||||
|
||||
.ant-pagination-options-size-changer {
|
||||
.ant-select-selection {
|
||||
border: 0.5px solid map-deep-get($config, #{$theme}, "v-input-fieldset-color") !important;
|
||||
background: map-deep-get($config, #{$theme}, "paging-background") !important;
|
||||
color: map-deep-get($config, #{$theme}, "paging-text") !important;
|
||||
}
|
||||
|
||||
.ant-select-arrow {
|
||||
color: map-deep-get($config, #{$theme}, "paging-text") !important;
|
||||
}
|
||||
|
||||
.ant-select-selection__rendered {
|
||||
margin-right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -66,6 +66,10 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
color: map-deep-get($config, #{$theme}, "v-icon-chevron-down") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.v-input__custom {
|
||||
|
@ -181,6 +181,10 @@ $config: (
|
||||
ant-checkbox-border: #424242,
|
||||
ant-btn-popup-bg: #212224,
|
||||
ant-btn-popup-color: #FFFFFFD9,
|
||||
ant-btn-popup-border: #424242,
|
||||
paging-background: #212224,
|
||||
paging-text: #FFFFFFD9,
|
||||
icon-datepicker-color: #FFFFFF73,
|
||||
),
|
||||
light: (w-g5: $--color-gray_555,
|
||||
g5-w: $--color-white,
|
||||
@ -325,5 +329,9 @@ $config: (
|
||||
ant-checkbox-border: #D9D9D9,
|
||||
ant-btn-popup-bg: #FFFFFF,
|
||||
ant-btn-popup-color: #000000E0,
|
||||
ant-btn-popup-border: #D9D9D9,
|
||||
paging-background: #FFFFFF,
|
||||
paging-text: #000000E0,
|
||||
icon-datepicker-color: #00000073,
|
||||
),
|
||||
);
|
@ -1,14 +1,12 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<v-col v-if="label" :cols="labelCols" >
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="iconShow" small :class="['mr-1', required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
|
||||
|
||||
<a-checkbox v-model="chkValue" :disabled="disabledFlag" :readonly="readonly || false"
|
||||
:required="required || false" @change="modifyValue">
|
||||
</a-checkbox>
|
||||
|
@ -19,15 +19,18 @@
|
||||
readonly
|
||||
outlined
|
||||
>
|
||||
<template #append >
|
||||
<!-- <template #append >
|
||||
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
|
||||
</template> -->
|
||||
<template v-slot:append>
|
||||
<a-icon v-show="!isRange" class="v-icon" type="calendar" style="width: 14px; height: 14px;" />
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container" id="startpicker-container"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
<div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }">
|
||||
<img :src="arrowIcon" alt="">
|
||||
<img :src="arrowIcon">
|
||||
</div>
|
||||
<v-text-field
|
||||
v-show="isRange"
|
||||
@ -40,7 +43,9 @@
|
||||
outlined
|
||||
>
|
||||
<template #append>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
<div class="pr-1">
|
||||
<a-icon class="v-icon" type="calendar" style="width: 14px; height: 14px;" />
|
||||
</div>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="endpicker-container" id="endpicker-container"></div>
|
||||
@ -209,9 +214,9 @@ export default {
|
||||
},
|
||||
arrowIcon() {
|
||||
if(this.isDarkMode){
|
||||
return require('@/assets/images/arrow_datepicker_dm.png');
|
||||
return require('@/assets/images/SwapRight_Dark.svg');
|
||||
}
|
||||
return require('@/assets/images/arrow_datepicker.png');
|
||||
return require('@/assets/images/SwapRight.svg');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
@ -5,10 +5,7 @@
|
||||
<!-- <v-icon x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
> -->
|
||||
<v-icon
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>
|
||||
<v-icon small :class="['mr-1', required ? 'icon-orange' : 'icon-blue']">
|
||||
$icoBulletPoint
|
||||
</v-icon>
|
||||
{{ label }}
|
||||
@ -16,17 +13,11 @@
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<div class="datepicker-container">
|
||||
<v-text-field
|
||||
id="startpicker"
|
||||
ref="startpicker"
|
||||
v-model="fromDtValue"
|
||||
:class="isRange ? 'v-input__custom half' : 'v-input__custom'"
|
||||
:hide-details="true"
|
||||
readonly
|
||||
outlined
|
||||
>
|
||||
<template #append >
|
||||
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
|
||||
<v-text-field id="startpicker" ref="startpicker" v-model="fromDtValue"
|
||||
:class="isRange ? 'v-input__custom half' : 'v-input__custom'" :hide-details="true" readonly
|
||||
outlined>
|
||||
<template v-slot:append>
|
||||
<a-icon v-show="!isRange" class="v-icon" type="calendar" style="width: 14px; height: 14px;" />
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container" id="startpicker-container"></div>
|
||||
@ -36,18 +27,13 @@
|
||||
<div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">
|
||||
<img :src="arrowIcon" alt="">
|
||||
</div>
|
||||
<v-text-field
|
||||
v-show="isRange"
|
||||
id="endpicker"
|
||||
ref="endpicker"
|
||||
v-model="toDtValue"
|
||||
:class="isRange ? 'v-input__custom half' : 'v-input__custom'"
|
||||
:hide-details="true"
|
||||
readonly
|
||||
outlined
|
||||
>
|
||||
<v-text-field v-show="isRange" id="endpicker" ref="endpicker" v-model="toDtValue"
|
||||
:class="isRange ? 'v-input__custom half' : 'v-input__custom'" :hide-details="true" readonly
|
||||
outlined>
|
||||
<template #append>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
<div class="pr-1">
|
||||
<a-icon class="v-icon" type="calendar" style="width: 14px; height: 14px;" />
|
||||
</div>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="endpicker-container" id="endpicker-container"></div>
|
||||
@ -91,9 +77,9 @@ export default {
|
||||
require: false,
|
||||
default: false,
|
||||
},
|
||||
isRangeOption:{
|
||||
type:Boolean,
|
||||
require:false,
|
||||
isRangeOption: {
|
||||
type: Boolean,
|
||||
require: false,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
@ -177,21 +163,23 @@ export default {
|
||||
this.myOptions.viewFormat,
|
||||
);
|
||||
},
|
||||
toDtChange(){
|
||||
toDtChange() {
|
||||
return {
|
||||
isCheck:this.searchParam.isCheck ,
|
||||
toDt : Utility.setFormatDate(
|
||||
this.searchParam.toDt,
|
||||
this.myOptions.viewFormat,
|
||||
)};
|
||||
isCheck: this.searchParam.isCheck,
|
||||
toDt: Utility.setFormatDate(
|
||||
this.searchParam.toDt,
|
||||
this.myOptions.viewFormat,
|
||||
)
|
||||
};
|
||||
},
|
||||
fromDtChange(){
|
||||
fromDtChange() {
|
||||
return {
|
||||
isCheck:this.searchParam.isCheck ,
|
||||
fromDt : Utility.setFormatDate(
|
||||
isCheck: this.searchParam.isCheck,
|
||||
fromDt: Utility.setFormatDate(
|
||||
this.searchParam.fromDt,
|
||||
this.myOptions.viewFormat,
|
||||
)};
|
||||
)
|
||||
};
|
||||
},
|
||||
defaultRange() {
|
||||
return this.searchParam.defaultRange
|
||||
@ -205,10 +193,10 @@ export default {
|
||||
);
|
||||
},
|
||||
arrowIcon() {
|
||||
if(this.isDarkMode){
|
||||
return require('@/assets/images/arrow_datepicker_dm.png');
|
||||
if (this.isDarkMode) {
|
||||
return require('@/assets/images/SwapRight_Dark.svg');
|
||||
}
|
||||
return require('@/assets/images/arrow_datepicker.png');
|
||||
return require('@/assets/images/SwapRight.svg');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -242,24 +230,24 @@ export default {
|
||||
this.endDatepickerInstance.setDate(new Date(newVal));
|
||||
}
|
||||
},
|
||||
fromDtChange:{
|
||||
deep:true,
|
||||
handler(){
|
||||
if(this.fromDtChange.isCheck){
|
||||
fromDtChange: {
|
||||
deep: true,
|
||||
handler() {
|
||||
if (this.fromDtChange.isCheck) {
|
||||
this.fromDtChanged(this.fromDtChange.fromDt);
|
||||
this.setPageData({
|
||||
isCheck : false
|
||||
isCheck: false
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
toDtChange:{
|
||||
deep:true,
|
||||
handler(){
|
||||
if(this.toDtChange.isCheck){
|
||||
toDtChange: {
|
||||
deep: true,
|
||||
handler() {
|
||||
if (this.toDtChange.isCheck) {
|
||||
this.toDtChanged(this.toDtChange.toDt);
|
||||
this.setPageData({
|
||||
isCheck : false
|
||||
isCheck: false
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -370,7 +358,7 @@ export default {
|
||||
if (
|
||||
(myRange > rangeGap && compareDt.isAfter(defaultDt)) ||
|
||||
defaultDt.format(this.myOptions.sendFormat) ===
|
||||
compareDt.format(this.myOptions.sendFormat)
|
||||
compareDt.format(this.myOptions.sendFormat)
|
||||
) {
|
||||
// if(this.cmCycleFlag){
|
||||
this.setPageData({ isFind: true });
|
||||
@ -400,7 +388,7 @@ export default {
|
||||
if (
|
||||
(myRange > rangeGap && defaultDt.isAfter(compareDt)) ||
|
||||
defaultDt.format(this.myOptions.sendFormat) ===
|
||||
compareDt.format(this.myOptions.sendFormat)
|
||||
compareDt.format(this.myOptions.sendFormat)
|
||||
) {
|
||||
this.setPageData({ isFind: true });
|
||||
} else {
|
||||
@ -424,6 +412,7 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
background-color: #edf4fc;
|
||||
|
||||
.tui-timepicker-column.tui-timepicker-colon {
|
||||
color: #000 !important;
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ export default {
|
||||
}, 500);
|
||||
},
|
||||
},
|
||||
created() {},
|
||||
created() { },
|
||||
async mounted() {
|
||||
// console.log(this.dataPath);
|
||||
if (this.gridName) {
|
||||
@ -166,9 +166,9 @@ export default {
|
||||
|
||||
this.scrollBody = document
|
||||
.getElementsByClassName('tui-grid-rside-area')
|
||||
[
|
||||
document.getElementsByClassName('tui-grid-rside-area').length - 1
|
||||
].getElementsByClassName('tui-grid-body-area')[0];
|
||||
[
|
||||
document.getElementsByClassName('tui-grid-rside-area').length - 1
|
||||
].getElementsByClassName('tui-grid-body-area')[0];
|
||||
|
||||
this.scrollBody.addEventListener('scroll', e => {
|
||||
this.gridScrollTop = e.target.scrollTop;
|
||||
@ -344,14 +344,14 @@ export default {
|
||||
'row-removed',
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
await this.gridInstance.invoke(
|
||||
e.rowEditingFg != undefined ? 'setValue' : this.editorGrid ? 'finishEditing' : 'setValue',
|
||||
rowIdxKey,
|
||||
columnName,
|
||||
value,
|
||||
);
|
||||
|
||||
|
||||
|
||||
if (isBaseRow) {
|
||||
const isSameData = await this.compareData(editingData);
|
||||
@ -606,18 +606,20 @@ export default {
|
||||
list.map(item => this.gridInstance.invoke('check', item));
|
||||
},
|
||||
refreshLayout() {
|
||||
// console.log("---------DEBUG---refreshLayout: ");
|
||||
this.gridInstance.invoke('refreshLayout');
|
||||
setTimeout(() => {
|
||||
this.gridInstance.invoke('refreshLayout');
|
||||
}, 150);
|
||||
// this.gridInstance.invoke('refreshLayout');
|
||||
},
|
||||
refreshGrid(){
|
||||
refreshGrid() {
|
||||
// console.log("refreshLayout",this.$refs['tuigrid' + this.gridName])
|
||||
var store = this.$refs['tuigrid' + this.gridName].gridInstance.store;
|
||||
var containerEl = this.$refs['tuigrid' + this.gridName].$el;
|
||||
// var containerEl = document.querySelector('.tui-grid-container')
|
||||
var parentEl = containerEl.parentElement;
|
||||
var store = this.$refs['tuigrid' + this.gridName].gridInstance.store;
|
||||
var containerEl = this.$refs['tuigrid' + this.gridName].$el;
|
||||
// var containerEl = document.querySelector('.tui-grid-container')
|
||||
var parentEl = containerEl.parentElement;
|
||||
|
||||
// console.log("---------DEBUG---containerEl: ",containerEl);
|
||||
// console.log('---------DEBUG---parentEl: ', parentEl)
|
||||
// console.log('---------DEBUG---parentEl: ', parentEl)
|
||||
// function refreshLayout(store, containerEl, parentEl) {
|
||||
var dimension = store.dimension;
|
||||
var autoWidth = dimension.autoWidth, fitToParentHeight = dimension.fitToParentHeight;
|
||||
@ -636,35 +638,35 @@ export default {
|
||||
// console.log("parentEl.clientHeight" , parentEl.clientHeight)
|
||||
// console.log("clientHeight : ",clientHeight);
|
||||
if (parentEl && parentEl.clientHeight !== clientHeight) {
|
||||
var _b = getComputedStyle(parentEl), paddingTop = _b.paddingTop, paddingBottom = _b.paddingBottom;
|
||||
this.setHeight(store, parentEl.clientHeight - (parseFloat(paddingTop) + parseFloat(paddingBottom)));
|
||||
var _b = getComputedStyle(parentEl), paddingTop = _b.paddingTop, paddingBottom = _b.paddingBottom;
|
||||
this.setHeight(store, parentEl.clientHeight - (parseFloat(paddingTop) + parseFloat(paddingBottom)));
|
||||
}
|
||||
// }
|
||||
// }
|
||||
},
|
||||
setOffsetTop(store, offsetTop) {
|
||||
setOffsetTop(store, offsetTop) {
|
||||
// console.log("---------DEBUG---setOffsetTop: ");
|
||||
store.dimension.offsetTop = offsetTop;
|
||||
},
|
||||
setWidth(_a, width, autoWidth) {
|
||||
store.dimension.offsetTop = offsetTop;
|
||||
},
|
||||
setWidth(_a, width, autoWidth) {
|
||||
// console.log("---------DEBUG---setWidth: ");
|
||||
var dimension = _a.dimension;
|
||||
dimension.autoWidth = autoWidth;
|
||||
dimension.width = width;
|
||||
},
|
||||
setHeaderHeight(store, height) {
|
||||
var dimension = _a.dimension;
|
||||
dimension.autoWidth = autoWidth;
|
||||
dimension.width = width;
|
||||
},
|
||||
setHeaderHeight(store, height) {
|
||||
// console.log("---------DEBUG---setHeaderHeight: ");
|
||||
store.dimension.headerHeight = height;
|
||||
},
|
||||
setOffsetLeft(store, offsetLeft) {
|
||||
store.dimension.headerHeight = height;
|
||||
},
|
||||
setOffsetLeft(store, offsetLeft) {
|
||||
// console.log("---------DEBUG---setOffsetLeft: ");
|
||||
store.dimension.offsetLeft = offsetLeft;
|
||||
},
|
||||
setHeight(_a,height){
|
||||
store.dimension.offsetLeft = offsetLeft;
|
||||
},
|
||||
setHeight(_a, height) {
|
||||
// console.log("---------DEBUG---setHeight: ");
|
||||
var dimension = _a.dimension;
|
||||
var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth;
|
||||
dimension.bodyHeight = height - headerHeight - summaryHeight - tableBorderWidth;
|
||||
},
|
||||
var dimension = _a.dimension;
|
||||
var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth;
|
||||
dimension.bodyHeight = height - headerHeight - summaryHeight - tableBorderWidth;
|
||||
},
|
||||
sendSelectedRowData(eventRowKey) {
|
||||
if (this.selectedRowDataWatchFlag) {
|
||||
var rowKey =
|
||||
|
93
components/common/Pagination.vue
Normal file
93
components/common/Pagination.vue
Normal file
@ -0,0 +1,93 @@
|
||||
|
||||
<template>
|
||||
<div class="custom-pagination">
|
||||
<a-pagination
|
||||
:current="pageNum"
|
||||
:total="totalCount"
|
||||
:page-size="itemsPerPage"
|
||||
:show-size-changer="useLimit"
|
||||
:page-size-options="itemsPerPageArray.map(String)"
|
||||
@change="handlePageChange"
|
||||
@showSizeChange="changePageLeng"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
useLimit: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
totalCount: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
pageNum: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
itemsPerPageArray: {
|
||||
type: Array,
|
||||
default: () => [20, 50, 100],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
moveToPage: '',
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
page: function() {
|
||||
return this.numberOfPages + '-' + this.lastPage;
|
||||
},
|
||||
lastPage: function() {
|
||||
//grid data가 없을 경우 1 리턴
|
||||
if (this.totalCount == 0) return 1;
|
||||
|
||||
let pageLength = Math.floor(this.totalCount / this.itemsPerPage);
|
||||
if (this.totalCount % this.itemsPerPage > 0) {
|
||||
pageLength++;
|
||||
}
|
||||
return pageLength;
|
||||
},
|
||||
itemsPerPage: function() {
|
||||
return this.limit;
|
||||
},
|
||||
numberOfPages: function() {
|
||||
return Number(this.pageNum);
|
||||
},
|
||||
plusPage: function() {
|
||||
return Number(this.pageNum) + 1;
|
||||
},
|
||||
minusPage: function() {
|
||||
return Number(this.pageNum) - 1;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
totalCount: function(newData) {
|
||||
return (this.moveToPage = newData > 0 ? this.moveToPage : '');
|
||||
},
|
||||
moveToPage: function() {
|
||||
return (this.moveToPage = this.moveToPage.replaceAll(/[^0-9]/g, ''));
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handlePageChange(newPage) {
|
||||
// Emit an event to the parent to load data for the selected page
|
||||
this.$emit('loadData', newPage, this.itemsPerPage);
|
||||
},
|
||||
changePageLeng: function(current, newLimit) {
|
||||
//부모 컴포넌트에서 loadData(데이터 조회) 구현
|
||||
//this.$emit('loadData', this.pageNum, limit);
|
||||
// limit 변경 시 1 페이지로 초기화
|
||||
this.$emit('loadData', 1, newLimit);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
@ -2,25 +2,19 @@
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon small color="primary"
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon>
|
||||
<v-icon small color="primary"
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<div :class="['datepicker-container', customClass]" >
|
||||
<v-text-field
|
||||
id="startpicker"
|
||||
ref="startpicker"
|
||||
v-model="fromDtValue"
|
||||
:class="isRange ? 'v-input__custom half' : 'v-input__custom'"
|
||||
:hide-details="true"
|
||||
readonly
|
||||
outlined
|
||||
>
|
||||
<template #append >
|
||||
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
|
||||
<div :class="['datepicker-container', customClass]">
|
||||
<v-text-field id="startpicker" ref="startpicker" v-model="fromDtValue"
|
||||
:class="isRange ? 'v-input__custom half' : 'v-input__custom'" :hide-details="true" readonly
|
||||
outlined>
|
||||
<template #append>
|
||||
<a-icon class="v-icon" v-show="!isRange" type="calendar" style="width: 14px; height: 14px;" />
|
||||
<!-- <v-icon size="20" v-show="!isRange">$icoCalendar</v-icon> -->
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container" id="startpicker-container"></div>
|
||||
@ -29,18 +23,13 @@
|
||||
<div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }">
|
||||
<img :src="arrowIcon" alt="">
|
||||
</div>
|
||||
<v-text-field
|
||||
v-show="isRange"
|
||||
id="endpicker"
|
||||
ref="endpicker"
|
||||
v-model="toDtValue"
|
||||
:class="isRange ? 'v-input__custom half' : 'v-input__custom'"
|
||||
:hide-details="true"
|
||||
readonly
|
||||
outlined
|
||||
>
|
||||
<v-text-field v-show="isRange" id="endpicker" ref="endpicker" v-model="toDtValue"
|
||||
:class="isRange ? 'v-input__custom half' : 'v-input__custom'" :hide-details="true" readonly
|
||||
outlined>
|
||||
<template #append>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
<div class="pr-1">
|
||||
<a-icon class="v-icon" type="calendar" style="width: 14px; height: 14px;" />
|
||||
</div>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="endpicker-container" id="endpicker-container"></div>
|
||||
@ -98,6 +87,7 @@ export default {
|
||||
searchParam(state) {
|
||||
return state.pageData[this.parentPrgmId];
|
||||
},
|
||||
isDarkMode: "isDarkMode",
|
||||
}),
|
||||
myCmCycle() {
|
||||
return this.searchParam.cmCycle;
|
||||
@ -138,10 +128,10 @@ export default {
|
||||
);
|
||||
},
|
||||
arrowIcon() {
|
||||
if(this.isDarkMode){
|
||||
return require('@/assets/images/arrow_datepicker_dm.png');
|
||||
if (this.isDarkMode) {
|
||||
return require('@/assets/images/SwapRight_Dark.svg');
|
||||
}
|
||||
return require('@/assets/images/arrow_datepicker.png');
|
||||
return require('@/assets/images/SwapRight.svg');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -280,7 +270,7 @@ export default {
|
||||
if (
|
||||
(myRange > rangeGap && compareDt.isAfter(defaultDt)) ||
|
||||
defaultDt.format(this.myOptions.sendFormat) ===
|
||||
compareDt.format(this.myOptions.sendFormat)
|
||||
compareDt.format(this.myOptions.sendFormat)
|
||||
) {
|
||||
// if(this.cmCycleFlag){
|
||||
this.setPageData({ isFind: true });
|
||||
@ -310,7 +300,7 @@ export default {
|
||||
if (
|
||||
(myRange > rangeGap && defaultDt.isAfter(compareDt)) ||
|
||||
defaultDt.format(this.myOptions.sendFormat) ===
|
||||
compareDt.format(this.myOptions.sendFormat)
|
||||
compareDt.format(this.myOptions.sendFormat)
|
||||
) {
|
||||
this.setPageData({ isFind: true });
|
||||
} else {
|
||||
@ -334,6 +324,7 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
background-color: #edf4fc;
|
||||
|
||||
.tui-timepicker-column.tui-timepicker-colon {
|
||||
color: #000 !important;
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
<div class="d-flex justify-center align-center"
|
||||
:class="directionBtn === 'vertically'?'flex-row':'flex-column'"
|
||||
style="gap: 12px">
|
||||
<a-button @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost :icon="icons.remove" class="custom-action-btn">
|
||||
<a-button @click="directionBtn === 'vertically' ? btnActionsFnc('removeRightToLeft') : btnActionsFnc('addLeftToRight')" type="primary" ghost :icon="directionBtn === 'vertically'? icons.remove :icons.add " class="custom-action-btn">
|
||||
</a-button>
|
||||
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost :icon="icons.add" class="custom-action-btn">
|
||||
<a-button @click="directionBtn === 'vertically' ? btnActionsFnc('removeRightToLeft') :btnActionsFnc('removeRightToLeft')" type="primary" ghost :icon="directionBtn === 'vertically'? icons.add :icons.remove" class="custom-action-btn">
|
||||
</a-button>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -2,15 +2,13 @@
|
||||
export default function getGaugeChartOption({ title, min = 0, max = 160, unit = '%', isDarkMode = false, backgroundRadius = 97 }) {
|
||||
const colorRanges = isDarkMode
|
||||
? [
|
||||
[0.375, '#49AA19'], // Dark Green
|
||||
// [0.5, '#B8860B'], // Dark Yellow
|
||||
[0.625, '#D89614'], // Dark Orange
|
||||
[60 / 160, '#49AA19'], // Dark Green
|
||||
[100 / 160, '#D89614'], // Dark Orange
|
||||
[1, '#D32029'], // Dark Red
|
||||
]
|
||||
: [
|
||||
[0.375, '#52C41A'], // Light Green
|
||||
// [0.5, '#FFD700'], // Light Yellow
|
||||
[0.625, '#FAAD14'], // Light Orange
|
||||
[60 / 160, '#52C41A'], // Light Green
|
||||
[100 / 160, '#FAAD14'], // Light Orange
|
||||
[1, '#F5222D'], // Light Red
|
||||
];
|
||||
// Old color range
|
||||
@ -56,6 +54,7 @@ export default function getGaugeChartOption({ title, min = 0, max = 160, unit =
|
||||
endAngle: -45,
|
||||
min: min,
|
||||
max: max,
|
||||
splitNumber: 8,
|
||||
// progress: {
|
||||
// show: true,
|
||||
// width: 15,
|
||||
|
@ -34,6 +34,8 @@ export default function getLineChartOption({
|
||||
legend: {
|
||||
// data: legendData,
|
||||
icon: 'circle',
|
||||
itemWidth: 15, // Width of the legend icon
|
||||
itemHeight: 15,
|
||||
top: '0%',
|
||||
right: '5%',
|
||||
orient: 'horizontal',
|
||||
@ -70,6 +72,7 @@ export default function getLineChartOption({
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
type: 'dashed', // Options: 'solid', 'dashed', 'dotted'
|
||||
color: isDarkMode ? '#444444' : '#EEEEEE',
|
||||
},
|
||||
},
|
||||
|
46
components/common/chartoptions/SankeyChart.js
Normal file
46
components/common/chartoptions/SankeyChart.js
Normal file
@ -0,0 +1,46 @@
|
||||
// Sankey chart options
|
||||
export function getSankeyChartOption({ isDarkMode = false, data = [], links = [] }) {
|
||||
const chartOption = {
|
||||
backgroundColor: '#FFFFFF',
|
||||
series: [
|
||||
{
|
||||
data,
|
||||
links,
|
||||
|
||||
layoutIterations: 0,
|
||||
type: 'sankey',
|
||||
left: 25.0,
|
||||
top: 20.0,
|
||||
right: 120,
|
||||
bottom: 50.0,
|
||||
nodeGap: 10,
|
||||
nodeAlign: 'left',
|
||||
lineStyle: {
|
||||
color: 'source',
|
||||
curveness: 0.5,
|
||||
},
|
||||
// nodeWidth:10,
|
||||
// triggerEvent: true,
|
||||
itemStyle: {
|
||||
//color: '#1f77b4',
|
||||
//borderColor: '#1f77b4'
|
||||
},
|
||||
label: {
|
||||
color: isDarkMode
|
||||
? '#FFFFFFD9'
|
||||
: '#000000E0',
|
||||
// fontFamily: 'Arial',
|
||||
fontSize: 14,
|
||||
},
|
||||
},
|
||||
],
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
},
|
||||
};
|
||||
|
||||
return chartOption;
|
||||
}
|
||||
|
||||
export default getSankeyChartOption;
|
||||
|
@ -3,12 +3,13 @@
|
||||
<v-col v-if="item.label" :cols="item.labelCols !== undefined ? item.labelCols : item.cols == 12 ? 2 : 4">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
x-small
|
||||
:color="item.required ? '#fb8200' : 'primary'"
|
||||
class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
v-if="item.iconShow"
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ item.label }}
|
||||
<span v-if="item.essential">*</span>
|
||||
</label>
|
||||
<!-- <label for="" class="search-box-label ft-size_14 ft-clr_g-c">
|
||||
{{ item.label }}
|
||||
@ -39,12 +40,12 @@
|
||||
</template>
|
||||
</v-col>
|
||||
|
||||
<v-dialog v-model="dialog" scrollable width="540px">
|
||||
<v-dialog v-model="dialog" scrollable width="504px">
|
||||
<v-card style="height: 100%">
|
||||
<v-card-title>
|
||||
<span class="custom-title-4">비밀번호 {{ isPassword }}</span>
|
||||
<v-card-title class="px-4">
|
||||
<span class="custom-title-4" style="padding-left: 1px;">비밀번호 {{ isPassword }}</span>
|
||||
</v-card-title>
|
||||
<v-card-text class="pb-4">
|
||||
<v-card-text class="pb-4 px-3">
|
||||
<v-col>
|
||||
<label for="" class="search-box-label">
|
||||
{{ isPassword }}할 비밀번호를 입력하세요
|
||||
@ -75,7 +76,7 @@
|
||||
<v-card-actions class="pb-4">
|
||||
<v-spacer></v-spacer>
|
||||
<!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> -->
|
||||
<div class="pr-3">
|
||||
<div class="d-flex" style="gap: 8px">
|
||||
<a-button @click="close()" class="ant-btn-popup-default">닫기</a-button>
|
||||
<a-button type="primary" @click="setUpdate()" class="v-btn-add-text">
|
||||
확인
|
||||
|
@ -17,20 +17,24 @@
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? item.textCols : ''">
|
||||
<v-col :cols="label ? item.textCols : ''" class="py-0">
|
||||
<!-- <v-col :cols="label ? 9 : ''"> -->
|
||||
<!-- :value="textfield" -->
|
||||
<v-text-field
|
||||
readonly
|
||||
v-model="selectValue"
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@click="dialog = !dialog"
|
||||
outlined
|
||||
:hide-details="true"
|
||||
:disabled="item.disabled || false"
|
||||
:required="item.required || false"
|
||||
></v-text-field>
|
||||
>
|
||||
<template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
|
||||
<!-- <v-row justify="center"> -->
|
||||
|
@ -404,8 +404,8 @@ export default {
|
||||
rowHeight: 'auto',
|
||||
};
|
||||
if (this.isMulti) {
|
||||
// myOptions['rowHeaders'] = [{ type: 'checkbox' }];
|
||||
// myOptions['rowHeight'] = 'auto';
|
||||
myOptions['rowHeaders'] = [{ type: 'checkbox' }];
|
||||
myOptions['rowHeight'] = 'auto';
|
||||
}
|
||||
|
||||
|
||||
@ -523,12 +523,11 @@ export default {
|
||||
|
||||
|
||||
this.loadGrid = true;
|
||||
// this.$nextTick(() => {
|
||||
// if (this.isMulti) {
|
||||
// this.getChecked();
|
||||
// }
|
||||
// });
|
||||
|
||||
this.$nextTick(() => {
|
||||
if (this.isMulti) {
|
||||
this.getChecked();
|
||||
}
|
||||
});
|
||||
},
|
||||
setUpdate() {
|
||||
if (this.isMulti) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<v-row class="search-box no-gutters" align="center">
|
||||
<v-row class="search-box" align="center">
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="item.iconShow" small
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center">
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<!-- <v-col v-if="label" cols="2"> -->
|
||||
<v-col v-if="item.label" :cols="item.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
|
@ -4,7 +4,7 @@
|
||||
class="d-flex justify-space-between align-center"
|
||||
style="height: 80px;"
|
||||
>
|
||||
<span class="txt custom-title-4-new">공정 추가 정보</span>
|
||||
<span class="txt custom-subtitle-tab">공정 추가 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
|
@ -4,14 +4,14 @@
|
||||
class="d-flex justify-space-between align-center"
|
||||
style="height: 80px;"
|
||||
>
|
||||
<span class="txt custom-title-4-new">공정 입출력 정보</span>
|
||||
<span class="txt custom-subtitle-tab">공정 입출력 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div ref="gridParent" >
|
||||
<div ref="gridParent" style="height: calc(90vh - 700px);">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
@ -21,7 +21,7 @@
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<div style="height: 25vh;" class="mt-5">
|
||||
<component
|
||||
:is="'Form'"
|
||||
:bindingData="gridName"
|
||||
@ -98,17 +98,19 @@ export default {
|
||||
watch: {
|
||||
selectedObjId(val) {
|
||||
if (val === 'TAG') {
|
||||
this.detailList[2].class = 'py-2 d-none';
|
||||
this.detailList[3].class = 'py-2 d-none';
|
||||
this.detailList[4].class = 'py-2';
|
||||
this.detailList[5].class = 'py-2';
|
||||
this.detailList[1].class = 'd-none';
|
||||
this.detailList[2].class = 'd-block pl-4';
|
||||
this.detailList[3].class = 'd-block';
|
||||
} else {
|
||||
// }else if(val==="READ_PLC"){
|
||||
this.detailList[5].class = 'py-2 d-none';
|
||||
this.detailList[4].class = 'py-2 d-none';
|
||||
this.detailList[3].class = 'py-2';
|
||||
this.detailList[2].class = 'py-2';
|
||||
this.detailList[3].class = 'd-block';
|
||||
this.detailList[2].class = 'd-none';
|
||||
this.detailList[1].class = 'd-block pl-4';
|
||||
}
|
||||
this.detailList[4].class = 'pl-4 mt-2';
|
||||
|
||||
console.log(val)
|
||||
console.log(this.detailList)
|
||||
},
|
||||
},
|
||||
created() {},
|
||||
@ -188,6 +190,7 @@ export default {
|
||||
{ header: '대상 명', name: 'objNm', width: 300, align: 'left' },
|
||||
{
|
||||
header: '에너지원 명',
|
||||
width: 150,
|
||||
name: 'ercId',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
@ -204,8 +207,9 @@ export default {
|
||||
},
|
||||
{
|
||||
header: '대상 유형',
|
||||
width: 150,
|
||||
name: 'objKind',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
var retVal = '';
|
||||
|
||||
@ -221,7 +225,8 @@ export default {
|
||||
{
|
||||
header: '투입 생산 유형',
|
||||
name: 'inProdKind',
|
||||
align: 'center',
|
||||
width: 150,
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
var retVal = '';
|
||||
|
||||
@ -237,7 +242,8 @@ export default {
|
||||
{
|
||||
header: '계산 여부',
|
||||
name: 'calcFg',
|
||||
align: 'center',
|
||||
width: 150,
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
value = value === true ? '1' : '0';
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
@ -247,7 +253,7 @@ export default {
|
||||
// return value === true ? "사용" : "사용안함";
|
||||
},
|
||||
},
|
||||
{ header: '분배율(1~100)', name: 'distRt', align: 'right' },
|
||||
{ header: '분배율(1~100)', name: 'distRt', align: 'right', width: 150 },
|
||||
{ header: '사업장', name: 'blocId', align: 'center', hidden: true },
|
||||
{ header: '등록 사용자', name: 'regUserNo', hidden: true },
|
||||
{ header: '등록 일자', name: 'regDttm', hidden: true },
|
||||
@ -374,7 +380,7 @@ const myDetail = [
|
||||
label: '대상 유형',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'pr-4 py-2',
|
||||
list: 'emMapDivList',
|
||||
valueNm: 'objKind',
|
||||
itemText: 'commCdNm',
|
||||
@ -389,9 +395,9 @@ const myDetail = [
|
||||
type: 'ReadPlcPop',
|
||||
label: '대상 항목',
|
||||
valueNm: 'objId',
|
||||
disabled: false,
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'pt-2 pb-0 mb-0 pl-4',
|
||||
class: 'pl-4 py-2',
|
||||
required: true,
|
||||
bindNm: 'objNm',
|
||||
labelCols: 12,
|
||||
@ -400,24 +406,6 @@ const myDetail = [
|
||||
noText: true,
|
||||
iconShow: true,
|
||||
},
|
||||
{
|
||||
// 공백 처리
|
||||
type: 'Label',
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
valueNm: 'objNm',
|
||||
readonly: true,
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'pl-4',
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
},
|
||||
{
|
||||
type: 'EvtObjPop',
|
||||
labelContent: '대상 항목',
|
||||
@ -428,16 +416,23 @@ const myDetail = [
|
||||
disabled: true,
|
||||
required: true,
|
||||
cols: 6,
|
||||
class: 'd-none pr-4',
|
||||
class: 'd-none pr-4 py-2',
|
||||
disableContent: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
},
|
||||
{
|
||||
// 공백 처리
|
||||
type: 'Label',
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
cols: 6,
|
||||
class: 'd-none pt-0 pl-4',
|
||||
class: 'pt-0 pl-4 mt-2 py-2',
|
||||
valueNm: 'objNm',
|
||||
readonly: true,
|
||||
disabled: true,
|
||||
@ -450,7 +445,7 @@ const myDetail = [
|
||||
label: '에너지원',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
list: 'ercNmList',
|
||||
valueNm: 'ercId',
|
||||
itemText: 'text',
|
||||
@ -465,7 +460,7 @@ const myDetail = [
|
||||
label: '투입생산유형',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
list: 'cmInoutList',
|
||||
valueNm: 'inProdKind',
|
||||
itemText: 'commCdNm',
|
||||
@ -478,7 +473,7 @@ const myDetail = [
|
||||
{
|
||||
type: 'CheckBox',
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
label: '계산 여부',
|
||||
valueNm: 'calcFg',
|
||||
disabled: false,
|
||||
@ -487,7 +482,6 @@ const myDetail = [
|
||||
disabledFg: 'objKind',
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -495,7 +489,7 @@ const myDetail = [
|
||||
valueNm: 'distRt',
|
||||
readonly: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
@ -503,3 +497,10 @@ const myDetail = [
|
||||
},
|
||||
];
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep{
|
||||
.tui-grid-layer-state{
|
||||
top: 40px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -21,9 +21,9 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
<!-- Create the line between date picker and form -->
|
||||
<v-row class="my-5" no-gutters>
|
||||
<v-row class="mt-6 mb-7" no-gutters>
|
||||
<v-col>
|
||||
<div style="height: 1px; background-color: #ccc;"></div>
|
||||
<div style="height: 1px; background-color: #0000000F;"></div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row class="search-box" align="center" no-gutters style="height: 44px;">
|
||||
@ -43,7 +43,7 @@
|
||||
<div
|
||||
ref="gridParent"
|
||||
class="w100"
|
||||
style="height: calc((100vh - 600px) / 2);"
|
||||
style="height: calc((100vh - 500px) / 2);"
|
||||
>
|
||||
<Grid
|
||||
:ref="gridName"
|
||||
@ -57,7 +57,7 @@
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row class="search-box" align="center" no-gutters style="height: 44px;">
|
||||
<v-row class="search-box mt-2" align="center" no-gutters style="height: 44px;">
|
||||
<v-col :cols="4">
|
||||
<label for="" class="search-box-label">
|
||||
<!-- <v-icon x-small color="primary" class="mr-1"
|
||||
@ -77,7 +77,7 @@
|
||||
<div
|
||||
ref="chartParent"
|
||||
class="h100 w100"
|
||||
style="height: calc((100vh - 600px) / 2 - 30px);"
|
||||
style="height: calc((100vh - 500px) / 2);"
|
||||
>
|
||||
<component
|
||||
class="w100 h100"
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div
|
||||
class="d-flex justify-space-between"
|
||||
class="d-flex justify-space-between mb-3 pr-4"
|
||||
style="height: 45px;"
|
||||
>
|
||||
<span class="txt custom-subtitle-tab">검침 대상 추가 정보</span>
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
this.gridInit();
|
||||
},
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 31;
|
||||
|
||||
const myOptions = {
|
||||
columnOptions: {
|
||||
@ -113,8 +113,8 @@ export default {
|
||||
header: {
|
||||
height: 28,
|
||||
},
|
||||
rowHeight: 29,
|
||||
minRowHeight: 29,
|
||||
rowHeight: 36,
|
||||
minRowHeight: 36,
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
};
|
||||
@ -440,3 +440,15 @@ export default {
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped >
|
||||
::v-deep {
|
||||
.tui-grid-layer-state {
|
||||
top: 40px !important;
|
||||
}
|
||||
|
||||
.tui-grid-cell-content-editor {
|
||||
height: 36px !important;
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
@ -332,7 +332,7 @@ const myReadPlcTagDetail = [
|
||||
valueNm2: 'tagNm',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'pr-4 pb-2 py-2',
|
||||
class: 'pr-4 pb-2 py-2 mt-2',
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
@ -345,7 +345,7 @@ const myReadPlcTagDetail = [
|
||||
valueNm: 'ercId',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'pl-4 pb-2 py-3',
|
||||
class: 'pl-4 pb-2 py-3 mt-2',
|
||||
list: 'ercNmList',
|
||||
itemText: 'text',
|
||||
itemValue: 'value',
|
||||
@ -360,7 +360,7 @@ const myReadPlcTagDetail = [
|
||||
readonly: true,
|
||||
cols: 6,
|
||||
textCols: 12,
|
||||
class: 'pt-1 py-3 pr-4',
|
||||
class: 'pt-1 py-3 pr-4 mt-2',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
@ -372,7 +372,7 @@ const myReadPlcTagDetail = [
|
||||
valueNm: 'distRt',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-3 pr-4',
|
||||
class: 'py-3 pr-4 mt-2',
|
||||
inputType: 'number',
|
||||
min: 1,
|
||||
max: 100,
|
||||
@ -387,7 +387,7 @@ const myReadPlcTagDetail = [
|
||||
valueNm: 'reprTagFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-3 pl-4',
|
||||
class: 'py-3 pl-4 mt-2',
|
||||
value: { '1': true, '0': false },
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
@ -401,7 +401,7 @@ const myReadPlcTagDetail = [
|
||||
valueNm: 'useFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-3 pr-4',
|
||||
class: 'py-3 pr-4 mt-2',
|
||||
value: { '1': true, '0': false },
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
@ -414,7 +414,7 @@ const myReadPlcTagDetail = [
|
||||
valueNm: 'rmrk',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-3 pl-4',
|
||||
class: 'py-3 pl-4 mt-2',
|
||||
inputType: 'string',
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
|
@ -432,7 +432,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
value: { '1': true, '0': false },
|
||||
required: true,
|
||||
},
|
||||
@ -445,7 +445,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
},
|
||||
// {
|
||||
// type: "InputText",
|
||||
@ -464,7 +464,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
{
|
||||
@ -476,7 +476,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
{
|
||||
@ -488,7 +488,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
{
|
||||
@ -500,7 +500,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
];
|
||||
|
@ -90,7 +90,7 @@
|
||||
<!-- 사용자 정보 -->
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-card class="pb-5 h100">
|
||||
<v-card-title class="custom-title-4">사용자 정보</v-card-title>
|
||||
<v-card-title class="custom-title-4 pb-0">사용자 정보</v-card-title>
|
||||
<div class="px-5" :style="{ height: 'calc(100% - 62.5px)' }">
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab
|
||||
@ -947,17 +947,6 @@ const asgnRoleByUserColumns = [
|
||||
];
|
||||
|
||||
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 => {
|
||||
@ -971,7 +960,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
iconShow: true,
|
||||
required: false,
|
||||
placeholder: '시스템 자동입력',
|
||||
@ -983,7 +972,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
iconShow: true,
|
||||
required: true,
|
||||
},
|
||||
@ -996,8 +985,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
@ -1007,7 +995,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
iconShow: true,
|
||||
required: true,
|
||||
},
|
||||
@ -1018,7 +1006,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
iconShow: true,
|
||||
list: blocCdList.map(item => ({
|
||||
text: item.blocNm,
|
||||
@ -1033,7 +1021,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
iconShow: true,
|
||||
},
|
||||
{
|
||||
@ -1044,7 +1032,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
iconShow: true,
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
@ -1056,7 +1044,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
iconShow: true,
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
@ -1068,7 +1056,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
iconShow: true,
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
@ -1080,7 +1068,7 @@ const myDetail = blocCdList => {
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 mt-2',
|
||||
iconShow: true,
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
|
@ -49,7 +49,7 @@
|
||||
<v-col :cols="12" class="mt-5 pb-4">
|
||||
<v-card-title class="custom-title-6 pa-0">{{ viewActionData.title }}</v-card-title>
|
||||
</v-col>
|
||||
<v-col :cols="12" style="min-height: 30vh;" class="pa-0 custom-view">
|
||||
<v-col :cols="12" style="min-height: 50vh;" class="pa-0 custom-view">
|
||||
<v-card class="pa-3" style="overflow-y:auto;">
|
||||
<viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit"
|
||||
:initialValue="viewActionData.content" theme="white"
|
||||
|
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -287,7 +288,7 @@ export default {
|
||||
header: 'Data 형식',
|
||||
name: 'addInfoDataKind',
|
||||
minWidth: 85,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.addInfoDataKindList.filter(
|
||||
@ -304,7 +305,7 @@ export default {
|
||||
header: '사용여부',
|
||||
name: 'useFg',
|
||||
minWidth: 85,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
value = value === true ? '1' : '0';
|
||||
|
@ -1196,7 +1196,8 @@ export default {
|
||||
show: false,
|
||||
},
|
||||
left: "22%",
|
||||
radius: ["50%", "80%"], // Bigger inner and outer radius
|
||||
bottom: "23",
|
||||
radius: ["67%", "97%"], // Bigger inner and outer radius
|
||||
center: ["60%", "50%"], // Shift chart slightly right to make room for legend
|
||||
itemStyle: {
|
||||
borderColor: "#fff", // Color of the gap
|
||||
@ -1272,7 +1273,10 @@ export default {
|
||||
top: "middle",
|
||||
type: "scroll",
|
||||
orient: "vertical",
|
||||
left: "left",
|
||||
left: "20",
|
||||
icon: 'rect',
|
||||
itemWidth: 15, // Width of the legend icon
|
||||
itemHeight: 15,
|
||||
textStyle: {
|
||||
color: this.isDarkMode ? "#fff" : "#333333",
|
||||
},
|
||||
|
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -12,6 +13,7 @@
|
||||
dataKey="searchLocKind"
|
||||
:sendParam="{ commGrpCd: 'EM_LOC_KIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
@ -22,6 +24,7 @@
|
||||
dataKey="searchEccKind"
|
||||
:sendParam="{ commGrpCd: 'EM_ECC_KIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<!-- 사업장 -->
|
||||
@ -42,6 +45,7 @@
|
||||
dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
@ -52,6 +56,7 @@
|
||||
:labelCols="12"
|
||||
:textCols="12"
|
||||
:searchOption="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col class="text-right">
|
||||
@ -64,6 +69,7 @@
|
||||
:is="'SelectBlocMstr'"
|
||||
ref="SelectBlocMstr"
|
||||
:parentPrgmId="myPrgmId"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</div>
|
||||
</v-row>
|
||||
@ -99,7 +105,7 @@
|
||||
</v-col>
|
||||
<v-col :cols="7" style="min-height:75vh;">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="custom-title-4" style="min-height:76px;"
|
||||
<v-card-title class="custom-title-4 pb-0" style="min-height:65px;"
|
||||
>공정 상세
|
||||
</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 76px)">
|
||||
@ -471,7 +477,7 @@ export default {
|
||||
header: '사용 여부',
|
||||
name: 'useFg',
|
||||
width: gridWidth * 0.18,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
value = value === true ? '1' : '0';
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
@ -895,7 +901,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 px-4',
|
||||
required: true,
|
||||
iconShow: true
|
||||
},
|
||||
@ -921,7 +927,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'pb-0 mb-0 pr-4',
|
||||
class: 'pb-0 mb-0 pr-4 mt-2',
|
||||
disableContent: true,
|
||||
},
|
||||
{
|
||||
@ -932,7 +938,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 mb-0 pb-0 pl-4',
|
||||
class: 'py-2 mb-0 pb-0 px-4 mt-2',
|
||||
list: 'locKindList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
@ -944,13 +950,13 @@ const myDetail = [
|
||||
valueNm: 'upEccNm',
|
||||
readonly: true,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
},
|
||||
{
|
||||
// 공백 처리
|
||||
type: 'Label',
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 px-4 mt-2',
|
||||
disabled: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
@ -964,7 +970,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
list: 'eccKindList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
@ -979,7 +985,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 px-4 mt-2',
|
||||
inputType: 'number',
|
||||
iconShow: true
|
||||
// onkeydown : "if(this.value > 100) this.value = 100;if(this.value < 0) this.value = 0;if(this.value == '') this.value = 0;"
|
||||
@ -992,7 +998,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
list: 'blocIdList',
|
||||
itemText: 'blocNm',
|
||||
itemValue: 'blocId',
|
||||
@ -1006,7 +1012,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 px-4 mt-2',
|
||||
value: { '1': true, '0': false },
|
||||
iconShow: true,
|
||||
required: true,
|
||||
@ -1017,7 +1023,7 @@ const myDetail = [
|
||||
valueNm: 'eccFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 mt-2',
|
||||
iconShow: true,
|
||||
value: { '1': true, '0': false },
|
||||
},
|
||||
|
@ -63,7 +63,7 @@
|
||||
<v-tabs-items v-model="tab" style="height: calc(100% - 65px);" class="pt-6 py-2">
|
||||
<v-tab-item v-for="(item, idx) in items" :key="item.id">
|
||||
<component v-if="item.id == 'readPlcBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId"
|
||||
:detailList="detailList" :bindingData="gridName"
|
||||
:detailList="f" :bindingData="gridName"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
<ReadPlcAddInfoTab v-if="item.id == 'readPlcAddInfoTab'" :parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }" />
|
||||
|
@ -835,7 +835,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-3 pr-4',
|
||||
required: false,
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
@ -848,7 +848,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-3 pl-4',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
@ -860,7 +860,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-3 pr-4 mt-2',
|
||||
list: 'ercKindList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
@ -875,7 +875,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-3 pl-4 mt-2',
|
||||
list: 'readObjList',
|
||||
itemText: 'readObjNm',
|
||||
itemValue: 'readObjId',
|
||||
@ -890,7 +890,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-3 pr-4 mt-2',
|
||||
list: 'chrgKindList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
@ -905,7 +905,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-3 pl-4 mt-2',
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -916,7 +916,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-3 pr-4 mt-2',
|
||||
|
||||
},
|
||||
{
|
||||
@ -928,7 +928,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-3 pl-4 mt-2',
|
||||
list: 'blocMstrList',
|
||||
itemText: 'blocNm',
|
||||
itemValue: 'blocId',
|
||||
@ -944,7 +944,7 @@ const myDetail = [
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
// class: 'py-2',
|
||||
class: 'pb-0 mb-0 pr-4',
|
||||
class: 'pb-0 mb-0 pr-4 mt-2',
|
||||
disableContent: true,
|
||||
},
|
||||
{
|
||||
@ -956,7 +956,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'pb-0 mb-0 pl-4 mt-2',
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -981,7 +981,7 @@ const myDetail = [
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-3 pr-4 mt-2',
|
||||
value: { '1': true, '0': false },
|
||||
},
|
||||
{
|
||||
@ -991,7 +991,7 @@ const myDetail = [
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-3 pl-4 mt-2',
|
||||
value: { '1': true, '0': false },
|
||||
required: true,
|
||||
},
|
||||
|
@ -12,7 +12,7 @@
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<component :is="'EvtObjPop'" :parentPrgmId="myPrgmId" :item="evtObjPopItem"
|
||||
customClass="select-large" />
|
||||
class="no-gutters" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<!-- 대상일 -->
|
||||
@ -29,17 +29,17 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents">
|
||||
<v-col :cols="12" style="height: 100%" class="h100">
|
||||
<v-col :cols="12" class="h100">
|
||||
<v-card class="px-5 py-5 h100">
|
||||
<div ref="gridParent" class="h100 px-5" style="height: 100%">
|
||||
<div ref="gridParent" class="h100 px-5">
|
||||
<component ref="myGrid" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" />
|
||||
</div>
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
</v-card>
|
||||
<div class="d-flex align-center justify-center pa-5" v-if="loadGrid && totalCount > 0" >
|
||||
<pagination id="pagination" :total-count="totalCount" :page-num="page" :limit="limit"
|
||||
@loadData="changeGrid" />
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
@ -61,7 +61,7 @@ import BtnExcelDownload from '~/components/common/button/BtnExcelDownload';
|
||||
import DateUtility from '~/plugins/dateUtility';
|
||||
// import Search from "~/components/common/search";
|
||||
import EvtObjPop from '~/components/common/modal/EvtObjPop';
|
||||
import pagination from '~/components/Pagination';
|
||||
import pagination from '~/components/common/Pagination';
|
||||
|
||||
let myTitle;
|
||||
// const myPrgmId = "PRG0052";
|
||||
@ -212,7 +212,7 @@ export default {
|
||||
},
|
||||
layoutInit() {
|
||||
const searchFilterHeight = this.$refs.searchFilter.offsetHeight;
|
||||
this.$refs.contents.style.height = `calc(100% - ${searchFilterHeight}px)`;
|
||||
this.$refs.contents.style.height = `calc(100% - 90px - ${searchFilterHeight}px) `;
|
||||
},
|
||||
async setFromDt() {
|
||||
this.pageData.fromDt = Utility.setBeforetDate(
|
||||
@ -220,7 +220,6 @@ export default {
|
||||
this.pageData.toDt,
|
||||
'YYYYMMDD',
|
||||
);
|
||||
// this.pageData.toDt = Utility.setAftertDate(this.pageData, this.pageData.fromDt, "YYYYMMDD");
|
||||
},
|
||||
gridInit() {
|
||||
this.loadGrid = false;
|
||||
|
@ -50,7 +50,7 @@
|
||||
<v-col :cols="5" class="h100">
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-5">
|
||||
<v-card-title class="pa-0 custom-title-4-new"
|
||||
<v-card-title class="pa-0 custom-title-4"
|
||||
>검침 대상 정보</v-card-title
|
||||
>
|
||||
<Buttons
|
||||
@ -75,7 +75,7 @@
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="custom-title-4-new" style="min-height:76px;"
|
||||
<v-card-title class="custom-title-4-new pb-0" style="min-height:65px;"
|
||||
>검침대상 상세
|
||||
</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 76px)">
|
||||
@ -315,7 +315,7 @@ export default {
|
||||
header: '검침 대상 ID',
|
||||
name: 'readObjId',
|
||||
width: 130,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
header: '검침 대상 명',
|
||||
@ -385,7 +385,7 @@ export default {
|
||||
{
|
||||
header: '사용여부',
|
||||
name: 'useFg',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
width: 100,
|
||||
formatter({ value }) {
|
||||
value = value === true ? '1' : '0';
|
||||
@ -742,7 +742,7 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-2',
|
||||
class: 'py-2 pr-2 mt-2',
|
||||
required: false,
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
@ -754,7 +754,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2',
|
||||
class: 'py-2 mt-2',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
},
|
||||
@ -766,7 +766,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-2',
|
||||
class: 'py-2 pr-2 mt-2',
|
||||
list: 'readObjKindDetailList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
@ -781,7 +781,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2',
|
||||
class: 'py-2 mt-2',
|
||||
list: 'readObjGrpList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
@ -796,7 +796,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-2',
|
||||
class: 'py-2 pr-2 mt-2',
|
||||
iconShow: true,
|
||||
inputType: 'number',
|
||||
},
|
||||
@ -808,7 +808,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2',
|
||||
class: 'py-2 mt-2',
|
||||
iconShow: true,
|
||||
inputType: 'number',
|
||||
},
|
||||
@ -820,7 +820,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-2',
|
||||
class: 'py-2 pr-2 mt-2',
|
||||
iconShow: true,
|
||||
inputType: 'number',
|
||||
},
|
||||
@ -832,7 +832,7 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2',
|
||||
class: 'py-2 mt-2',
|
||||
list: 'unitCdList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
@ -847,13 +847,24 @@ const myDetail = [
|
||||
cols: 6,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2 pr-2',
|
||||
class: 'py-2 pr-2 mt-2',
|
||||
value: { '1': true, '0': false },
|
||||
iconShow: true,
|
||||
required: true,
|
||||
},
|
||||
];
|
||||
</script>
|
||||
<style lang="scss">
|
||||
<style lang="scss" scoped>
|
||||
@import '@/assets/scss/common.scss';
|
||||
</style>
|
||||
::v-deep {
|
||||
.tui-grid-layer-state {
|
||||
top: 40px !important;
|
||||
}
|
||||
|
||||
.tui-grid-layer-selection,
|
||||
.tui-grid-cell-content-editor{
|
||||
height: 36px !important;
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
@ -33,7 +33,7 @@
|
||||
</v-col>
|
||||
<v-col :cols="6" class="text-right">
|
||||
<!-- 조회버튼 -->
|
||||
<BtnSearch style="margin-top: 20px" size="large" @click="search" />
|
||||
<BtnSearch style="margin-top: 25px" size="large" @click="search" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
|
@ -14,9 +14,9 @@
|
||||
<!-- 대상일 -->
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="3" customClass="datepicker-large" />
|
||||
</v-col>
|
||||
<v-col :cols="4" class="text-right">
|
||||
<BtnSearch @click="search" size="large" />
|
||||
<v-col :cols="6" class="text-right">
|
||||
<!-- 조회버튼 -->
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
@ -47,8 +47,13 @@
|
||||
</v-row>
|
||||
<div class="px-5" style="height: 80%">
|
||||
<div ref="chartParent" class="w100 h100">
|
||||
<component :ref="chartName" class="w100 h100" :is="loadChart ? 'Chart' : null" :parentPrgmId="myPrgmId"
|
||||
:chartName="chartName" />
|
||||
<component
|
||||
:ref="chartName"
|
||||
class="w100 h100"
|
||||
:is="loadChart ? 'Chart' : null"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:chartName="chartName"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</v-card>
|
||||
@ -68,6 +73,8 @@ import SelectBox from '@/components/common/select/SelectBox';
|
||||
import DateUtility from '~/plugins/dateUtility';
|
||||
import Chart from '~/components/common/Chart';
|
||||
|
||||
import getSankeyChartOption from "~/components/common/chartoptions/sankeyChart";
|
||||
|
||||
let myTitle;
|
||||
let myPrgmId;
|
||||
|
||||
@ -101,6 +108,8 @@ export default {
|
||||
selectValue01: null,
|
||||
loadChart: false,
|
||||
chartName: 'sankeyChart',
|
||||
sankeyChartData: [],
|
||||
sankeyChartLinks: []
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -148,6 +157,16 @@ export default {
|
||||
});
|
||||
}
|
||||
},
|
||||
isDarkMode(newVal) {
|
||||
this.setChartOption({
|
||||
chartKey: this.chartName,
|
||||
value: getSankeyChartOption({
|
||||
isDarkMode: newVal,
|
||||
data: this.sankeyChartData,
|
||||
links: this.sankeyChartLinks
|
||||
})
|
||||
});
|
||||
},
|
||||
},
|
||||
async beforeCreate() {
|
||||
myPrgmId = this.$route.query.prgmId;
|
||||
@ -159,9 +178,6 @@ export default {
|
||||
},
|
||||
async created() { },
|
||||
async mounted() {
|
||||
// this.initTest();
|
||||
// return;
|
||||
|
||||
this.init();
|
||||
// document.querySelector('.icon_arrow').style.width = document.querySelector('.iconArrowCols').clientWidth-20 + "px";
|
||||
},
|
||||
@ -176,10 +192,8 @@ export default {
|
||||
...mapActions({
|
||||
getCodeList: 'modules/search/getCodeList',
|
||||
}),
|
||||
initTest() {
|
||||
|
||||
const randomNumber = n => Math.floor(Math.random() * n) + 1;
|
||||
|
||||
initTestChart() {
|
||||
const randomNumber = n => Math.floor(Math.random() * n) + 1;
|
||||
const makeData = [
|
||||
{ name: 'A' },
|
||||
{ name: 'B' },
|
||||
@ -205,45 +219,13 @@ export default {
|
||||
]);
|
||||
}
|
||||
|
||||
const chartOption = {
|
||||
backgroundColor: '#FFFFFF',
|
||||
series: [
|
||||
{
|
||||
layoutIterations: 0,
|
||||
type: 'sankey',
|
||||
left: 25.0,
|
||||
top: 20.0,
|
||||
right: 120,
|
||||
bottom: 50.0,
|
||||
// nodeWidth:10,
|
||||
nodeGap: 10,
|
||||
nodeAlign: 'left',
|
||||
data: makeData,
|
||||
links: makeLinks,
|
||||
lineStyle: {
|
||||
color: 'source',
|
||||
curveness: 0.5,
|
||||
},
|
||||
// triggerEvent: true,
|
||||
itemStyle: {
|
||||
//color: '#1f77b4',
|
||||
//borderColor: '#1f77b4'
|
||||
},
|
||||
label: {
|
||||
color: this.isDarkMode
|
||||
? 'rgba(250,250,250,0.7)'
|
||||
: 'rgba(0,0,0,0.7)',
|
||||
fontFamily: 'Arial',
|
||||
fontSize: 12,
|
||||
},
|
||||
},
|
||||
],
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
this.sankeyChartData = makeData;
|
||||
this.sankeyChartLinks = makeLinks;
|
||||
const chartOption = getSankeyChartOption({
|
||||
isDarkMode: this.isDarkMode,
|
||||
data: makeData,
|
||||
links: makeLinks
|
||||
});
|
||||
this.setChartOption({ chartKey: this.chartName, value: chartOption });
|
||||
this.$nextTick(() => {
|
||||
this.loadChart = true;
|
||||
@ -254,7 +236,11 @@ export default {
|
||||
this.setFromDt();
|
||||
},
|
||||
async search() {
|
||||
await this.getChartData();
|
||||
try{
|
||||
await this.getChartData();
|
||||
}catch(err){
|
||||
this.initTestChart();
|
||||
}
|
||||
this.setPageData({
|
||||
isFind: false,
|
||||
});
|
||||
@ -458,43 +444,13 @@ export default {
|
||||
};
|
||||
}
|
||||
|
||||
const chartOption = {
|
||||
backgroundColor: '#FFFFFF',
|
||||
series: [
|
||||
{
|
||||
layoutIterations: 0,
|
||||
type: 'sankey',
|
||||
left: 25.0,
|
||||
top: 20.0,
|
||||
right: 120,
|
||||
bottom: 50.0,
|
||||
// nodeWidth:10,
|
||||
nodeGap: 10,
|
||||
nodeAlign: 'left',
|
||||
data: makeData,
|
||||
links: makeLinks,
|
||||
lineStyle: {
|
||||
color: 'source',
|
||||
curveness: 0.5,
|
||||
},
|
||||
// triggerEvent: true,
|
||||
itemStyle: {
|
||||
//color: '#1f77b4',
|
||||
//borderColor: '#1f77b4'
|
||||
},
|
||||
label: {
|
||||
color: this.isDarkMode
|
||||
? 'rgba(250,250,250,0.7)'
|
||||
: 'rgba(0,0,0,0.7)',
|
||||
fontFamily: 'Arial',
|
||||
fontSize: 12,
|
||||
},
|
||||
},
|
||||
],
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
},
|
||||
};
|
||||
this.sankeyChartData = makeData;
|
||||
this.sankeyChartLinks = makeLinks;
|
||||
const chartOption = getSankeyChartOption({
|
||||
isDarkMode: this.isDarkMode,
|
||||
data: makeData,
|
||||
links: makeLinks
|
||||
});
|
||||
|
||||
this.setChartOption({ chartKey: this.chartName, value: chartOption });
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -304,7 +304,7 @@ export default {
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el2 = document.createElement('button');
|
||||
$(el2).addClass('edit-btn blue--text');
|
||||
el2.innerText = '편집하다';
|
||||
el2.innerText = '수정';
|
||||
elDiv.appendChild(el2);
|
||||
|
||||
this.el = elDiv;
|
||||
@ -415,7 +415,7 @@ export default {
|
||||
{
|
||||
header: '구분',
|
||||
name: 'gubun',
|
||||
width: 80,
|
||||
width: 200,
|
||||
align: 'left',
|
||||
// hidden: true,
|
||||
formatter({ value }) {
|
||||
@ -447,7 +447,7 @@ export default {
|
||||
myColumns.push({
|
||||
header: i.toString() + '월',
|
||||
name: qty,
|
||||
width: 73,
|
||||
width: 80,
|
||||
align: 'right',
|
||||
editor: 'text',
|
||||
formatter: this.numberFormatter,
|
||||
|
@ -47,11 +47,14 @@
|
||||
<v-row ref="contents" style="overflow: auto">
|
||||
<v-col>
|
||||
<div v-for="(value, key, index) in contentData" :key="'key1_' + index">
|
||||
<v-card-title class="d-flex align-center justify-space-between pa-3">
|
||||
<span class="tit ft-size_20 ft-weight_600">{{ value.eqpmGrpNm }}</span>
|
||||
</v-card-title>
|
||||
<v-card style="background: none">
|
||||
<v-card-title class="d-flex align-center justify-space-between pa-3">
|
||||
<span class="tit ft-size_20 ft-weight_600">{{ value.eqpmGrpNm }}</span>
|
||||
</v-card-title>
|
||||
</v-card>
|
||||
<v-row>
|
||||
<v-col :cols="3" v-for="(item, i) in value.chartData" :key="'key2_' + i">
|
||||
<v-card>
|
||||
<div
|
||||
class="v-box"
|
||||
style="height: 330px; position: relative"
|
||||
@ -73,7 +76,7 @@
|
||||
<!-- Information area -->
|
||||
<v-col :cols="5" style="height: 100%">
|
||||
<div style="height: 10%">
|
||||
<strong style="font-size: 20px; font-weight: 600">{{
|
||||
<strong class="v-card v-card__title pa-0" >{{
|
||||
item.fabNm
|
||||
}}</strong>
|
||||
</div>
|
||||
@ -123,6 +126,7 @@
|
||||
</div>
|
||||
</v-col>
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
|
@ -97,14 +97,24 @@
|
||||
<v-card-title class="d-flex align-center justify-space-between pa-5">
|
||||
<span class="tit ft-size_20 ft-weight_600">설비별 현황 리스트</span>
|
||||
</v-card-title>
|
||||
<div class="px-5" style="height: calc(100% - 106px)">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<div class="px-5" style="height: calc(100% - 56px)">
|
||||
<div ref="gridParent" class="w100 h100" style="height: calc(100% - 166px)">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
<div v-if="loadGrid && totalCount > 0" class="pagination-wrapper">
|
||||
<pagination
|
||||
id="pagination"
|
||||
:total-count="totalCount"
|
||||
:page-num="page"
|
||||
:limit="limit"
|
||||
:itemsPerPageArray="itemsPerPageArray"
|
||||
@loadData="changeGrid"
|
||||
/>
|
||||
</div>
|
||||
<!--
|
||||
<component
|
||||
:ref="gridName"
|
||||
@ -142,6 +152,7 @@ import SelectBox from "@/components/common/select/SelectBox";
|
||||
import SelectCmCycle from "@/components/common/select/SelectCmCycle";
|
||||
import DatePicker from "@/components/common/Datepicker";
|
||||
import Grid from "~/components/common/Grid";
|
||||
import pagination from "~/components/common/Pagination";
|
||||
|
||||
let myTitle;
|
||||
let myPrgmId;
|
||||
@ -168,6 +179,7 @@ export default {
|
||||
SelectCmCycle,
|
||||
DatePicker,
|
||||
Grid,
|
||||
pagination,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -188,6 +200,10 @@ export default {
|
||||
gridName: "grid01",
|
||||
|
||||
enrgUseMainIdxDesc: [],
|
||||
itemsPerPageArray: [10, 20, 50],
|
||||
limit: 10,
|
||||
page: 1,
|
||||
totalCount: 0,
|
||||
|
||||
// tooltipData: {
|
||||
// show: false,
|
||||
@ -263,6 +279,11 @@ export default {
|
||||
this.chkOpenTabList({ key: "destroy", prgmId: myPrgmId });
|
||||
},
|
||||
methods: {
|
||||
changeGrid: async function (pageNum, limit) {
|
||||
this.page = pageNum;
|
||||
this.limit = limit;
|
||||
this.search();
|
||||
},
|
||||
async init() {
|
||||
await this.getSelectValueList();
|
||||
await this.setQueryParams();
|
||||
@ -367,50 +388,57 @@ export default {
|
||||
const _this = this;
|
||||
// Define custom button
|
||||
class CustomButton {
|
||||
constructor(props,pageData) {
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
const gridData = grid.store.data.rawData;
|
||||
const value = gridData[rowKey][columnInfo.name];
|
||||
const onClickCallback = columnInfo.renderer.options.onClick;
|
||||
constructor(props, pageData) {
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
const gridData = grid.store.data.rawData;
|
||||
const value = gridData[rowKey][columnInfo.name];
|
||||
const onClickCallback = columnInfo.renderer.options.onClick;
|
||||
|
||||
this.disabled = columnInfo.renderer.options.disabled || false;
|
||||
const elDiv = document.createElement('div');
|
||||
elDiv.innerHTML = `<span>${value}</span>`;
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el2 = document.createElement('button');
|
||||
$(el2).addClass('edit-btn blue--text');
|
||||
el2.innerText = '보기';
|
||||
elDiv.appendChild(el2);
|
||||
this.el = elDiv;
|
||||
if (!this.disabled && typeof onClickCallback === 'function') {
|
||||
// click 이벤트
|
||||
this.el.addEventListener('click', function(event) {
|
||||
onClickCallback(rowKey);
|
||||
});
|
||||
}
|
||||
}
|
||||
getElement() {
|
||||
return this.el;
|
||||
}
|
||||
getValue() {
|
||||
// return this.el.value;
|
||||
}
|
||||
mounted() {
|
||||
// this.el.focus();
|
||||
}
|
||||
}
|
||||
this.disabled = columnInfo.renderer.options.disabled || false;
|
||||
const elDiv = document.createElement("div");
|
||||
elDiv.innerHTML = `<span>${value}</span>`;
|
||||
$(elDiv).addClass("tui-grid-cell-content d-flex justify-space-between");
|
||||
const el2 = document.createElement("button");
|
||||
$(el2).addClass("edit-btn blue--text");
|
||||
el2.innerText = "보기";
|
||||
elDiv.appendChild(el2);
|
||||
this.el = elDiv;
|
||||
if (!this.disabled && typeof onClickCallback === "function") {
|
||||
// click 이벤트
|
||||
this.el.addEventListener("click", function (event) {
|
||||
onClickCallback(rowKey);
|
||||
});
|
||||
}
|
||||
}
|
||||
getElement() {
|
||||
return this.el;
|
||||
}
|
||||
getValue() {
|
||||
// return this.el.value;
|
||||
}
|
||||
mounted() {
|
||||
// this.el.focus();
|
||||
}
|
||||
}
|
||||
|
||||
var columnList = [
|
||||
{ header: "NO", name: "no", align: "right", width: 80 },
|
||||
{ header: "fabId", name: "fabId", hidden: true },
|
||||
{ header: "FAB", name: "fabNm", align: "left" },
|
||||
{ header: "eqpmGrpId", name: "eqpmGrpId", hidden: true },
|
||||
{ header: "설비그룹", name: "eqpmGrpNm", align: "left", width: 200,
|
||||
{
|
||||
header: "설비그룹",
|
||||
name: "eqpmGrpNm",
|
||||
align: "left",
|
||||
width: 200,
|
||||
},
|
||||
{ header: "eqpmId", name: "eqpmId", hidden: true },
|
||||
{ header: "설비명", name: "eqpmNm", align: "left", width: 200,
|
||||
// Render custom button to switch page instead of double click on row
|
||||
renderer: {
|
||||
type: CustomButton,
|
||||
options: {
|
||||
value: '보기',
|
||||
value: "보기",
|
||||
onClick: (rowKey) => {
|
||||
const gridInstance = this.$refs[this.gridName].gridInstance;
|
||||
const eventRowData = gridInstance.invoke("getRow", rowKey);
|
||||
@ -434,12 +462,10 @@ export default {
|
||||
key: key,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{ header: "eqpmId", name: "eqpmId", hidden: true },
|
||||
{ header: "설비명", name: "eqpmNm", align: "left", width: 200 },
|
||||
{
|
||||
header: "계획량",
|
||||
name: "planVal",
|
||||
@ -546,10 +572,10 @@ export default {
|
||||
},
|
||||
],
|
||||
},
|
||||
pageOptions: {
|
||||
useClient: true,
|
||||
perPage: 3,
|
||||
}
|
||||
// pageOptions: {
|
||||
// useClient: true,
|
||||
// perPage: 3,
|
||||
// }
|
||||
};
|
||||
|
||||
this.setGridOption({
|
||||
@ -566,26 +592,39 @@ export default {
|
||||
this.loadGrid = false;
|
||||
this.enrgUseMainIdxDesc = [];
|
||||
var apiKey = null;
|
||||
var apiKey2 = null;
|
||||
var params = {
|
||||
fabId: this.selectValue01,
|
||||
eqpmKindId: this.selectValue02,
|
||||
eqpmGrpId: this.selectValue03,
|
||||
fromDt: this.pageData.fromDt,
|
||||
limit: this.limit,
|
||||
page: this.page,
|
||||
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
|
||||
};
|
||||
|
||||
if (this.pageData.cmCycle == "CYC_DAY") {
|
||||
params["fromDtMm"] = String(this.pageData.fromDt).substring(0, 6);
|
||||
apiKey = "selectDailyEnrgUseMainIdx";
|
||||
apiKey2 = "selectDailyEnrgUseMainIdxPageTotal";
|
||||
} else if (this.pageData.cmCycle == "CYC_MONTH") {
|
||||
apiKey = "selectMonthlyEnrgUseMainIdx";
|
||||
apiKey2 = "selectMonthlyEnrgUseMainIdxPageTotal";
|
||||
}
|
||||
|
||||
var res = await this.postApiReturn({
|
||||
apiKey: apiKey,
|
||||
resKey: "eqpmIndMntrData",
|
||||
sendParam: params,
|
||||
});
|
||||
|
||||
var res2 = await this.postApiReturn({
|
||||
apiKey: apiKey2,
|
||||
resKey: "eqpmIndMntrPageTotal",
|
||||
sendParam: params,
|
||||
});
|
||||
|
||||
this.totalCount = res2[0].totalcount;
|
||||
|
||||
this.enrgUseMainIdxDesc = await this.postApiReturn({
|
||||
apiKey: "selectEnrgUseMainIdxDesc",
|
||||
resKey: "eqpmIndMntrData",
|
||||
@ -654,7 +693,7 @@ export default {
|
||||
// id값 설정
|
||||
elementList[i].id = "tooltipTargetElement_" + i;
|
||||
tooltipElement.id = "tooltipElement_" + i;
|
||||
|
||||
tooltipElement.classList.add(this.isDarkmode ? "dark-mode" : "light-mode");
|
||||
// element 추가
|
||||
elementList[i].append(tooltipElement);
|
||||
}
|
||||
@ -849,5 +888,12 @@ function numberFormatter({ value }) {
|
||||
overflow-y: visible;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination-wrapper {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 12px 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Vue from "vue";
|
||||
// import Antd from "ant-design-vue";
|
||||
import { Row, Col, Card, Button, Checkbox, DatePicker, Select, Table, Modal, Input, Icon, Divider } from "ant-design-vue";
|
||||
import { Row, Col, Card, Button, Checkbox, DatePicker, Select, Table, Modal, Input, Icon, Divider, Pagination } from "ant-design-vue";
|
||||
|
||||
import 'ant-design-vue/dist/antd.css'
|
||||
// import { RangePicker } from "ant-design-vue/types/date-picker/range-picker";
|
||||
@ -17,4 +17,5 @@ Vue.component(Modal.name, Modal)
|
||||
Vue.component(Input.name, Input)
|
||||
Vue.component(Icon.name, Icon)
|
||||
Vue.component(Divider.name, Divider)
|
||||
Vue.component(Pagination.name, Pagination)
|
||||
// Vue.component(RangePicker.name, RangePicker)
|
@ -910,6 +910,11 @@ const INIT_URL_STATE = {
|
||||
'ems/effc/eqpmIndMntrCtr/selectDailyEnrgUseMainIdx',
|
||||
selectMonthlyEnrgUseMainIdx:
|
||||
'ems/effc/eqpmIndMntrCtr/selectMonthlyEnrgUseMainIdx',
|
||||
selectDailyEnrgUseMainIdxPageTotal:
|
||||
'ems/effc/eqpmIndMntrCtr/selectDailyEnrgUseMainIdxPageTotal',
|
||||
selectMonthlyEnrgUseMainIdxPageTotal:
|
||||
'ems/effc/eqpmIndMntrCtr/selectMonthlyEnrgUseMainIdxPageTotal',
|
||||
|
||||
|
||||
//prgmId : PRG0082 에너지 사용량 - 설비상세 모니터링
|
||||
selectDailyEnrgUseMainGuideIdx:
|
||||
|
Reference in New Issue
Block a user