Compare commits

..

1 Commits

Author SHA1 Message Date
ecfbeb3afa fixbug 2025-08-08 19:22:33 +09:00
13 changed files with 173 additions and 132 deletions

View File

@ -140,6 +140,7 @@
&.ant-btn-popup-default {
background:map-deep-get($config, #{$theme}, "ant-btn-popup-bg");
color:map-deep-get($config, #{$theme}, "ant-btn-popup-color");
border: 1px solid map-deep-get($config, #{$theme}, "ant-btn-popup-border");
}
&.ant-btn-danger {

View File

@ -181,6 +181,7 @@ $config: (
ant-checkbox-border: #424242,
ant-btn-popup-bg: #212224,
ant-btn-popup-color: #FFFFFFD9,
ant-btn-popup-border: #424242,
),
light: (w-g5: $--color-gray_555,
g5-w: $--color-white,
@ -325,5 +326,6 @@ $config: (
ant-checkbox-border: #D9D9D9,
ant-btn-popup-bg: #FFFFFF,
ant-btn-popup-color: #000000E0,
ant-btn-popup-border: #D9D9D9,
),
);

View File

@ -1,14 +1,12 @@
<template>
<v-row class="search-box" align="center" no-gutters>
<v-col v-if="label" :cols="labelCols">
<v-col v-if="label" :cols="labelCols" >
<label for="" class="search-box-label">
<v-icon v-if="iconShow" small :class="['mr-1', required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
{{ label }}
</label>
</v-col>
<v-col :cols="label ? textCols : ''">
<a-checkbox v-model="chkValue" :disabled="disabledFlag" :readonly="readonly || false"
:required="required || false" @change="modifyValue">
</a-checkbox>
@ -63,6 +61,10 @@ export default {
require: false,
default: true
},
labelClass: {
type: String,
require: false,
},
},
data() {
return {

View File

@ -1,46 +0,0 @@
// Sankey chart options
export function getSankeyChartOption({ isDarkMode = false, data = [], links = [] }) {
const chartOption = {
backgroundColor: '#FFFFFF',
series: [
{
data,
links,
layoutIterations: 0,
type: 'sankey',
left: 25.0,
top: 20.0,
right: 120,
bottom: 50.0,
nodeGap: 10,
nodeAlign: 'left',
lineStyle: {
color: 'source',
curveness: 0.5,
},
// nodeWidth:10,
// triggerEvent: true,
itemStyle: {
//color: '#1f77b4',
//borderColor: '#1f77b4'
},
label: {
color: isDarkMode
? '#FFFFFFD9'
: '#000000E0',
// fontFamily: 'Arial',
fontSize: 14,
},
},
],
tooltip: {
trigger: 'item',
},
};
return chartOption;
}
export default getSankeyChartOption;

View File

@ -75,7 +75,7 @@
<v-card-actions class="pb-4">
<v-spacer></v-spacer>
<!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> -->
<div class="pr-3">
<div class="d-flex" style="gap: 8px">
<a-button @click="close()" class="ant-btn-popup-default">닫기</a-button>
<a-button type="primary" @click="setUpdate()" class="v-btn-add-text">
확인

View File

@ -404,8 +404,8 @@ export default {
rowHeight: 'auto',
};
if (this.isMulti) {
myOptions['rowHeaders'] = [{ type: 'checkbox' }];
myOptions['rowHeight'] = 'auto';
// myOptions['rowHeaders'] = [{ type: 'checkbox' }];
// myOptions['rowHeight'] = 'auto';
}
@ -523,11 +523,12 @@ export default {
this.loadGrid = true;
this.$nextTick(() => {
if (this.isMulti) {
this.getChecked();
}
});
// this.$nextTick(() => {
// if (this.isMulti) {
// this.getChecked();
// }
// });
},
setUpdate() {
if (this.isMulti) {

View File

@ -11,7 +11,7 @@
:btnActionsFnc="btnActions"
/>
</div>
<div ref="gridParent" >
<div ref="gridParent" style="height: calc(100vh - 700px);">
<component
:ref="gridName"
:is="loadGrid ? 'Grid' : null"
@ -21,7 +21,7 @@
:innerTabGridInfo="innerTabGridInfo"
/>
</div>
<div>
<div style="height: 60vh;" class="mt-5">
<component
:is="'Form'"
:bindingData="gridName"
@ -503,3 +503,10 @@ const myDetail = [
},
];
</script>
<style lang="scss" scoped>
::v-deep{
.tui-grid-layer-state{
top: 40px !important;
}
}
</style>

View File

@ -1,7 +1,7 @@
<template>
<div>
<div
class="d-flex justify-space-between"
class="d-flex justify-space-between mb-3 pr-4"
style="height: 45px;"
>
<span class="txt custom-subtitle-tab">검침 대상 추가 정보</span>
@ -102,7 +102,7 @@ export default {
this.gridInit();
},
gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
const gridHeight = this.$refs.gridParent.offsetHeight - 31;
const myOptions = {
columnOptions: {
@ -113,8 +113,8 @@ export default {
header: {
height: 28,
},
rowHeight: 29,
minRowHeight: 29,
rowHeight: 36,
minRowHeight: 36,
selectionUnit: 'row',
editingEvent: 'click',
};
@ -440,3 +440,15 @@ export default {
},
};
</script>
<style lang="scss" scoped >
::v-deep {
.tui-grid-layer-state {
top: 40px !important;
}
.tui-grid-cell-content-editor {
height: 36px !important;
}
}
</style>

View File

@ -432,7 +432,7 @@ const myDetail = [
labelCols: 12,
textCols: 12,
iconShow: true,
class: 'py-2 pr-4',
class: 'py-2 pr-4 mt-2',
value: { '1': true, '0': false },
required: true,
},
@ -445,7 +445,7 @@ const myDetail = [
labelCols: 12,
textCols: 12,
iconShow: true,
class: 'py-2 pl-4',
class: 'py-2 pl-4 mt-2',
},
// {
// type: "InputText",
@ -464,7 +464,7 @@ const myDetail = [
labelCols: 12,
textCols: 12,
iconShow: true,
class: 'py-2 pr-4',
class: 'py-2 pr-4 mt-2',
placeholder: '시스템 자동입력',
},
{
@ -476,7 +476,7 @@ const myDetail = [
labelCols: 12,
textCols: 12,
iconShow: true,
class: 'py-2 pl-4',
class: 'py-2 pl-4 mt-2',
placeholder: '시스템 자동입력',
},
{
@ -488,7 +488,7 @@ const myDetail = [
labelCols: 12,
textCols: 12,
iconShow: true,
class: 'py-2 pr-4',
class: 'py-2 pr-4 mt-2',
placeholder: '시스템 자동입력',
},
{
@ -500,7 +500,7 @@ const myDetail = [
labelCols: 12,
textCols: 12,
iconShow: true,
class: 'py-2 pl-4',
class: 'py-2 pl-4 mt-2',
placeholder: '시스템 자동입력',
},
];

View File

@ -1,5 +1,6 @@
<template>
<div ref="mainDiv" class="l-layout">
<CommonPageTitle/>
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
@ -287,7 +288,7 @@ export default {
header: 'Data 형식',
name: 'addInfoDataKind',
minWidth: 85,
align: 'center',
align: 'left',
formatter({ value }) {
let retVal = '';
const newValue = _this.pageData.addInfoDataKindList.filter(
@ -304,7 +305,7 @@ export default {
header: '사용여부',
name: 'useFg',
minWidth: 85,
align: 'center',
align: 'left',
formatter({ value }) {
let retVal = '';
value = value === true ? '1' : '0';

View File

@ -1,5 +1,6 @@
<template>
<div class="l-layout">
<CommonPageTitle/>
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
@ -12,6 +13,7 @@
dataKey="searchLocKind"
:sendParam="{ commGrpCd: 'EM_LOC_KIND', useFg: '1' }"
:addAll="true"
customClass="select-large"
/>
</v-col>
<v-col :cols="2.5">
@ -22,6 +24,7 @@
dataKey="searchEccKind"
:sendParam="{ commGrpCd: 'EM_ECC_KIND', useFg: '1' }"
:addAll="true"
customClass="select-large"
/>
</v-col>
<!-- 사업장 -->
@ -42,6 +45,7 @@
dataKey="useFg"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:addAll="true"
customClass="select-large"
/>
</v-col>
<v-col :cols="2.5">
@ -52,6 +56,7 @@
:labelCols="12"
:textCols="12"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col class="text-right">
@ -64,6 +69,7 @@
:is="'SelectBlocMstr'"
ref="SelectBlocMstr"
:parentPrgmId="myPrgmId"
customClass="select-large"
/>
</div>
</v-row>
@ -99,7 +105,7 @@
</v-col>
<v-col :cols="7" style="min-height:75vh;">
<v-card class="pb-5">
<v-card-title class="custom-title-4" style="min-height:76px;"
<v-card-title class="custom-title-4" style="min-height:65px;"
>공정 상세
</v-card-title>
<div class="px-5" style="height:calc(100% - 76px)">
@ -471,7 +477,7 @@ export default {
header: '사용 여부',
name: 'useFg',
width: gridWidth * 0.18,
align: 'center',
align: 'left',
formatter({ value }) {
value = value === true ? '1' : '0';
const newValue = _this.pageData.useFgList.filter(
@ -921,7 +927,7 @@ const myDetail = [
cols: 6,
labelCols: 12,
textCols: 12,
class: 'pb-0 mb-0 pr-4',
class: 'pb-0 mb-0 pr-4 mt-2',
disableContent: true,
},
{
@ -932,7 +938,7 @@ const myDetail = [
cols: 6,
labelCols: 12,
textCols: 12,
class: 'py-2 mb-0 pb-0 pl-4',
class: 'py-2 mb-0 pb-0 pl-4 mt-2',
list: 'locKindList',
itemText: 'commCdNm',
itemValue: 'commCd',
@ -944,13 +950,13 @@ const myDetail = [
valueNm: 'upEccNm',
readonly: true,
cols: 6,
class: 'py-2 pr-4',
class: 'py-2 pr-4 mt-2',
},
{
// 공백 처리
type: 'Label',
cols: 6,
class: 'py-2 pl-4',
class: 'py-2 pl-4 mt-2',
disabled: false,
labelCols: 12,
textCols: 12,
@ -964,7 +970,7 @@ const myDetail = [
cols: 6,
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
class: 'py-2 pr-4 mt-2',
list: 'eccKindList',
itemText: 'commCdNm',
itemValue: 'commCd',
@ -979,7 +985,7 @@ const myDetail = [
cols: 6,
labelCols: 12,
textCols: 12,
class: 'py-2 pl-4',
class: 'py-2 pl-4 mt-2',
inputType: 'number',
iconShow: true
// onkeydown : "if(this.value > 100) this.value = 100;if(this.value < 0) this.value = 0;if(this.value == '') this.value = 0;"
@ -992,7 +998,7 @@ const myDetail = [
cols: 6,
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
class: 'py-2 pr-4 mt-2',
list: 'blocIdList',
itemText: 'blocNm',
itemValue: 'blocId',
@ -1006,7 +1012,7 @@ const myDetail = [
cols: 6,
labelCols: 12,
textCols: 12,
class: 'py-2 pl-4',
class: 'py-2 pl-4 mt-2',
value: { '1': true, '0': false },
iconShow: true,
required: true,
@ -1017,7 +1023,7 @@ const myDetail = [
valueNm: 'eccFg',
disabled: false,
cols: 6,
class: 'py-2 pr-4',
class: 'py-2 pr-4 mt-2',
iconShow: true,
value: { '1': true, '0': false },
},

View File

@ -50,7 +50,7 @@
<v-col :cols="5" class="h100">
<v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-5">
<v-card-title class="pa-0 custom-title-4-new"
<v-card-title class="pa-0 custom-title-4"
>검침 대상 정보</v-card-title
>
<Buttons
@ -75,7 +75,7 @@
</v-col>
<v-col :cols="7" class="h100">
<v-card class="pb-5">
<v-card-title class="custom-title-4-new" style="min-height:76px;"
<v-card-title class="custom-title-4-new" style="min-height:65px;"
>검침대상 상세
</v-card-title>
<div class="px-5" style="height:calc(100% - 76px)">
@ -315,7 +315,7 @@ export default {
header: '검침 대상 ID',
name: 'readObjId',
width: 130,
align: 'center',
align: 'left',
},
{
header: '검침 대상 명',
@ -385,7 +385,7 @@ export default {
{
header: '사용여부',
name: 'useFg',
align: 'center',
align: 'left',
width: 100,
formatter({ value }) {
value = value === true ? '1' : '0';
@ -854,6 +854,17 @@ const myDetail = [
},
];
</script>
<style lang="scss">
<style lang="scss" scoped>
@import '@/assets/scss/common.scss';
::v-deep {
.tui-grid-layer-state {
top: 40px !important;
}
.tui-grid-layer-selection,
.tui-grid-cell-content-editor{
height: 36px !important;
}
}
</style>

View File

@ -14,9 +14,9 @@
<!-- 대상일 -->
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'대상일'" :labelCols="3" customClass="datepicker-large" />
</v-col>
<v-col :cols="6" class="text-right">
<!-- 조회버튼 -->
<v-col :cols="4" class="text-right">
<BtnSearch @click="search" size="large" />
<!-- 조회버튼 -->
</v-col>
</v-row>
</v-card>
@ -47,13 +47,8 @@
</v-row>
<div class="px-5" style="height: 80%">
<div ref="chartParent" class="w100 h100">
<component
:ref="chartName"
class="w100 h100"
:is="loadChart ? 'Chart' : null"
:parentPrgmId="myPrgmId"
:chartName="chartName"
/>
<component :ref="chartName" class="w100 h100" :is="loadChart ? 'Chart' : null" :parentPrgmId="myPrgmId"
:chartName="chartName" />
</div>
</div>
</v-card>
@ -73,8 +68,6 @@ import SelectBox from '@/components/common/select/SelectBox';
import DateUtility from '~/plugins/dateUtility';
import Chart from '~/components/common/Chart';
import getSankeyChartOption from "~/components/common/chartoptions/sankeyChart";
let myTitle;
let myPrgmId;
@ -108,8 +101,6 @@ export default {
selectValue01: null,
loadChart: false,
chartName: 'sankeyChart',
sankeyChartData: [],
sankeyChartLinks: []
};
},
computed: {
@ -157,16 +148,6 @@ export default {
});
}
},
isDarkMode(newVal) {
this.setChartOption({
chartKey: this.chartName,
value: getSankeyChartOption({
isDarkMode: newVal,
data: this.sankeyChartData,
links: this.sankeyChartLinks
})
});
},
},
async beforeCreate() {
myPrgmId = this.$route.query.prgmId;
@ -178,6 +159,9 @@ export default {
},
async created() { },
async mounted() {
// this.initTest();
// return;
this.init();
// document.querySelector('.icon_arrow').style.width = document.querySelector('.iconArrowCols').clientWidth-20 + "px";
},
@ -192,8 +176,10 @@ export default {
...mapActions({
getCodeList: 'modules/search/getCodeList',
}),
initTestChart() {
initTest() {
const randomNumber = n => Math.floor(Math.random() * n) + 1;
const makeData = [
{ name: 'A' },
{ name: 'B' },
@ -219,13 +205,45 @@ export default {
]);
}
this.sankeyChartData = makeData;
this.sankeyChartLinks = makeLinks;
const chartOption = getSankeyChartOption({
isDarkMode: this.isDarkMode,
const chartOption = {
backgroundColor: '#FFFFFF',
series: [
{
layoutIterations: 0,
type: 'sankey',
left: 25.0,
top: 20.0,
right: 120,
bottom: 50.0,
// nodeWidth:10,
nodeGap: 10,
nodeAlign: 'left',
data: makeData,
links: makeLinks
});
links: makeLinks,
lineStyle: {
color: 'source',
curveness: 0.5,
},
// triggerEvent: true,
itemStyle: {
//color: '#1f77b4',
//borderColor: '#1f77b4'
},
label: {
color: this.isDarkMode
? 'rgba(250,250,250,0.7)'
: 'rgba(0,0,0,0.7)',
fontFamily: 'Arial',
fontSize: 12,
},
},
],
tooltip: {
trigger: 'item',
},
};
this.setChartOption({ chartKey: this.chartName, value: chartOption });
this.$nextTick(() => {
this.loadChart = true;
@ -236,11 +254,7 @@ export default {
this.setFromDt();
},
async search() {
try{
await this.getChartData();
}catch(err){
this.initTestChart();
}
this.setPageData({
isFind: false,
});
@ -444,13 +458,43 @@ export default {
};
}
this.sankeyChartData = makeData;
this.sankeyChartLinks = makeLinks;
const chartOption = getSankeyChartOption({
isDarkMode: this.isDarkMode,
const chartOption = {
backgroundColor: '#FFFFFF',
series: [
{
layoutIterations: 0,
type: 'sankey',
left: 25.0,
top: 20.0,
right: 120,
bottom: 50.0,
// nodeWidth:10,
nodeGap: 10,
nodeAlign: 'left',
data: makeData,
links: makeLinks
});
links: makeLinks,
lineStyle: {
color: 'source',
curveness: 0.5,
},
// triggerEvent: true,
itemStyle: {
//color: '#1f77b4',
//borderColor: '#1f77b4'
},
label: {
color: this.isDarkMode
? 'rgba(250,250,250,0.7)'
: 'rgba(0,0,0,0.7)',
fontFamily: 'Arial',
fontSize: 12,
},
},
],
tooltip: {
trigger: 'item',
},
};
this.setChartOption({ chartKey: this.chartName, value: chartOption });