Compare commits

...

19 Commits

Author SHA1 Message Date
140f73814f update 2025-08-07 11:29:24 +09:00
b53ce8bd83 refactor code 2025-08-07 11:27:51 +09:00
8bb0d56a80 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-luannv24-s2s17s15-fixbug 2025-08-07 11:23:58 +09:00
dev
f715405ad2 Merge pull request 'dev-trungvq7-0729' (#40) from dev-trungvq7-0729 into dev
Reviewed-on: #40
2025-08-07 10:58:23 +09:00
56607d0770 update code 2025-08-06 19:08:06 +09:00
dev
6db0ff96c0 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-trungvq7-0729 2025-08-06 19:03:14 +09:00
2cf00c0880 update code fixbug 2025-08-06 19:02:19 +09:00
dev
9155a2b55e commit 0608 2025-08-06 19:00:29 +09:00
dev
484d8879aa Merge pull request 'fix bugs' (#39) from dev-dungtv-0806 into dev
Reviewed-on: #39
2025-08-06 18:50:46 +09:00
38585f7b4f hotfix layout 2025-08-06 16:43:12 +07:00
b0ad70d33e fix bugs 2025-08-06 16:31:44 +07:00
dev
3f89707a01 Merge pull request 'fixbugs grid' (#38) from dev-dungtv-0805 into dev
Reviewed-on: #38
2025-08-06 12:13:45 +09:00
a4007d5697 resolve comment 2025-08-06 10:12:34 +07:00
3b6c05c70a Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-dungtv-0805 2025-08-06 09:27:47 +07:00
dev
550659475f Merge pull request 'fix bug 18 33 34' (#37) from dev-manhph1-figbug into dev
Reviewed-on: #37
2025-08-06 11:27:22 +09:00
4a7077336d resolve confict 2025-08-06 09:26:53 +07:00
dev
ca27167d3d Merge pull request 'Update tooltip s4 + add view button to switch page' (#36) from dev-nghiantt-fix-bugs into dev
Reviewed-on: #36
2025-08-06 10:32:48 +09:00
8cadade514 fix bug 18 33 34 2025-08-05 15:00:22 +07:00
f929ad2c28 Update tooltip s4 + add view button to switch page 2025-08-05 15:29:25 +09:00
33 changed files with 497 additions and 430 deletions

View File

@ -484,6 +484,10 @@ a {
border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-header-border"); border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-header-border");
} }
.custom-chart{
border: 1px solid map-deep-get($config, #{$theme}, "v-chart-border");
}
.btn-header { .btn-header {
background-color: map-deep-get($config, #{$theme}, "v-btn-header-background"); background-color: map-deep-get($config, #{$theme}, "v-btn-header-background");
border:1px solid map-deep-get($config, #{$theme}, "v-btn-header-border"); border:1px solid map-deep-get($config, #{$theme}, "v-btn-header-border");
@ -860,7 +864,7 @@ a {
); );
.day-label { .day-label {
color: map-deep-get($config, #{$theme}, "non-activate"); color: map-deep-get($config, #{$theme}, "card-text-title-color");
} }
} }
} }

View File

@ -66,6 +66,12 @@
} }
} }
.custom-action-btn{
height: 24px;
width: 24px;
font-size: 12px;
}
.v-btn { .v-btn {
background-color: map-deep-get($config, background-color: map-deep-get($config,
#{$theme}, #{$theme},

View File

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

View File

@ -230,6 +230,10 @@
} }
} }
input[type="checkbox"] {
width: 16px;
height: 16px
}
@each $theme in dark, light { @each $theme in dark, light {
@include theme($theme); @include theme($theme);
@ -242,6 +246,7 @@
background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
color:map-deep-get($config, #{$theme}, "ant-btn-primary-color"); color:map-deep-get($config, #{$theme}, "ant-btn-primary-color");
&.ant-checkbox-inner::after { &.ant-checkbox-inner::after {
border-color: map-deep-get($config, #{$theme}, "ant-btn-primary-color"); border-color: map-deep-get($config, #{$theme}, "ant-btn-primary-color");
} }
@ -403,6 +408,13 @@
"v-input-textarea-border" "v-input-textarea-border"
); );
} }
input[type="checkbox"] {
accent-color: map-deep-get($config,
#{$theme},
"ant-btn-primary-bg"
);
}
} }
.v-radio { .v-radio {

View File

@ -15,8 +15,9 @@
border-radius: 6px; border-radius: 6px;
border: solid 1px; border: solid 1px;
height: 32px; height: 32px;
// border-color: #424242; color: map-deep-get($config, #{$theme}, "v-input-fieldset-color") !important;
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color"); border-color: currentColor;
// border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
&.datepicker-large { &.datepicker-large {
height: 40px; height: 40px;

View File

@ -175,6 +175,7 @@ $config: (
btn-header-select-color:#FFFFFFD9, btn-header-select-color:#FFFFFFD9,
subtitle-tab: #FFFFFFA6, subtitle-tab: #FFFFFFA6,
v-header-border: #424242, v-header-border: #424242,
v-chart-border: #424242,
v-sidebar-border: #303030, v-sidebar-border: #303030,
), ),
light: (w-g5: $--color-gray_555, light: (w-g5: $--color-gray_555,
@ -314,6 +315,7 @@ $config: (
btn-header-select-bg:#FFFFFF, btn-header-select-bg:#FFFFFF,
subtitle-tab: #000000A6, subtitle-tab: #000000A6,
v-header-border: #D9D9D9, v-header-border: #D9D9D9,
v-chart-border: #D9D9D9,
v-sidebar-border: #F0F0F0, v-sidebar-border: #F0F0F0,
), ),
); );

View File

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

View File

@ -52,6 +52,7 @@
selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1 selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
" "
@update:propsValue="selectTimeValue1 = $event" @update:propsValue="selectTimeValue1 = $event"
customClass="select-large"
/> />
<!-- <div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">~</div> --> <!-- <div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">~</div> -->
@ -99,6 +100,7 @@
selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1 selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
" "
@update:propsValue="selectTimeValue2 = $event" @update:propsValue="selectTimeValue2 = $event"
customClass="select-large"
/> />
</div> </div>
</v-col> </v-col>

View File

@ -299,7 +299,6 @@ export default {
startEditing(e) { startEditing(e) {
// console.log('startEditing1...') // console.log('startEditing1...')
if (this.preventFocusChangeEvent(e)) { if (this.preventFocusChangeEvent(e)) {
// console.log('prevent startEditing')
return; return;
} }
@ -311,7 +310,6 @@ export default {
// console.log('startEditing2...') // console.log('startEditing2...')
if (this.editorGrid && e.rowKey >= 0) { if (this.editorGrid && e.rowKey >= 0) {
this.editorStartKey = e.rowKey; this.editorStartKey = e.rowKey;
// console.log("E::", this.gridInstance.invoke("getRow", e.rowKey));
this.gridInstance.invoke('startEditing', e.rowKey, e.columnName); this.gridInstance.invoke('startEditing', e.rowKey, e.columnName);
this.$emit( this.$emit(
'getRowsData', 'getRowsData',
@ -621,7 +619,6 @@ export default {
this.gridInstance.invoke('refreshLayout'); this.gridInstance.invoke('refreshLayout');
}, },
refreshGrid(){ refreshGrid(){
console.log("---------DEBUG---refreshGrid: ");
// console.log("refreshLayout",this.$refs['tuigrid' + this.gridName]) // console.log("refreshLayout",this.$refs['tuigrid' + this.gridName])
var store = this.$refs['tuigrid' + this.gridName].gridInstance.store; var store = this.$refs['tuigrid' + this.gridName].gridInstance.store;
var containerEl = this.$refs['tuigrid' + this.gridName].$el; var containerEl = this.$refs['tuigrid' + this.gridName].$el;

View File

@ -1,8 +1,10 @@
<template> <template>
<div class="d-flex flex-row justify-center align-center" style="gap: 12px"> <div class="d-flex justify-center align-center"
<a-button @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost :icon="icons.remove" > :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> </a-button>
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost :icon="icons.add"> <a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost :icon="icons.add" class="custom-action-btn">
</a-button> </a-button>
</div> </div>
</template> </template>

View File

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

View File

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

View File

@ -65,13 +65,10 @@
<!-- <div id="chartParent" ref="chartParent" style="height: 100px"> --> <!-- <div id="chartParent" ref="chartParent" style="height: 100px"> -->
<div :style="'height: calc(50vh)'"> <div :style="'height: calc(50vh)'">
<div class="d-flex align-center justify-space-between pa-4" style="height: 10%">
<v-card-title class="pa-0 custom-title-4">사용량 계획</v-card-title>
</div>
<!-- <div id="chartParent" ref="chartParent" :style="'height: 80%'"> --> <!-- <div id="chartParent" ref="chartParent" :style="'height: 80%'"> -->
<div id="chartParent" ref="chartParent" style="height: 70%"> <div id="chartParent" ref="chartParent" style="height: 100%" class="px-6">
<component <component
class="w100 h100" class="w100 h100 py-7 custom-chart"
:is="loadChart ? 'Chart' : null" :is="loadChart ? 'Chart' : null"
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:modalId="modalId" :modalId="modalId"
@ -130,7 +127,6 @@
/> />
</div> --> </div> -->
<v-divider></v-divider>
<v-card-actions class="pa-5 d-flex align-center justify-end"> <v-card-actions class="pa-5 d-flex align-center justify-end">
<a-button color="primary" type="default" class="mr-2" dark @click="closePop()">취소</a-button> <a-button color="primary" type="default" class="mr-2" dark @click="closePop()">취소</a-button>
<a-button color="primary" type="primary" dark @click="setUpdate()">확정</a-button> <a-button color="primary" type="primary" dark @click="setUpdate()">확정</a-button>
@ -533,7 +529,7 @@ export default {
seriesData = data.map(item => ({ seriesData = data.map(item => ({
name: item.gubun == '2PLAN' ? '계획' : '전년실적', name: item.gubun == '2PLAN' ? '계획' : '전년실적',
type: item.gubun == '2PLAN' ? 'line' : 'bar', type: item.gubun == '2PLAN' ? 'line' : 'bar',
data: targetMonthList.map(obj => item[obj] || null) data: targetMonthList.map(obj => item[obj] || null),
// data: targetMonthList.map(obj => item[obj] || 0) // data: targetMonthList.map(obj => item[obj] || 0)
})); }));
this.nowSeriesData = seriesData; this.nowSeriesData = seriesData;
@ -558,7 +554,6 @@ export default {
series: seriesData, series: seriesData,
tooltip: tooltipData tooltip: tooltipData
}; };
// console.log('option', option);
await this.$nextTick(() => { await this.$nextTick(() => {
}); });
@ -601,7 +596,6 @@ export default {
sData2 = nowSeriesData.filter(item => { sData2 = nowSeriesData.filter(item => {
return item.name == '계획'; return item.name == '계획';
})[0]['data']; })[0]['data'];
// console.log('sData1', sData);
if(targetMonth.includes('qty')){ if(targetMonth.includes('qty')){
targetMonth = parseInt(targetMonth.slice(-2)); targetMonth = parseInt(targetMonth.slice(-2));
} }
@ -610,13 +604,11 @@ export default {
sData2[i] = sData[i] * targetRatio; sData2[i] = sData[i] * targetRatio;
} }
} }
// console.log('sData2', sData2);
seriesData = nowSeriesData.map(item => ({ seriesData = nowSeriesData.map(item => ({
...item, ...item,
data: item.name == '계획' ? sData2 : item.data data: item.name == '계획' ? sData2 : item.data
})); }));
// console.log('seriesData', seriesData);
await this.$nextTick(() => { await this.$nextTick(() => {
}); });
@ -643,4 +635,4 @@ let modifyEnrgUsePlanModalDataKey =
modifyEnrgUsePlanChart: Utility.defaultChartOption(true) modifyEnrgUsePlanChart: Utility.defaultChartOption(true)
}; };
// 전력량 요금(원/kWh) // 전력량 요금(원/kWh)
</script> </script>

View File

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

View File

@ -140,6 +140,4 @@ export default {
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss"></style>
</style>

View File

@ -22,7 +22,7 @@
outlined outlined
:menu-props="{ auto: true, offsetY: true }" :menu-props="{ auto: true, offsetY: true }"
:hide-details="true" :hide-details="true"
:class="'v-select__custom'" :class="['v-select__custom', customClass]"
:disabled="disabled" :disabled="disabled"
:readonly="readonly" :readonly="readonly"
@click="setDatepickerHide" @click="setDatepickerHide"
@ -106,6 +106,10 @@ export default {
require: false, require: false,
default: 1, default: 1,
}, },
customClass: {
type: String,
require: false,
},
}, },
emits: ["update:propsValue"], emits: ["update:propsValue"],
data() { data() {

View File

@ -11,7 +11,7 @@
:btnActionsFnc="btnActions" :btnActionsFnc="btnActions"
/> />
</div> </div>
<div ref="gridParent" style="height: calc(100vh - 760px);"> <div ref="gridParent" >
<component <component
:ref="gridName" :ref="gridName"
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"

View File

@ -8,7 +8,7 @@
:btnActionsFnc="btnActions" :btnActionsFnc="btnActions"
/> />
</div> </div>
<div ref="gridParent" style="height: calc(100vh - 520px);"> <div ref="gridParent" class="w100" style="height: calc(100vh - 520px);">
<Grid <Grid
:ref="gridName" :ref="gridName"
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
@ -296,7 +296,7 @@ export default {
{ {
header: '추가 정보 값', header: '추가 정보 값',
name: 'addInfoVal', name: 'addInfoVal',
align: 'center', align: 'left',
renderer: { renderer: {
type: CustomRenderer, type: CustomRenderer,
}, },

View File

@ -8,7 +8,7 @@
:btnActionsFnc="btnActions" :btnActionsFnc="btnActions"
/> />
</div> </div>
<div ref="gridParent" style="height: calc(100vh - 800px);"> <div ref="gridParent" style="height: calc(100vh - 700px);">
<Grid <Grid
:ref="gridName" :ref="gridName"
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
@ -18,7 +18,7 @@
:innerTabGridInfo="innerTabGridInfo" :innerTabGridInfo="innerTabGridInfo"
/> />
</div> </div>
<div style="min-height: calc(100vh - 900px);" class="mt-4"> <div style="height: 60vh;" class="mt-5">
<component <component
:is="'Form'" :is="'Form'"
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
@ -114,7 +114,7 @@ export default {
this.detailList[2].class = 'py-3 d-none'; this.detailList[2].class = 'py-3 d-none';
this.detailList[3].class = 'py-3 pl-4 pt-1 d-none'; this.detailList[3].class = 'py-3 pl-4 pt-1 d-none';
this.detailList[4].class = 'py-3'; this.detailList[4].class = 'py-3 pl-4';
this.detailList[5].class = 'py-3 pl-4'; this.detailList[5].class = 'py-3 pl-4';
this.detailList[6].class = 'py-3 pl-4 pt-0'; this.detailList[6].class = 'py-3 pl-4 pt-0';
} else { } else {
@ -230,7 +230,7 @@ export default {
{ {
header: '대상 유형', header: '대상 유형',
name: 'objKind', name: 'objKind',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
var retVal = ''; var retVal = '';
@ -261,7 +261,7 @@ export default {
{ {
header: '계산여부', header: '계산여부',
name: 'calcFg', name: 'calcFg',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
const newValue = _this.pageData.useFgList.filter( const newValue = _this.pageData.useFgList.filter(
@ -612,3 +612,10 @@ const myEqpmIaoDetail = [
}, },
]; ];
</script> </script>
<style lang="scss" scoped >
::v-deep {
.tui-grid-layer-state {
top: 40px !important;
}
}
</style>

View File

@ -20,6 +20,12 @@
</v-card> </v-card>
</v-col> </v-col>
</v-row> </v-row>
<!-- Create the line between date picker and form -->
<v-row class="my-5" no-gutters>
<v-col>
<div style="height: 1px; background-color: #ccc;"></div>
</v-col>
</v-row>
<v-row class="search-box" align="center" no-gutters style="height: 44px;"> <v-row class="search-box" align="center" no-gutters style="height: 44px;">
<v-col :cols="4"> <v-col :cols="4">
<label for="" class="search-box-label"> <label for="" class="search-box-label">

View File

@ -1,8 +1,8 @@
<template> <template>
<div> <div>
<div <div
class="d-flex justify-space-between align-center" class="d-flex justify-space-between"
style="height: 80px;" style="height: 45px;"
> >
<span class="txt custom-subtitle-tab">검침 대상 추가 정보</span> <span class="txt custom-subtitle-tab">검침 대상 추가 정보</span>
<Buttons <Buttons
@ -143,7 +143,6 @@ export default {
class CustomRenderer { class CustomRenderer {
constructor(props) { constructor(props) {
//const { min, max } = props.columnInfo.renderer.options; //const { min, max } = props.columnInfo.renderer.options;
//console.log('props: %o', props);
const el = document.createElement('input'); const el = document.createElement('input');
if ( if (
@ -215,15 +214,12 @@ export default {
} }
$(el).addClass('tui-grid-content-text'); $(el).addClass('tui-grid-content-text');
} }
// console.log('props: %o', props);
// console.log('el: %o', el);
this.el = el; this.el = el;
this.render(props); this.render(props);
} }
change(ev) { change(ev) {
//console.log('props: %o', ev);
if (ev.target.checked) { if (ev.target.checked) {
ev.target.value = 1; ev.target.value = 1;
} else { } else {
@ -245,7 +241,6 @@ export default {
} else { } else {
this.el.value = String(props.value); this.el.value = String(props.value);
} }
//console.log('props: %o', props);
} }
mounted() { mounted() {
@ -275,7 +270,7 @@ export default {
{ {
header: 'Data 구분', header: 'Data 구분',
name: 'addInfoDataKind', name: 'addInfoDataKind',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';
const newValue = addInfoDataKindList.filter( const newValue = addInfoDataKindList.filter(
@ -323,8 +318,6 @@ export default {
}, },
//{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text", //{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text",
// formatter({ value, row , column}) { // formatter({ value, row , column}) {
// console.log("addInfoVal row : ", row);
// console.log("addInfoVal state : ", column);
// if(row.addInfoDataKind === "NUM"){ // if(row.addInfoDataKind === "NUM"){
// column.align = "right"; // column.align = "right";
// }else{ // }else{

View File

@ -332,7 +332,7 @@ const myReadPlcTagDetail = [
valueNm2: 'tagNm', valueNm2: 'tagNm',
disabled: true, disabled: true,
cols: 6, cols: 6,
class: 'pr-4 pb-2 py-3', class: 'pr-4 pb-2 py-2',
required: true, required: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
@ -345,7 +345,7 @@ const myReadPlcTagDetail = [
valueNm: 'ercId', valueNm: 'ercId',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'pl-4 py-3', class: 'pl-4 pb-2 py-3',
list: 'ercNmList', list: 'ercNmList',
itemText: 'text', itemText: 'text',
itemValue: 'value', itemValue: 'value',

View File

@ -5,22 +5,12 @@
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row algin="end" no-gutters> <v-row algin="end" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<InputText <InputText :parentPrgmId="myPrgmId" label="역할ID" valueNm="roleId" :searchOption="true"
:parentPrgmId="myPrgmId" customClass="input-large" />
label="역할ID"
valueNm="roleId"
:searchOption="true"
customClass="input-large"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<InputText <InputText :parentPrgmId="myPrgmId" label="역할명" valueNm="roleNm" :searchOption="true"
:parentPrgmId="myPrgmId" customClass="input-large" />
label="역할명"
valueNm="roleNm"
:searchOption="true"
customClass="input-large"
/>
</v-col> </v-col>
<v-col class="text-right d-flex justify-end align-end mr-3"> <v-col class="text-right d-flex justify-end align-end mr-3">
<BtnSearch size="large" /> <BtnSearch size="large" />
@ -30,81 +20,55 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row ref="contents" > <v-row ref="contents">
<v-col cols="12" lg="2" > <v-col cols="12" lg="3">
<v-card> <v-card>
<v-card-title> <v-card-title>
<span class="custom-title-4">역할 리스트</span> <span class="custom-title-4">역할 리스트</span>
</v-card-title> </v-card-title>
<div ref="gridParent" class="px-5" style="height: 60vh;"> <div ref="gridParent" class="px-5" style="height: 60vh;">
<component <component :is="loadGrid ? 'Grid' : null" :ref="gridName + myPrgmId" :gridName="gridName"
:is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId" @getRowsData="getRowData" />
:ref="gridName + myPrgmId"
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
/>
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<v-col cols="12" lg="10" > <v-col cols="12" lg="9">
<v-card> <v-card>
<v-card-title> <v-card-title>
<span class="custom-title-4">역할 메뉴별 권한</span> <span class="custom-title-4">역할 메뉴별 권한</span>
</v-card-title> </v-card-title>
<v-row <v-row align="center" no-gutters :style="{ height: 'calc(100% - 62px)' }" class="px-5">
align="center" <v-col class="h100" style="max-width: 400px;">
no-gutters <span class="body-1 font-weight-bold d-flex align-center"
:style="{ height: 'calc(100% - 62px)' }" :style="{ minHeight: '36px' }">[미배정]메뉴리스트</span>
class="px-5"
>
<v-col :cols="4" class="h100">
<span
class="body-1 font-weight-bold d-flex align-center"
:style="{ minHeight: '36px' }"
>[미배정]메뉴리스트</span
>
<div ref="treeGridParent" class="px-0 mt-2" style="height: 60vh;"> <div ref="treeGridParent" class="px-0 mt-2" style="height: 60vh;">
<!-- <div <!-- <div
ref="treeGridParent" ref="treeGridParent"
class="w100 h100" class="w100 h100"
> >
</div> --> </div> -->
<component <component :is="loadTreeGrid ? 'Grid' : null" :ref="gridName2 + myPrgmId"
:is="loadTreeGrid ? 'Grid' : null" :gridName="gridName2" :parentPrgmId="myPrgmId" @getRowsData="getUnAsgnRowData" />
:ref="gridName2 + myPrgmId"
:gridName="gridName2"
:parentPrgmId="myPrgmId"
@getRowsData="getUnAsgnRowData"
/>
</div> </div>
</v-col> </v-col>
<v-col :cols="1"> <!-- <v-col :cols="1.5">
<ActionButtons <ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3"
:parentPrgmId="myPrgmId" :btnActionsFnc="dualGridBtnActions" />
:leftGridName="gridName2" </v-col> -->
:rightGridName="gridName3" <div class="pr-2">
:btnActionsFnc="dualGridBtnActions" <ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3"
/> :btnActionsFnc="dualGridBtnActions" />
</v-col> </div>
<v-col :cols="7" class="h100"> <v-col :cols="7" class="h100">
<v-row <v-row justify="space-between" align="center" no-gutters class="px-5">
justify="space-between"
align="center"
no-gutters
class="px-5"
>
<v-col :cols="11"> <v-col :cols="11">
<span class="body-1 font-weight-bold" <span class="body-1 font-weight-bold d-flex align-center"
>[배정]메뉴별권한 리스트</span :style="{ minHeight: '36px' }">[배정]메뉴별권한 리스트</span>
> <!-- <span class="body-1 font-weight-bold">[배정]메뉴별권한 리스트</span> -->
</v-col> </v-col>
<v-col :cols="1" class="text-right"> <v-col :cols="1" class="text-right">
<Buttons <Buttons :parentPrgmId="myPrgmId" :bindingData="gridName3"
:parentPrgmId="myPrgmId" :btnActionsFnc="btnActions" />
:bindingData="gridName3"
:btnActionsFnc="btnActions"
/>
</v-col> </v-col>
</v-row> </v-row>
<div ref="treeGridParent2" class="px-0 mt-2" style="height: 60vh;"> <div ref="treeGridParent2" class="px-0 mt-2" style="height: 60vh;">
@ -113,14 +77,9 @@
class="w100 h100" class="w100 h100"
> >
</div> --> </div> -->
<component <component :is="loadTreeGrid2 ? 'Grid' : null" :ref="gridName3 + myPrgmId"
:is="loadTreeGrid2 ? 'Grid' : null" :gridName="gridName3" :parentPrgmId="myPrgmId" :editorGrid="true"
:ref="gridName3 + myPrgmId" @getRowsData="getAsgnRowData" />
:gridName="gridName3"
:parentPrgmId="myPrgmId"
:editorGrid="true"
@getRowsData="getAsgnRowData"
/>
</div> </div>
</v-col> </v-col>
</v-row> </v-row>
@ -286,8 +245,8 @@ export default {
async gridInit() { async gridInit() {
//---------------------gridOption 설정 시작---------------------------- //---------------------gridOption 설정 시작----------------------------
const gridHeight = this.$refs.gridParent.offsetHeight - 30; const gridHeight = this.$refs.gridParent.offsetHeight - 30;
const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 30; const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 50;
const treeGridHeight2 = this.$refs.treeGridParent2.offsetHeight - 30; const treeGridHeight2 = this.$refs.treeGridParent2.offsetHeight - 50;
// const gridHeight = this.$refs.contents.offsetHeight - 30; // const gridHeight = this.$refs.contents.offsetHeight - 30;
const myOptions = { const myOptions = {
@ -316,8 +275,10 @@ export default {
treeColumnOptions: { treeColumnOptions: {
name: 'menuNm', name: 'menuNm',
}, },
scrollX: false, rowHeight: 37,
// scrollY: false, minRowHeight: 37,
scrollX: true,
scrollY: true,
}; };
this.setGridOption({ this.setGridOption({
@ -347,6 +308,9 @@ export default {
const el = document.createElement('input'); const el = document.createElement('input');
const { grid, rowKey, columnInfo } = props; const { grid, rowKey, columnInfo } = props;
el.type = 'checkbox'; el.type = 'checkbox';
$(el).css('width', '16px');
$(el).css('height', '16px');
$(el).css('accent-color', '#1677FF');
el.value = props.value; el.value = props.value;
this.el = el; this.el = el;
@ -380,12 +344,12 @@ export default {
const _this = this; const _this = this;
const myColumns = [ const myColumns = [
{ header: '역할ID', name: 'roleId', align: 'center', minWidth: 70 }, { header: '역할ID', name: 'roleId', align: 'left', minWidth: 70,width:120 },
{ header: '역할명', name: 'roleNm', minWidth: 70 }, { header: '역할명', name: 'roleNm', minWidth: 70, align: 'left',width:120 },
{ {
header: '사용여부', header: '사용여부',
name: 'useFg', name: 'useFg',
align: 'center', align: 'left',
minWidth: 84, minWidth: 84,
formatter({ value }) { formatter({ value }) {
const newValue = _this.pageData.useFgList.filter( const newValue = _this.pageData.useFgList.filter(
@ -408,6 +372,7 @@ export default {
{ {
header: '메뉴명', header: '메뉴명',
name: 'menuNm', name: 'menuNm',
maxWidth: 120,
validation: { validation: {
dataType: 'string', dataType: 'string',
validatorFn: (value, row) => { validatorFn: (value, row) => {
@ -549,12 +514,12 @@ export default {
//rowKey: 0, //rowKey: 0,
rowKey: rowKey:
this.pageData.rowGridSelectKey == '' || this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null this.pageData.rowGridSelectKey == null
? 0 ? 0
: this.pageData.rowGridSelectKey == : this.pageData.rowGridSelectKey ==
this.$refs[this.gridName + this.myPrgmId].getData().length - 1 this.$refs[this.gridName + this.myPrgmId].getData().length - 1
? this.pageData.rowGridSelectKey ? this.pageData.rowGridSelectKey
: 0, : 0,
columnName: 'roleId', columnName: 'roleId',
setScroll: true, setScroll: true,
}); });
@ -609,8 +574,8 @@ export default {
item.upMenuId && item.upMenuId != '0' item.upMenuId && item.upMenuId != '0'
? item.upMenuId ? item.upMenuId
: item.upMenuId == '0' : item.upMenuId == '0'
? '00' ? '00'
: 'ROOT', : 'ROOT',
}; };
return newItem; return newItem;
}); });
@ -649,8 +614,8 @@ export default {
item.upMenuId && item.upMenuId != '0' item.upMenuId && item.upMenuId != '0'
? item.upMenuId ? item.upMenuId
: item.upMenuId == '0' : item.upMenuId == '0'
? '00' ? '00'
: 'ROOT', : 'ROOT',
}; };
return newItem; return newItem;
}); });

View File

@ -12,8 +12,8 @@
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
:sendParam="{ comId }" :sendParam="{ comId }"
customClass="select-large" customClass="select-large"
labelCols="12" :labelCols="12"
textCols="12" :textCols="12"
/> />
<!-- <component <!-- <component
:is="'selectCodeList'" :is="'selectCodeList'"

View File

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

View File

@ -7,28 +7,15 @@
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<component <component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'"
:is="'selectCodeList'" :dataKey="'selectUseFg'" :sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:parentPrgmId="myPrgmId" :addAll="true" customClass="select-large" />
:label="'사용여부'"
:dataKey="'selectUseFg'"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:addAll="true"
customClass="select-large"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<InputText <InputText :parentPrgmId="myPrgmId" label="프로그램명" valueNm="prgmNm" :searchOption="true"
:parentPrgmId="myPrgmId" :labelCols="12" :textCols="12" customClass="input-large" />
label="프로그램명"
valueNm="prgmNm"
:searchOption="true"
:labelCols="12"
:textCols="12"
customClass="input-large"
/>
</v-col> </v-col>
<v-col :cols="5" class="text-right"> <v-col :cols="6" class="text-right">
<BtnSearch size="large" /> <BtnSearch size="large" />
</v-col> </v-col>
</v-row> </v-row>
@ -38,46 +25,32 @@
<v-row ref="contents"> <v-row ref="contents">
<!-- 프로그램 리스트 --> <!-- 프로그램 리스트 -->
<v-col :cols="5" > <v-col :cols="5">
<v-card class="pb-5"> <v-card class="pa-5">
<div class="d-flex align-center justify-space-between pa-5"> <div class="d-flex align-center justify-space-between">
<v-card-title class="pa-0">프로그램 리스트</v-card-title> <v-card-title class="pa-0">프로그램 리스트</v-card-title>
<div> <div>
<Buttons <Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
:parentPrgmId="myPrgmId" :btnActionsFnc="btnActions" />
:bindingData="gridName"
:detailList="detailList"
:btnActionsFnc="btnActions"
/>
</div> </div>
</div> </div>
<div ref="gridParent" style="height: 60vh"> <div ref="gridParent" class="pt-5" style="height: 60vh">
<!-- <div ref="gridParent" class="px-5 h100"> <!-- <div ref="gridParent" class="px-5 h100">
</div> --> </div> -->
<component <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
:ref="gridName" :gridName="gridName" @getRowsData="getRowData" />
:is="loadGrid ? 'Grid' : null"
:parentPrgmId="myPrgmId"
:gridName="gridName"
@getRowsData="getRowData"
/>
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<!-- 프로그램 상세 --> <!-- 프로그램 상세 -->
<v-col :cols="7" > <v-col :cols="7">
<v-card class="pb-5"> <v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-5"> <div class="d-flex align-center justify-space-between pa-5">
<v-card-title class="pa-0">프로그램 상세</v-card-title> <v-card-title class="pa-0">프로그램 상세</v-card-title>
</div> </div>
<div class="px-5" style="min-height:calc(100% - 76px)"> <div class="px-5" style="min-height:calc(100% - 76px)">
<component <component :is="'Form'" :parentPrgmId="myPrgmId" :bindingData="gridName"
:is="'Form'" :detailList="detailList" @gridEditingFinish="gridEditingFinish" />
:parentPrgmId="myPrgmId"
:bindingData="gridName"
:detailList="detailList"
@gridEditingFinish="gridEditingFinish"
/>
<!-- <div class="w100"> <!-- <div class="w100">
</div> --> </div> -->
</div> </div>
@ -132,21 +105,19 @@ export default {
detailList: myDetail, detailList: myDetail,
dataPathMock: { dataPathMock: {
'rowGrid': { 'rowGrid': {
column: [ column: [
{ header: '프로그램ID', name: 'field1', align: 'left' }, { header: '프로그램ID', name: 'field1', align: 'left' },
{ header: '프로그램덤', name: 'field2', align: 'left' }, { header: '프로그램덤', name: 'field2', align: 'left' },
{ header: '타임', name: 'field3', align: 'left' }, { header: '타임', name: 'field3', align: 'left' },
{ header: '사용여부', name: 'field4', align: 'left' } { header: '사용여부', name: 'field4', align: 'left' }
], ],
data: dataPathDataExample, option: {
defaultRow: dataPathDataExample,
option: {
scrollY: false, scrollY: false,
scrollX: false, scrollX: false,
} }
} }
}, },
}; };
}, },
computed: { computed: {
@ -295,7 +266,7 @@ export default {
value: newRes, value: newRes,
}); });
this.loadGrid = true; this.loadGrid = true;
this.$nextTick(() => { this.$nextTick(() => {
if (newRes.length > 0) { if (newRes.length > 0) {
this.$refs[this.gridName].focus({ this.$refs[this.gridName].focus({
@ -303,12 +274,12 @@ export default {
//rowKey: this.chkRowGridSelectKey || 0, //rowKey: this.chkRowGridSelectKey || 0,
rowKey: rowKey:
this.pageData.rowGridSelectKey == '' || this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null this.pageData.rowGridSelectKey == null
? 0 ? 0
: this.pageData.rowGridSelectKey == : this.pageData.rowGridSelectKey ==
this.$refs[this.gridName].getData().length - 1 this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey ? this.pageData.rowGridSelectKey
: 0, : 0,
setScroll: true, setScroll: true,
}); });
} }
@ -331,7 +302,7 @@ export default {
rowGridSelectKey: data.rowKey, rowGridSelectKey: data.rowKey,
rowGridSelectData: data, rowGridSelectData: data,
}); });
}, },
compareData(type, newDt) { compareData(type, newDt) {
if (this.selectedCommCdData[type] == newDt) { if (this.selectedCommCdData[type] == newDt) {
@ -487,7 +458,7 @@ const myDetail = [
valueNm: 'prgmTpCd', valueNm: 'prgmTpCd',
essential: true, essential: true,
cols: 6, cols: 6,
class: 'py-2', class: 'py-2 pt-5',
list: [ list: [
{ text: '프로그램', value: '1' }, { text: '프로그램', value: '1' },
{ text: '팝업', value: '2' }, { text: '팝업', value: '2' },
@ -502,10 +473,11 @@ const myDetail = [
essential: true, essential: true,
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2', class: 'py-2 pt-13',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: true, required: true,
textCols: 12, textCols: 12,
labelCols:12,
iconShow: true iconShow: true
}, },
{ {
@ -514,7 +486,7 @@ const myDetail = [
valueNm: 'url', valueNm: 'url',
disabled: false, disabled: false,
cols: 12, cols: 12,
class: 'py-2', class: 'py-2 pt-4',
required: true, required: true,
textCols: 12, textCols: 12,
iconShow: true iconShow: true
@ -525,7 +497,7 @@ const myDetail = [
valueNm: 'regUserNo', valueNm: 'regUserNo',
disabled: true, disabled: true,
cols: 6, cols: 6,
class: 'py-2', class: 'py-2 pt-5',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
textCols: 12, textCols: 12,
iconShow: true iconShow: true
@ -536,7 +508,7 @@ const myDetail = [
valueNm: 'regDttm', valueNm: 'regDttm',
disabled: true, disabled: true,
cols: 6, cols: 6,
class: 'py-2', class: 'py-2 pt-5',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
textCols: 12, textCols: 12,
iconShow: true iconShow: true
@ -547,7 +519,7 @@ const myDetail = [
valueNm: 'procUserNo', valueNm: 'procUserNo',
disabled: true, disabled: true,
cols: 6, cols: 6,
class: 'py-2', class: 'py-2 pt-5',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
textCols: 12, textCols: 12,
iconShow: true iconShow: true
@ -558,19 +530,10 @@ const myDetail = [
valueNm: 'procDttm', valueNm: 'procDttm',
disabled: true, disabled: true,
cols: 6, cols: 6,
class: 'py-2', class: 'py-2 pt-5',
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
textCols: 12, textCols: 12,
iconShow: true iconShow: true
}, },
]; ];
import { getPathDataExample } from '@/const/const'
const dataPathDataExample = getPathDataExample({
field1: 'PRG0001',
field2: '대시보드',
field3: '프로그램',
field4: '사용'
});
</script> </script>

View File

@ -803,7 +803,7 @@ export default {
header: "NO", header: "NO",
name: "rowNum", name: "rowNum",
width: 70, width: 70,
align: "center", align: "right",
// hidden: true, // hidden: true,
}, },
{ {

View File

@ -3,7 +3,7 @@
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="center" no-gutters> <v-row align="end" no-gutters>
<v-col :cols="2.5"> <v-col :cols="2.5">
<component <component
:is="'selectCodeList'" :is="'selectCodeList'"
@ -49,8 +49,8 @@
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
label="공정명" label="공정명"
valueNm="eccNm" valueNm="eccNm"
:labelCols="2" :labelCols="12"
:textCols="9" :textCols="12"
:searchOption="true" :searchOption="true"
/> />
</v-col> </v-col>
@ -59,7 +59,13 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row align="center" no-gutters> <v-row align="center" no-gutters>
<div style="display: none">
<component
:is="'SelectBlocMstr'"
ref="SelectBlocMstr"
:parentPrgmId="myPrgmId"
/>
</div>
</v-row> </v-row>
</v-card> </v-card>
</v-col> </v-col>
@ -91,7 +97,7 @@
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<v-col :cols="7" class="h100"> <v-col :cols="7" style="min-height:75vh;">
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title class="custom-title-4" style="min-height:76px;" <v-card-title class="custom-title-4" style="min-height:76px;"
>공정 상세 >공정 상세

View File

@ -167,7 +167,7 @@ export default {
header: '설비종류ID', header: '설비종류ID',
name: 'eqpmKindId', name: 'eqpmKindId',
width: gridWidth * 0.5, width: gridWidth * 0.5,
align: 'center', align: 'left',
}, },
{ {
header: '설비종류명', header: '설비종류명',

View File

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

View File

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

View File

@ -286,7 +286,7 @@ export default {
resizable: true, resizable: true,
}, },
header: { header: {
height: 65, height: 75,
complexColumns: myComplexColumns, complexColumns: myComplexColumns,
}, },
}; };

View File

@ -104,7 +104,6 @@
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
:gridName="gridName" :gridName="gridName"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
@dblClick="gridDoubleClickEvent"
/> />
<!-- <!--
<component <component
@ -143,7 +142,6 @@ import SelectBox from "@/components/common/select/SelectBox";
import SelectCmCycle from "@/components/common/select/SelectCmCycle"; import SelectCmCycle from "@/components/common/select/SelectCmCycle";
import DatePicker from "@/components/common/Datepicker"; import DatePicker from "@/components/common/Datepicker";
import Grid from "~/components/common/Grid"; import Grid from "~/components/common/Grid";
import PageTitle from "@/components/common/PageTitle";
let myTitle; let myTitle;
let myPrgmId; let myPrgmId;
@ -170,7 +168,6 @@ export default {
SelectCmCycle, SelectCmCycle,
DatePicker, DatePicker,
Grid, Grid,
PageTitle,
}, },
data() { data() {
return { return {
@ -204,6 +201,7 @@ export default {
computed: { computed: {
...mapState({ ...mapState({
pageData: (state) => state.pageData[myPrgmId], pageData: (state) => state.pageData[myPrgmId],
isDarkMode: "isDarkMode",
}), }),
fromDt() { fromDt() {
return this.pageData.fromDt; return this.pageData.fromDt;
@ -237,6 +235,16 @@ export default {
await this.search(); await this.search();
} }
}, },
isDarkMode(newVal) {
// Switch mode for 10 tooltips
for (let i = 0; i < 10; i++) {
const tooltipEl = document.getElementById(`tooltipElement_${i}`);
if (tooltipEl) {
tooltipEl.classList.remove("light-mode", "dark-mode");
tooltipEl.classList.add(newVal ? "dark-mode" : "light-mode");
}
}
},
}, },
async beforeCreate() { async beforeCreate() {
myPrgmId = this.$route.query.prgmId; myPrgmId = this.$route.query.prgmId;
@ -357,13 +365,79 @@ export default {
gridInit() { gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 30; const gridHeight = this.$refs.gridParent.offsetHeight - 30;
const _this = this; const _this = this;
// Define custom button
class CustomButton {
constructor(props,pageData) {
const { grid, rowKey, columnInfo } = props;
const gridData = grid.store.data.rawData;
const value = gridData[rowKey][columnInfo.name];
const onClickCallback = columnInfo.renderer.options.onClick;
this.disabled = columnInfo.renderer.options.disabled || false;
const elDiv = document.createElement('div');
elDiv.innerHTML = `<span>${value}</span>`;
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
const el2 = document.createElement('button');
$(el2).addClass('edit-btn blue--text');
el2.innerText = '보기';
elDiv.appendChild(el2);
this.el = elDiv;
if (!this.disabled && typeof onClickCallback === 'function') {
// click 이벤트
this.el.addEventListener('click', function(event) {
onClickCallback(rowKey);
});
}
}
getElement() {
return this.el;
}
getValue() {
// return this.el.value;
}
mounted() {
// this.el.focus();
}
}
var columnList = [ var columnList = [
{ header: "NO", name: "no", align: "right", width: 80 }, { header: "NO", name: "no", align: "right", width: 80 },
{ header: "fabId", name: "fabId", hidden: true }, { header: "fabId", name: "fabId", hidden: true },
{ header: "FAB", name: "fabNm", align: "left" }, { header: "FAB", name: "fabNm", align: "left" },
{ header: "eqpmGrpId", name: "eqpmGrpId", hidden: true }, { header: "eqpmGrpId", name: "eqpmGrpId", hidden: true },
{ header: "설비그룹", name: "eqpmGrpNm", align: "left", width: 200 }, { header: "설비그룹", name: "eqpmGrpNm", align: "left", width: 200,
// Render custom button to switch page instead of double click on row
renderer: {
type: CustomButton,
options: {
value: '보기',
onClick: (rowKey) => {
const gridInstance = this.$refs[this.gridName].gridInstance;
const eventRowData = gridInstance.invoke("getRow", rowKey);
const data = {
cmCycle: this.pageData.cmCycle,
fromDt: this.pageData.fromDt,
fabId: this.selectValue01,
eqpmKindId: this.selectValue02,
eqpmGrpId: this.selectValue03,
eqpmId: eventRowData.eqpmId,
};
const key = "tick_" + Math.random();
this.$router.push({
name: "ems-effc-EnrgUseEqpmDetlMntrPage",
query: {
prgmId: "PRG0082",
},
params: {
...data,
key: key,
},
});
}
}
}
},
{ header: "eqpmId", name: "eqpmId", hidden: true }, { header: "eqpmId", name: "eqpmId", hidden: true },
{ header: "설비명", name: "eqpmNm", align: "left", width: 200 }, { header: "설비명", name: "eqpmNm", align: "left", width: 200 },
{ {
@ -472,6 +546,10 @@ export default {
}, },
], ],
}, },
pageOptions: {
useClient: true,
perPage: 3,
}
}; };
this.setGridOption({ this.setGridOption({
@ -693,53 +771,83 @@ function numberFormatter({ value }) {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@for $i from 0 through 9 { ::v-deep {
#gridParent > * { @for $i from 0 through 9 {
// .tui-grid-content-area{ #gridParent > * {
background-color: red; // .tui-grid-content-area{
color: red; background-color: red;
overflow: visible; color: red;
position: relative; overflow: visible;
} position: relative;
#tooltipTargetElement_#{$i} { }
overflow: visible; #tooltipTargetElement_#{$i} {
position: relative; // 테스트3번쨰 overflow: visible;
white-space: nowrap; // 테스트3번쨰 position: relative; // 테스트3번쨰
} white-space: nowrap; // 테스트3번쨰
#tooltipElement_#{$i} { }
display: none; #tooltipElement_#{$i} {
overflow: visible; display: none;
position: relative; overflow: visible;
} position: relative;
#tooltipTargetElement_#{$i}:hover #tooltipElement_#{$i} { }
display: block; #tooltipTargetElement_#{$i}:hover #tooltipElement_#{$i} {
position: absolute; display: block;
min-width: 100%; position: absolute;
bottom: 30px; min-width: 100%;
z-index: 1000000000; bottom: 40px;
align: "center"; z-index: 1000000000;
color: #f2f2f2; align: "center";
background-color: #7f7f7f; color: #f2f2f2;
// width : 77px; background-color: #000000d9;
width: 200%; // width : 77px;
left: -50%; width: 200%;
border-radius: 3px; left: -50%;
word-break: keep-all; border-radius: 4px;
white-space: pre-wrap; padding: 6px 0px;
} word-break: keep-all;
.tui-grid-rside-area { white-space: pre-wrap;
display: none; // Light mode
overflow: visible; &.light-mode {
overflow-x: visible; background-color: #000000d9;
overflow-y: visible; }
} // Dark mode
.tui-grid-header-area { &.dark-mode {
border-style: solid; background-color: #424242;
border-width: 0 0 1px; }
position: relative;
overflow: visible; &::after {
overflow-x: visible; content: "";
overflow-y: visible; position: absolute;
top: 100%;
left: 50%;
margin-left: -6px;
border-width: 6px;
border-style: solid;
}
&.light-mode::after {
border-color: #000000d9 transparent transparent transparent;
}
&.dark-mode::after {
border-color: #424242 transparent transparent transparent;
}
}
.tui-grid-rside-area {
display: none;
overflow: visible;
overflow-x: visible;
overflow-y: visible;
}
.tui-grid-header-area {
border-style: solid;
border-width: 0 0 1px;
position: relative;
overflow: visible;
overflow-x: visible;
overflow-y: visible;
}
} }
} }
</style> </style>