Compare commits

...

11 Commits

Author SHA1 Message Date
f6c071bdf0 fix menu item:hover style 2025-08-13 13:37:51 +07:00
24882a21a5 fix bugs style button delete 2025-08-13 13:20:58 +07:00
9aa9939a43 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-dungtv-0813 2025-08-13 11:47:03 +07:00
dev
0760bde4e1 Merge pull request 'add pagination for screen 27 move pagination screen 28' (#62) from dev-manhph1-figbug into dev
Reviewed-on: #62
2025-08-13 13:46:53 +09:00
2802e93a44 add pagination for screen 27 move pagination screen 28 2025-08-13 13:38:12 +09:00
dev
39905e6f80 Merge pull request 'update code s32 s17' (#61) from dev-luannv24-s32-s17fixbug into dev
Reviewed-on: #61
2025-08-12 18:47:56 +09:00
dev
0825663c64 Merge pull request 'fix icon datepicker' (#60) from dev-manhph1-figbug into dev
Reviewed-on: #60
2025-08-12 18:47:08 +09:00
dev
8d444eafcd Merge pull request 'Update pagination UI + Fix bugs gauge chart line chart + Fix bugs s14' (#59) from dev-nghiantt-fix-bugs into dev
Reviewed-on: #59
2025-08-12 18:43:04 +09:00
71e90064a2 update code s32 s17 2025-08-12 18:37:21 +09:00
7d2bcb9496 fix icon datepicker 2025-08-12 18:00:01 +09:00
84c7e61254 Update pagination UI + Fix bugs gauge chart line chart + Fix bugs s14 2025-08-12 17:07:52 +09:00
29 changed files with 231 additions and 219 deletions

View 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

View 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

View File

@ -253,16 +253,12 @@ a {
color: map-deep-get($config, #{$theme}, "v-select-label-color"); color: map-deep-get($config, #{$theme}, "v-select-label-color");
} }
// .header {
// background-color: map-deep-get($config, #{$theme}, "header-backgroud");
// border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-header-border");
// }
.custom-chart{ .custom-chart{
border: 1px solid map-deep-get($config, #{$theme}, "v-chart-border"); border: 1px solid map-deep-get($config, #{$theme}, "v-chart-border");
} }
.v-icon { .v-icon {
color: currentColor;
&.icon-orange { &.icon-orange {
svg { svg {
fill:map-deep-get($config, fill:map-deep-get($config,
@ -574,6 +570,7 @@ a {
& th, & th,
& td { & td {
height: 48px; height: 48px;
color: map-deep-get($config, #{$theme}, "tui-datepicker-calendar-color");
} }
} }

View File

@ -144,10 +144,11 @@
} }
&.ant-btn-danger { &.ant-btn-danger {
&.ant-btn-background-ghost { &.ant-btn-background-ghost {
color:map-deep-get($config, #{$theme}, "ant-btn-danger-color"); color: map-deep-get($config, #{$theme}, "ant-btn-danger-color");
border-color:map-deep-get($config, #{$theme}, "ant-btn-danger-border"); border-color: map-deep-get($config, #{$theme}, "ant-btn-danger-color");
background: map-deep-get($config, #{$theme}, "ant-btn-danger-bg") !important; // background: map-deep-get($config, #{$theme}, "ant-btn-danger-color") !important;
} }
} }

View File

@ -10,7 +10,7 @@
// box-shadow: none !important; // box-shadow: none !important;
background-color: map-deep-get($config, #{$theme}, "paging-background") !important; background-color: map-deep-get($config, #{$theme}, "paging-background") !important;
color: map-deep-get($config, #{$theme}, "paging-text") !important; color: map-deep-get($config, #{$theme}, "paging-text") !important;
border: 0.5px solid #424242; border: none;
.ant-pagination-item-link { .ant-pagination-item-link {
border: none; border: none;
@ -19,13 +19,13 @@
} }
.ant-pagination-item-active { .ant-pagination-item-active {
border-color: #1890ff !important; border: 1px solid #1890ff !important;
color: #1890ff !important color: #1890ff !important
} }
.ant-pagination-options-size-changer { .ant-pagination-options-size-changer {
.ant-select-selection { .ant-select-selection {
border: 0.5px solid #424242; border: 0.5px solid map-deep-get($config, #{$theme}, "v-input-fieldset-color") !important;
background: map-deep-get($config, #{$theme}, "paging-background") !important; background: map-deep-get($config, #{$theme}, "paging-background") !important;
color: map-deep-get($config, #{$theme}, "paging-text") !important; color: map-deep-get($config, #{$theme}, "paging-text") !important;
} }

View File

@ -79,6 +79,8 @@
&>.v-treeview-node__root:before { &>.v-treeview-node__root:before {
border-radius: 6px; border-radius: 6px;
z-index: -1; z-index: -1;
background-color: rgba(0, 0, 0, 0);
transition-duration: 0s;
} }
&>.v-treeview-node__root:hover:before { &>.v-treeview-node__root:hover:before {
@ -379,21 +381,21 @@
.v-treeview-node__children { .v-treeview-node__children {
.v-treeview-node { .v-treeview-node {
>.v-treeview-node__root { >.v-treeview-node__root {
.v-treeview-node__content {
.v-treeview-node__label {
color: map-deep-get($config, #{$theme}, "card-default-color");
}
}
*:hover, *:hover,
:hover { :hover {
border-width: 0; border-width: 0;
} }
&:hover { &:hover {
border: 1px solid map-deep-get($config, #{$theme}, "v-input-textarea-border");
border-radius: 8px;
background-color: rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 0);
&:before {
opacity: 1 !important;
border: 1px solid map-deep-get($config, #{$theme}, "v-input-textarea-border");
border-radius: 8px;
}
.v-treeview-node__content { .v-treeview-node__content {
.v-treeview-node__label { .v-treeview-node__label {
color: map-deep-get($config, #{$theme}, "tui-grid-title-color"); color: map-deep-get($config, #{$theme}, "tui-grid-title-color");
@ -418,6 +420,12 @@
} }
} }
.v-treeview-node__content {
.v-treeview-node__label {
color: map-deep-get($config, #{$theme}, "card-default-color");
}
}
} }
} }

View File

@ -166,7 +166,7 @@ $config: (
ant-btn-primary-color: #212224, ant-btn-primary-color: #212224,
ant-btn-danger-bg:#D32029, ant-btn-danger-bg:#D32029,
ant-btn-danger-border:#D32029, ant-btn-danger-border:#D32029,
ant-btn-danger-color:#212224, ant-btn-danger-color:#D32029,
ant-btn-default-border:#FFFFFF2E, ant-btn-default-border:#FFFFFF2E,
ant-btn-default-bg:#FFFFFF2E, ant-btn-default-bg:#FFFFFF2E,
ant-btn-default-color:#FFFFFFD9, ant-btn-default-color:#FFFFFFD9,

View File

@ -23,14 +23,14 @@
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon> <v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
</template> --> </template> -->
<template v-slot:append> <template v-slot:append>
<a-icon class="v-icon" type="calendar" style="width: 14px; height: 14px;" /> <a-icon v-show="!isRange" class="v-icon" type="calendar" style="width: 14px; height: 14px;" />
</template> </template>
<template #append-outer> <template #append-outer>
<div ref="startpicker-container" id="startpicker-container"></div> <div ref="startpicker-container" id="startpicker-container"></div>
</template> </template>
</v-text-field> </v-text-field>
<div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }"> <div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }">
<img :src="arrowIcon" alt=""> <img :src="arrowIcon">
</div> </div>
<v-text-field <v-text-field
v-show="isRange" v-show="isRange"
@ -43,7 +43,9 @@
outlined outlined
> >
<template #append> <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>
<template #append-outer> <template #append-outer>
<div ref="endpicker-container" id="endpicker-container"></div> <div ref="endpicker-container" id="endpicker-container"></div>
@ -212,9 +214,9 @@ export default {
}, },
arrowIcon() { arrowIcon() {
if(this.isDarkMode){ 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: { watch: {

View File

@ -5,10 +5,7 @@
<!-- <v-icon x-small :color="required ? '#fb8200' : 'primary'" class="mr-1" <!-- <v-icon x-small :color="required ? '#fb8200' : 'primary'" class="mr-1"
>mdi-record-circle</v-icon >mdi-record-circle</v-icon
> --> > -->
<v-icon <v-icon small :class="['mr-1', required ? 'icon-orange' : 'icon-blue']">
small
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
>
$icoBulletPoint $icoBulletPoint
</v-icon> </v-icon>
{{ label }} {{ label }}
@ -16,17 +13,11 @@
</v-col> </v-col>
<v-col :cols="label ? textCols : ''"> <v-col :cols="label ? textCols : ''">
<div class="datepicker-container"> <div class="datepicker-container">
<v-text-field <v-text-field id="startpicker" ref="startpicker" v-model="fromDtValue"
id="startpicker" :class="isRange ? 'v-input__custom half' : 'v-input__custom'" :hide-details="true" readonly
ref="startpicker" outlined>
v-model="fromDtValue" <template v-slot:append>
:class="isRange ? 'v-input__custom half' : 'v-input__custom'" <a-icon v-show="!isRange" class="v-icon" type="calendar" style="width: 14px; height: 14px;" />
:hide-details="true"
readonly
outlined
>
<template #append >
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
</template> </template>
<template #append-outer> <template #append-outer>
<div ref="startpicker-container" id="startpicker-container"></div> <div ref="startpicker-container" id="startpicker-container"></div>
@ -36,18 +27,13 @@
<div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }"> <div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">
<img :src="arrowIcon" alt=""> <img :src="arrowIcon" alt="">
</div> </div>
<v-text-field <v-text-field v-show="isRange" id="endpicker" ref="endpicker" v-model="toDtValue"
v-show="isRange" :class="isRange ? 'v-input__custom half' : 'v-input__custom'" :hide-details="true" readonly
id="endpicker" outlined>
ref="endpicker"
v-model="toDtValue"
:class="isRange ? 'v-input__custom half' : 'v-input__custom'"
:hide-details="true"
readonly
outlined
>
<template #append> <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>
<template #append-outer> <template #append-outer>
<div ref="endpicker-container" id="endpicker-container"></div> <div ref="endpicker-container" id="endpicker-container"></div>
@ -91,9 +77,9 @@ export default {
require: false, require: false,
default: false, default: false,
}, },
isRangeOption:{ isRangeOption: {
type:Boolean, type: Boolean,
require:false, require: false,
default: true default: true
} }
}, },
@ -177,21 +163,23 @@ export default {
this.myOptions.viewFormat, this.myOptions.viewFormat,
); );
}, },
toDtChange(){ toDtChange() {
return { return {
isCheck:this.searchParam.isCheck , isCheck: this.searchParam.isCheck,
toDt : Utility.setFormatDate( toDt: Utility.setFormatDate(
this.searchParam.toDt, this.searchParam.toDt,
this.myOptions.viewFormat, this.myOptions.viewFormat,
)}; )
};
}, },
fromDtChange(){ fromDtChange() {
return { return {
isCheck:this.searchParam.isCheck , isCheck: this.searchParam.isCheck,
fromDt : Utility.setFormatDate( fromDt: Utility.setFormatDate(
this.searchParam.fromDt, this.searchParam.fromDt,
this.myOptions.viewFormat, this.myOptions.viewFormat,
)}; )
};
}, },
defaultRange() { defaultRange() {
return this.searchParam.defaultRange return this.searchParam.defaultRange
@ -205,10 +193,10 @@ export default {
); );
}, },
arrowIcon() { arrowIcon() {
if(this.isDarkMode){ 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: { watch: {
@ -242,24 +230,24 @@ export default {
this.endDatepickerInstance.setDate(new Date(newVal)); this.endDatepickerInstance.setDate(new Date(newVal));
} }
}, },
fromDtChange:{ fromDtChange: {
deep:true, deep: true,
handler(){ handler() {
if(this.fromDtChange.isCheck){ if (this.fromDtChange.isCheck) {
this.fromDtChanged(this.fromDtChange.fromDt); this.fromDtChanged(this.fromDtChange.fromDt);
this.setPageData({ this.setPageData({
isCheck : false isCheck: false
}) })
} }
} }
}, },
toDtChange:{ toDtChange: {
deep:true, deep: true,
handler(){ handler() {
if(this.toDtChange.isCheck){ if (this.toDtChange.isCheck) {
this.toDtChanged(this.toDtChange.toDt); this.toDtChanged(this.toDtChange.toDt);
this.setPageData({ this.setPageData({
isCheck : false isCheck: false
}) })
} }
} }
@ -370,7 +358,7 @@ export default {
if ( if (
(myRange > rangeGap && compareDt.isAfter(defaultDt)) || (myRange > rangeGap && compareDt.isAfter(defaultDt)) ||
defaultDt.format(this.myOptions.sendFormat) === defaultDt.format(this.myOptions.sendFormat) ===
compareDt.format(this.myOptions.sendFormat) compareDt.format(this.myOptions.sendFormat)
) { ) {
// if(this.cmCycleFlag){ // if(this.cmCycleFlag){
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
@ -400,7 +388,7 @@ export default {
if ( if (
(myRange > rangeGap && defaultDt.isAfter(compareDt)) || (myRange > rangeGap && defaultDt.isAfter(compareDt)) ||
defaultDt.format(this.myOptions.sendFormat) === defaultDt.format(this.myOptions.sendFormat) ===
compareDt.format(this.myOptions.sendFormat) compareDt.format(this.myOptions.sendFormat)
) { ) {
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
} else { } else {
@ -424,6 +412,7 @@ export default {
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
background-color: #edf4fc; background-color: #edf4fc;
.tui-timepicker-column.tui-timepicker-colon { .tui-timepicker-column.tui-timepicker-colon {
color: #000 !important; color: #000 !important;
} }

View File

@ -2,25 +2,19 @@
<v-row class="search-box" align="center" no-gutters> <v-row class="search-box" align="center" no-gutters>
<v-col v-if="label" :cols="labelCols"> <v-col v-if="label" :cols="labelCols">
<label for="" class="search-box-label"> <label for="" class="search-box-label">
<v-icon small color="primary" <v-icon small color="primary"
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']" :class="['mr-1', required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
>$icoBulletPoint</v-icon>
{{ label }} {{ label }}
</label> </label>
</v-col> </v-col>
<v-col :cols="label ? textCols : ''"> <v-col :cols="label ? textCols : ''">
<div :class="['datepicker-container', customClass]" > <div :class="['datepicker-container', customClass]">
<v-text-field <v-text-field id="startpicker" ref="startpicker" v-model="fromDtValue"
id="startpicker" :class="isRange ? 'v-input__custom half' : 'v-input__custom'" :hide-details="true" readonly
ref="startpicker" outlined>
v-model="fromDtValue" <template #append>
:class="isRange ? 'v-input__custom half' : 'v-input__custom'" <a-icon class="v-icon" v-show="!isRange" type="calendar" style="width: 14px; height: 14px;" />
:hide-details="true" <!-- <v-icon size="20" v-show="!isRange">$icoCalendar</v-icon> -->
readonly
outlined
>
<template #append >
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
</template> </template>
<template #append-outer> <template #append-outer>
<div ref="startpicker-container" id="startpicker-container"></div> <div ref="startpicker-container" id="startpicker-container"></div>
@ -29,18 +23,13 @@
<div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }"> <div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }">
<img :src="arrowIcon" alt=""> <img :src="arrowIcon" alt="">
</div> </div>
<v-text-field <v-text-field v-show="isRange" id="endpicker" ref="endpicker" v-model="toDtValue"
v-show="isRange" :class="isRange ? 'v-input__custom half' : 'v-input__custom'" :hide-details="true" readonly
id="endpicker" outlined>
ref="endpicker"
v-model="toDtValue"
:class="isRange ? 'v-input__custom half' : 'v-input__custom'"
:hide-details="true"
readonly
outlined
>
<template #append> <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>
<template #append-outer> <template #append-outer>
<div ref="endpicker-container" id="endpicker-container"></div> <div ref="endpicker-container" id="endpicker-container"></div>
@ -98,6 +87,7 @@ export default {
searchParam(state) { searchParam(state) {
return state.pageData[this.parentPrgmId]; return state.pageData[this.parentPrgmId];
}, },
isDarkMode: "isDarkMode",
}), }),
myCmCycle() { myCmCycle() {
return this.searchParam.cmCycle; return this.searchParam.cmCycle;
@ -138,10 +128,10 @@ export default {
); );
}, },
arrowIcon() { arrowIcon() {
if(this.isDarkMode){ 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: { watch: {
@ -280,7 +270,7 @@ export default {
if ( if (
(myRange > rangeGap && compareDt.isAfter(defaultDt)) || (myRange > rangeGap && compareDt.isAfter(defaultDt)) ||
defaultDt.format(this.myOptions.sendFormat) === defaultDt.format(this.myOptions.sendFormat) ===
compareDt.format(this.myOptions.sendFormat) compareDt.format(this.myOptions.sendFormat)
) { ) {
// if(this.cmCycleFlag){ // if(this.cmCycleFlag){
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
@ -310,7 +300,7 @@ export default {
if ( if (
(myRange > rangeGap && defaultDt.isAfter(compareDt)) || (myRange > rangeGap && defaultDt.isAfter(compareDt)) ||
defaultDt.format(this.myOptions.sendFormat) === defaultDt.format(this.myOptions.sendFormat) ===
compareDt.format(this.myOptions.sendFormat) compareDt.format(this.myOptions.sendFormat)
) { ) {
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
} else { } else {
@ -334,6 +324,7 @@ export default {
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
background-color: #edf4fc; background-color: #edf4fc;
.tui-timepicker-column.tui-timepicker-colon { .tui-timepicker-column.tui-timepicker-colon {
color: #000 !important; color: #000 !important;
} }

View File

@ -2,15 +2,13 @@
export default function getGaugeChartOption({ title, min = 0, max = 160, unit = '%', isDarkMode = false, backgroundRadius = 97 }) { export default function getGaugeChartOption({ title, min = 0, max = 160, unit = '%', isDarkMode = false, backgroundRadius = 97 }) {
const colorRanges = isDarkMode const colorRanges = isDarkMode
? [ ? [
[0.375, '#49AA19'], // Dark Green [60 / 160, '#49AA19'], // Dark Green
// [0.5, '#B8860B'], // Dark Yellow [100 / 160, '#D89614'], // Dark Orange
[0.625, '#D89614'], // Dark Orange
[1, '#D32029'], // Dark Red [1, '#D32029'], // Dark Red
] ]
: [ : [
[0.375, '#52C41A'], // Light Green [60 / 160, '#52C41A'], // Light Green
// [0.5, '#FFD700'], // Light Yellow [100 / 160, '#FAAD14'], // Light Orange
[0.625, '#FAAD14'], // Light Orange
[1, '#F5222D'], // Light Red [1, '#F5222D'], // Light Red
]; ];
// Old color range // Old color range
@ -56,6 +54,7 @@ export default function getGaugeChartOption({ title, min = 0, max = 160, unit =
endAngle: -45, endAngle: -45,
min: min, min: min,
max: max, max: max,
splitNumber: 8,
// progress: { // progress: {
// show: true, // show: true,
// width: 15, // width: 15,

View File

@ -34,6 +34,8 @@ export default function getLineChartOption({
legend: { legend: {
// data: legendData, // data: legendData,
icon: 'circle', icon: 'circle',
itemWidth: 15, // Width of the legend icon
itemHeight: 15,
top: '0%', top: '0%',
right: '5%', right: '5%',
orient: 'horizontal', orient: 'horizontal',

View File

@ -17,20 +17,24 @@
{{ item.label }} {{ item.label }}
</label> </label>
</v-col> </v-col>
<v-col :cols="label ? item.textCols : ''"> <v-col :cols="label ? item.textCols : ''" class="py-0">
<!-- <v-col :cols="label ? 9 : ''"> --> <!-- <v-col :cols="label ? 9 : ''"> -->
<!-- :value="textfield" --> <!-- :value="textfield" -->
<v-text-field <v-text-field
readonly readonly
v-model="selectValue" v-model="selectValue"
append-icon="mdi-magnify"
class="v-input__custom" class="v-input__custom"
@click="dialog = !dialog" @click="dialog = !dialog"
outlined outlined
:hide-details="true" :hide-details="true"
:disabled="item.disabled || false" :disabled="item.disabled || false"
:required="item.required || 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-col>
<!-- <v-row justify="center"> --> <!-- <v-row justify="center"> -->

View File

@ -1,5 +1,5 @@
<template> <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="label" cols="2"> -->
<v-col v-if="item.label" :cols="item.labelCols" class="py-0"> <v-col v-if="item.label" :cols="item.labelCols" class="py-0">
<label for="" class="search-box-label"> <label for="" class="search-box-label">

View File

@ -1,5 +1,5 @@
<template> <template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.4899 7.76897L0.552358 0.279682C0.491643 0.249325 0.422 0.242182 0.355929 0.258253C0.282599 0.276381 0.219441 0.322828 0.180282 0.387423C0.141124 0.452017 0.129156 0.529497 0.147 0.602896L1.68629 6.89218C1.7095 6.98682 1.77914 7.06361 1.872 7.09397L4.5095 7.99932L1.87379 8.90468C1.78093 8.93682 1.71129 9.01182 1.68986 9.10647L0.147 15.4047C0.130929 15.4708 0.138072 15.5404 0.168429 15.5993C0.238072 15.7404 0.4095 15.7975 0.552358 15.7279L15.4899 8.28147C15.5452 8.25468 15.5899 8.20825 15.6184 8.15468C15.6881 8.01182 15.6309 7.8404 15.4899 7.76897ZM1.90771 13.6154L2.80593 9.94397L8.07736 8.13504C8.11843 8.12075 8.15236 8.08861 8.16664 8.04575C8.19164 7.97075 8.15236 7.8904 8.07736 7.86361L2.80593 6.05647L1.91129 2.39932L13.1256 8.02254L1.90771 13.6154Z" fill="white"/> <path d="M15.4899 7.76897L0.552358 0.279682C0.491643 0.249325 0.422 0.242182 0.355929 0.258253C0.282599 0.276381 0.219441 0.322828 0.180282 0.387423C0.141124 0.452017 0.129156 0.529497 0.147 0.602896L1.68629 6.89218C1.7095 6.98682 1.77914 7.06361 1.872 7.09397L4.5095 7.99932L1.87379 8.90468C1.78093 8.93682 1.71129 9.01182 1.68986 9.10647L0.147 15.4047C0.130929 15.4708 0.138072 15.5404 0.168429 15.5993C0.238072 15.7404 0.4095 15.7975 0.552358 15.7279L15.4899 8.28147C15.5452 8.25468 15.5899 8.20825 15.6184 8.15468C15.6881 8.01182 15.6309 7.8404 15.4899 7.76897ZM1.90771 13.6154L2.80593 9.94397L8.07736 8.13504C8.11843 8.12075 8.15236 8.08861 8.16664 8.04575C8.19164 7.97075 8.15236 7.8904 8.07736 7.86361L2.80593 6.05647L1.91129 2.39932L13.1256 8.02254L1.90771 13.6154Z" fill="currentColor"/>
</svg> </svg>
</template> </template>

View File

@ -380,7 +380,7 @@ const myDetail = [
label: '대상 유형', label: '대상 유형',
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'pr-4', class: 'pr-4 py-2',
list: 'emMapDivList', list: 'emMapDivList',
valueNm: 'objKind', valueNm: 'objKind',
itemText: 'commCdNm', itemText: 'commCdNm',
@ -395,7 +395,7 @@ const myDetail = [
type: 'ReadPlcPop', type: 'ReadPlcPop',
label: '대상 항목', label: '대상 항목',
valueNm: 'objId', valueNm: 'objId',
disabled: false, disabled: true,
cols: 6, cols: 6,
class: 'pl-4 py-2', class: 'pl-4 py-2',
required: true, required: true,
@ -482,7 +482,6 @@ const myDetail = [
disabledFg: 'objKind', disabledFg: 'objKind',
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true,
}, },
{ {
type: 'InputText', type: 'InputText',

View File

@ -21,9 +21,9 @@
</v-col> </v-col>
</v-row> </v-row>
<!-- Create the line between date picker and form --> <!-- 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> <v-col>
<div style="height: 1px; background-color: #ccc;"></div> <div style="height: 1px; background-color: #0000000F;"></div>
</v-col> </v-col>
</v-row> </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;">
@ -43,7 +43,7 @@
<div <div
ref="gridParent" ref="gridParent"
class="w100" class="w100"
style="height: calc((100vh - 600px) / 2);" style="height: calc((100vh - 500px) / 2);"
> >
<Grid <Grid
:ref="gridName" :ref="gridName"
@ -57,7 +57,7 @@
</div> </div>
</v-col> </v-col>
</v-row> </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"> <v-col :cols="4">
<label for="" class="search-box-label"> <label for="" class="search-box-label">
<!-- <v-icon x-small color="primary" class="mr-1" <!-- <v-icon x-small color="primary" class="mr-1"
@ -77,7 +77,7 @@
<div <div
ref="chartParent" ref="chartParent"
class="h100 w100" class="h100 w100"
style="height: calc((100vh - 600px) / 2 - 30px);" style="height: calc((100vh - 500px) / 2);"
> >
<component <component
class="w100 h100" class="w100 h100"

View File

@ -947,17 +947,6 @@ const asgnRoleByUserColumns = [
]; ];
const asgnMenuByUserColumns = [ const asgnMenuByUserColumns = [
{
header: '',
name: '',
align: 'center',
width: 50,
formatter: (props) => {
return `<label class="custom-radio">
<span class="radio-mark"></span>
</label>`;
}
},
{ header: '메뉴명', name: 'menuNm' }]; { header: '메뉴명', name: 'menuNm' }];
const myDetail = blocCdList => { const myDetail = blocCdList => {

View File

@ -37,7 +37,7 @@
class="mr-1" icon="unordered-list">목록</a-button> class="mr-1" icon="unordered-list">목록</a-button>
<a-button @click="viewPageButtonGroupClickEvent('reply')" type="primary" :ripple="false" <a-button @click="viewPageButtonGroupClickEvent('reply')" type="primary" :ripple="false"
class="mr-1" icon="send-outlined"> class="mr-1" icon="send-outlined">
<v-icon small :class="['mr-2']">$icoSend</v-icon> <v-icon small :class="['mr-2']" >$icoSend</v-icon>
답글 답글
</a-button> </a-button>
<a-button @click="viewPageButtonGroupClickEvent('update')" type="primary" :ripple="false" <a-button @click="viewPageButtonGroupClickEvent('update')" type="primary" :ripple="false"
@ -105,15 +105,17 @@
@click="writeActionData.업로드fileData.splice(index, 1)" /> @click="writeActionData.업로드fileData.splice(index, 1)" />
</div> </div>
</div> </div>
<a-button class="mt-2" icon="upload" @click="$refs.writeInputFile.$refs.input.click()"> <a-button class="ant-btn-popup-default mt-3" color="primary" icon="upload" @click="$refs.writeInputFile.$refs.input.click()">
업로드 업로드
</a-button> </a-button>
<v-file-input ref="writeInputFile" v-model="writeActionData.fileData" multiple outlined <v-file-input ref="writeInputFile" v-model="writeActionData.fileData" multiple outlined
hide-input class="d-none" prepend-icon="mdi-tray-arrow-up"></v-file-input> hide-input class="d-none" prepend-icon="mdi-tray-arrow-up"></v-file-input>
</v-col> </v-col>
<v-col :cols="12" class="text-right"> <v-col :cols="12" class="text-right">
<a-button @click="writePageButtonGroupClickEvent('cancel')" :ripple="false" <a-button @click="writePageButtonGroupClickEvent('cancel')"
class="mr-2">취소</a-button> :ripple="false"
class="ant-btn-popup-default mr-2"
color="primary" >취소</a-button>
<a-button @click="writePageButtonGroupClickEvent('write')" :ripple="false" <a-button @click="writePageButtonGroupClickEvent('write')" :ripple="false"
type="primary">등록</a-button> type="primary">등록</a-button>
</v-col> </v-col>
@ -151,7 +153,7 @@
@click="replyActionData.fileData.splice(index, 1)" /> @click="replyActionData.fileData.splice(index, 1)" />
</div> </div>
</div> </div>
<a-button class="mt-3" icon="upload" @click="$refs.replyInputFile.$refs.input.click()"> <a-button class="ant-btn-popup-default mt-3" color="primary" icon="upload" @click="$refs.replyInputFile.$refs.input.click()">
업로드 업로드
</a-button> </a-button>
<v-file-input ref="replyInputFile" multiple show-size v-model="replyActionData.fileData" <v-file-input ref="replyInputFile" multiple show-size v-model="replyActionData.fileData"
@ -159,7 +161,10 @@
</v-file-input> </v-file-input>
</v-col> </v-col>
<v-col :cols="12" class="text-right"> <v-col :cols="12" class="text-right">
<a-button @click="replyPageButtonGroupClickEvent('cancel')" :ripple="false">취소</a-button> <a-button @click="replyPageButtonGroupClickEvent('cancel')"
class="ant-btn-popup-default mr-2"
color="primary"
:ripple="false">취소</a-button>
<a-button @click="replyPageButtonGroupClickEvent('reply')" :ripple="false" <a-button @click="replyPageButtonGroupClickEvent('reply')" :ripple="false"
type="primary">등록</a-button> type="primary">등록</a-button>
</v-col> </v-col>
@ -212,7 +217,7 @@
@click="addFileToDeleteFileList(fileData)" /> @click="addFileToDeleteFileList(fileData)" />
</div> </div>
</div> </div>
<a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()"> <a-button class="ant-btn-popup-default mt-2" color="primary" icon="upload" @click="$refs.updateInputFile.$refs.input.click()">
업로드 업로드
</a-button> </a-button>
<v-file-input ref="updateInputFile" multiple show-size v-model="updateActionData.fileData" <v-file-input ref="updateInputFile" multiple show-size v-model="updateActionData.fileData"
@ -220,7 +225,10 @@
</v-file-input> </v-file-input>
</v-col> </v-col>
<v-col :cols="12" class="text-right"> <v-col :cols="12" class="text-right">
<a-button @click="updatePageButtonGroupClickEvent('cancel')">취소</a-button> <a-button @click="updatePageButtonGroupClickEvent('cancel')"
class="ant-btn-popup-default mr-2"
color="primary"
>취소</a-button>
<a-button @click="updatePageButtonGroupClickEvent('update')" type="primary">등록</a-button> <a-button @click="updatePageButtonGroupClickEvent('update')" type="primary">등록</a-button>
</v-col> </v-col>
</v-row> </v-row>

View File

@ -1196,7 +1196,8 @@ export default {
show: false, show: false,
}, },
left: "22%", 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 center: ["60%", "50%"], // Shift chart slightly right to make room for legend
itemStyle: { itemStyle: {
borderColor: "#fff", // Color of the gap borderColor: "#fff", // Color of the gap
@ -1272,7 +1273,10 @@ export default {
top: "middle", top: "middle",
type: "scroll", type: "scroll",
orient: "vertical", orient: "vertical",
left: "left", left: "20",
icon: 'rect',
itemWidth: 15, // Width of the legend icon
itemHeight: 15,
textStyle: { textStyle: {
color: this.isDarkMode ? "#fff" : "#333333", color: this.isDarkMode ? "#fff" : "#333333",
}, },

View File

@ -63,7 +63,7 @@
<v-tabs-items v-model="tab" style="height: calc(100% - 65px);" class="pt-6 py-2"> <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"> <v-tab-item v-for="(item, idx) in items" :key="item.id">
<component v-if="item.id == 'readPlcBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId" <component v-if="item.id == 'readPlcBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId"
:detailList="detailList" :bindingData="gridName" :detailList="f" :bindingData="gridName"
@gridEditingFinish="gridEditingFinish" /> @gridEditingFinish="gridEditingFinish" />
<ReadPlcAddInfoTab v-if="item.id == 'readPlcAddInfoTab'" :parentPrgmId="myPrgmId" <ReadPlcAddInfoTab v-if="item.id == 'readPlcAddInfoTab'" :parentPrgmId="myPrgmId"
:innerTabGridInfo="{ tab, idx }" /> :innerTabGridInfo="{ tab, idx }" />

View File

@ -835,7 +835,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-3 pr-4',
required: false, required: false,
placeholder: '시스템 자동입력', placeholder: '시스템 자동입력',
}, },
@ -848,7 +848,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-3 pl-4',
required: true, required: true,
}, },
{ {
@ -860,7 +860,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-3 pr-4 mt-2',
list: 'ercKindList', list: 'ercKindList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
@ -875,7 +875,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-3 pl-4 mt-2',
list: 'readObjList', list: 'readObjList',
itemText: 'readObjNm', itemText: 'readObjNm',
itemValue: 'readObjId', itemValue: 'readObjId',
@ -890,7 +890,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-3 pr-4 mt-2',
list: 'chrgKindList', list: 'chrgKindList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
@ -905,7 +905,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-3 pl-4 mt-2',
}, },
{ {
type: 'InputText', type: 'InputText',
@ -916,7 +916,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-3 pr-4 mt-2',
}, },
{ {
@ -928,7 +928,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-3 pl-4 mt-2',
list: 'blocMstrList', list: 'blocMstrList',
itemText: 'blocNm', itemText: 'blocNm',
itemValue: 'blocId', itemValue: 'blocId',
@ -944,7 +944,7 @@ const myDetail = [
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
// class: 'py-2', // class: 'py-2',
class: 'pb-0 mb-0 pr-4', class: 'pb-0 mb-0 pr-4 mt-2',
disableContent: true, disableContent: true,
}, },
{ {
@ -956,7 +956,7 @@ const myDetail = [
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'pb-0 mb-0 pl-4 mt-2',
}, },
{ {
type: 'InputText', type: 'InputText',
@ -981,7 +981,7 @@ const myDetail = [
disabled: false, disabled: false,
cols: 6, cols: 6,
iconShow: true, iconShow: true,
class: 'py-2 pr-4', class: 'py-3 pr-4 mt-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
}, },
{ {
@ -991,7 +991,7 @@ const myDetail = [
disabled: false, disabled: false,
cols: 6, cols: 6,
iconShow: true, iconShow: true,
class: 'py-2 pl-4', class: 'py-3 pl-4 mt-2',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: true, required: true,
}, },

View File

@ -12,7 +12,7 @@
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<component :is="'EvtObjPop'" :parentPrgmId="myPrgmId" :item="evtObjPopItem" <component :is="'EvtObjPop'" :parentPrgmId="myPrgmId" :item="evtObjPopItem"
customClass="select-large" /> class="no-gutters" customClass="select-large" />
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<!-- 대상일 --> <!-- 대상일 -->
@ -29,17 +29,18 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row ref="contents"> <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"> <v-card class="px-5 py-5">
<div ref="gridParent" class="h100 px-5" style="height: 100%"> <div ref="gridParent" class="px-5" style="height:calc(100% - 40px)">
<component ref="myGrid" :is="loadGrid ? 'Grid' : null" :gridName="gridName" <component ref="myGrid" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" /> :parentPrgmId="myPrgmId" />
</div> </div>
<div class="d-flex align-center justify-space-between"> <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" <pagination id="pagination" :total-count="totalCount" :page-num="page" :limit="limit"
@loadData="changeGrid" /> @loadData="changeGrid" />
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
</v-row> </v-row>
</div> </div>
@ -61,7 +62,7 @@ import BtnExcelDownload from '~/components/common/button/BtnExcelDownload';
import DateUtility from '~/plugins/dateUtility'; import DateUtility from '~/plugins/dateUtility';
// import Search from "~/components/common/search"; // import Search from "~/components/common/search";
import EvtObjPop from '~/components/common/modal/EvtObjPop'; import EvtObjPop from '~/components/common/modal/EvtObjPop';
import pagination from '~/components/Pagination'; import pagination from '~/components/common/Pagination';
let myTitle; let myTitle;
// const myPrgmId = "PRG0052"; // const myPrgmId = "PRG0052";
@ -212,7 +213,7 @@ export default {
}, },
layoutInit() { layoutInit() {
const searchFilterHeight = this.$refs.searchFilter.offsetHeight; const searchFilterHeight = this.$refs.searchFilter.offsetHeight;
this.$refs.contents.style.height = `calc(100% - ${searchFilterHeight}px)`; this.$refs.contents.style.height = `calc(100% - 30px - ${searchFilterHeight}px) `;
}, },
async setFromDt() { async setFromDt() {
this.pageData.fromDt = Utility.setBeforetDate( this.pageData.fromDt = Utility.setBeforetDate(
@ -220,7 +221,6 @@ export default {
this.pageData.toDt, this.pageData.toDt,
'YYYYMMDD', 'YYYYMMDD',
); );
// this.pageData.toDt = Utility.setAftertDate(this.pageData, this.pageData.fromDt, "YYYYMMDD");
}, },
gridInit() { gridInit() {
this.loadGrid = false; this.loadGrid = false;

View File

@ -100,6 +100,10 @@
:gridName="gridName" :gridName="gridName"
/> />
</div> </div>
<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-card>
</v-col> </v-col>
</v-row> </v-row>
@ -117,6 +121,7 @@ import selectCodeList from "@/components/common/select/selectCodeList";
import SelectMttList from "@/components/common/select/SelectMttList"; import SelectMttList from "@/components/common/select/SelectMttList";
import Datepicker from "~/components/common/Datepicker"; import Datepicker from "~/components/common/Datepicker";
import BtnExcelDownload from "~/components/common/button/BtnExcelDownload"; import BtnExcelDownload from "~/components/common/button/BtnExcelDownload";
import pagination from '~/components/common/Pagination';
let myTitle; let myTitle;
// const myPrgmId = "PRG0018"; // const myPrgmId = "PRG0018";
@ -144,27 +149,18 @@ export default {
Datepicker, Datepicker,
Search, Search,
Grid, Grid,
pagination,
}, },
data() { data() {
return { return {
myPrgmId: myPrgmId, myPrgmId: myPrgmId,
gridName: "rowGrid", gridName: "rowGrid",
loadGrid: false, loadGrid: false,
dataPathMock: { itemsPerPage: 10,
rowGrid: { itemsPerPageArray: [10, 20, 30],
column: [ limit: 20,
{ header: "태그", name: "id", headerAlign: "left" }, page: 1,
{ header: "배율", name: "lable", headerAlign: "left" }, totalCount: 0,
{ header: "설비비", name: "type", headerAlign: "left" },
{ header: "설비배분비율", name: "note", headerAlign: "left" },
{ header: "금일데이터", name: "note", headerAlign: "left" },
{ header: "최종마감시각", name: "date", headerAlign: "left" },
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {},
},
},
}; };
}, },
computed: { computed: {
@ -190,7 +186,10 @@ export default {
}, },
watch: { watch: {
chkIsFind(val) { chkIsFind(val) {
if (val) this.search(); if (val) {
this.page = 1;
this.search();
}
}, },
chkBlocId() { chkBlocId() {
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
@ -243,10 +242,6 @@ export default {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
pageOptions: {
useClient: true,
perPage: 13,
},
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,
@ -261,6 +256,8 @@ export default {
await this.getRowGridData(); await this.getRowGridData();
}, },
async getRowGridData() { async getRowGridData() {
this.loadGrid = false;
if ( if (
this.pageData.blocMstrList.length > 0 && this.pageData.blocMstrList.length > 0 &&
this.pageData.commCdList.length > 0 && this.pageData.commCdList.length > 0 &&
@ -274,8 +271,25 @@ export default {
mttCd: this.pageData.commCd, // 검침대상유형 mttCd: this.pageData.commCd, // 검침대상유형
mttTp: this.pageData.readObjId, // 검침대상 mttTp: this.pageData.readObjId, // 검침대상
readDt: this.pageData.fromDt, // 조회기간 readDt: this.pageData.fromDt, // 조회기간
limit: this.limit,
page: this.page,
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
}, },
}); });
const res2 = await this.postApiReturn({
apiKey: 'selectReadResultCloseMngPageTotal',
resKey: 'cdKindPageTotal',
sendParam: {
blocId: this.pageData.blocMstrList[this.pageData.blocId].blocId, // 사업장
mttCd: this.pageData.commCd, // 검침대상유형
mttTp: this.pageData.readObjId, // 검침대상
readDt: this.pageData.fromDt, // 조회기간
},
});
this.totalCount = res2[0].totalcount;
this.setGridData({ this.setGridData({
gridKey: this.gridName, gridKey: this.gridName,
value: res.map((item) => ({ value: res.map((item) => ({
@ -325,6 +339,12 @@ export default {
this.setPageData({ isFind: true }); this.setPageData({ isFind: true });
} }
}, },
changeGrid: async function (pageNum, limit) {
this.page = pageNum;
this.limit = limit;
this.search();
},
}, },
}; };
@ -431,13 +451,4 @@ const myColumns = [
}, },
}, },
]; ];
import { getPathDataExample } from "@/const/const";
const dataPathDataExample = getPathDataExample({
id: "INCHEON.HVAC.EQP_HT_CH001.UT_CH101.CHI_AMP_1A_PV",
lable: "INCHEON 고온 냉동기 101호기 - 호로1",
type: "사용",
note: "-",
date: "2023-01-10 20:02:00",
});
</script> </script>

View File

@ -35,7 +35,7 @@
</v-col> </v-col>
<v-col :cols="6.5" class="text-right d-flex align-end justify-end align-self-end"> <v-col :cols="6.5" class="text-right d-flex align-end justify-end align-self-end">
<!-- 조회버튼 --> <!-- 조회버튼 -->
<a-button icon="file-excel" class="d-inline-flex-1 mr-1" size="large" @click="createExcel()">엑셀</a-button> <a-button type="default" icon="file-excel" class="d-inline-flex-1 mr-1" size="large" @click="createExcel()">엑셀</a-button>
<BtnSearch @click="search" size="large" /> <BtnSearch @click="search" size="large" />
</v-col> </v-col>
</v-row> </v-row>

View File

@ -154,14 +154,15 @@
</v-row> </v-row>
<v-row class="pa-1" style="height: 52%; width: 100%"> <v-row class="pa-1" style="height: 52%; width: 100%">
<v-card class="pa-1" style="height: 100%; width: 100%; overflow: hidden"> <v-card class="pa-1" style="height: 100%; width: 100%; overflow: hidden">
<div style="height: 25%"> <div style="height: 15%">
<v-card-title class="d-flex align-center justify-space-between pa-5"> <v-card-title class="d-flex align-center justify-space-between pl-3">
<span class="tit ft-size_20 ft-weight_600">가이드 알람정보</span> <span class="tit ft-size_20 ft-weight_600">가이드 알람정보</span>
</v-card-title> </v-card-title>
</div> </div>
<div <div
ref="gridParent01" ref="gridParent01"
style="height: 75%; overflow: hidden; margin-top: 15px" class="pl-3 mt-5"
style="height: 75%; overflow: hidden;"
> >
<component <component
:ref="gridName01" :ref="gridName01"
@ -177,12 +178,12 @@
<v-row style="height: 100%"> <v-row style="height: 100%">
<v-col :cols="5" class=""> <v-col :cols="5" class="">
<v-card class="pa-1" style="height: 100%; width: 100%"> <v-card class="pa-1" style="height: 100%; width: 100%">
<div style="height: 25%"> <div style="height: 15%">
<v-card-title class="d-flex align-center justify-space-between pa-5"> <v-card-title class="d-flex align-center justify-space-between pl-3">
<span class="tit ft-size_20 ft-weight_600">설비 상세 정보</span> <span class="tit ft-size_20 ft-weight_600">설비 상세 정보</span>
</v-card-title> </v-card-title>
</div> </div>
<div ref="gridParent02" style="height: 75%"> <div ref="gridParent02" style="height: 75%" class="pl-3 mt-5">
<component <component
:ref="gridName02" :ref="gridName02"
:is="loadGrid02 ? 'Grid' : null" :is="loadGrid02 ? 'Grid' : null"

View File

@ -47,13 +47,14 @@
<v-row ref="contents" style="overflow: auto"> <v-row ref="contents" style="overflow: auto">
<v-col> <v-col>
<div v-for="(value, key, index) in contentData" :key="'key1_' + index"> <div v-for="(value, key, index) in contentData" :key="'key1_' + index">
<v-card-title class="d-flex align-center justify-space-between pa-3"> <v-card style="background: none">
<span class="tit ft-size_20 ft-weight_600">{{ value.eqpmGrpNm }}</span> <v-card-title class="d-flex align-center justify-space-between pa-3">
</v-card-title> <span class="tit ft-size_20 ft-weight_600">{{ value.eqpmGrpNm }}</span>
</v-card-title>
</v-card>
<v-row> <v-row>
<v-col :cols="3" v-for="(item, i) in value.chartData" :key="'key2_' + i"> <v-col :cols="3" v-for="(item, i) in value.chartData" :key="'key2_' + i">
<v-card> <v-card>
<div <div
class="v-box" class="v-box"
style="height: 330px; position: relative" style="height: 330px; position: relative"
@ -125,8 +126,7 @@
</div> </div>
</v-col> </v-col>
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
</v-row> </v-row>
</div> </div>

View File

@ -105,8 +105,7 @@
:gridName="gridName" :gridName="gridName"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
/> />
<div v-if="loadGrid && totalCount > 0" class="pagination-wrapper">
<div class="pagination-wrapper">
<pagination <pagination
id="pagination" id="pagination"
:total-count="totalCount" :total-count="totalCount"
@ -201,7 +200,7 @@ export default {
gridName: "grid01", gridName: "grid01",
enrgUseMainIdxDesc: [], enrgUseMainIdxDesc: [],
itemsPerPageArray: [10, 20, 30], itemsPerPageArray: [10, 20, 50],
limit: 10, limit: 10,
page: 1, page: 1,
totalCount: 0, totalCount: 0,

View File

@ -210,6 +210,8 @@ const INIT_URL_STATE = {
// prgmId: "TMP0013" 검침실적마감관리 ems/ReadResultCloseMngPage // prgmId: "TMP0013" 검침실적마감관리 ems/ReadResultCloseMngPage
selectReadResultCloseMng: selectReadResultCloseMng:
'ems/base/ReadResultCloseMngCtr/selectReadResultCloseMng', // 일일검침정보 'ems/base/ReadResultCloseMngCtr/selectReadResultCloseMng', // 일일검침정보
selectReadResultCloseMngPageTotal:
'ems/base/ReadResultCloseMngCtr/selectReadResultCloseMngPageTotal', // 일일검침정보
saveReadResultCloseMngSP: saveReadResultCloseMngSP:
'ems/base/ReadResultCloseMngCtr/saveReadResultCloseMngSP', // 전월 or 일 마감 'ems/base/ReadResultCloseMngCtr/saveReadResultCloseMngSP', // 전월 or 일 마감
saveReadResultCloseMngSPMM: saveReadResultCloseMngSPMM: