Compare commits

..

1 Commits

Author SHA1 Message Date
719e7cee69 fix style grid 2025-07-30 17:09:09 +07:00
8 changed files with 263 additions and 50 deletions

View File

@ -134,11 +134,11 @@
}
&-body-container{
border-right: 1px solid;
border-right-color: map-deep-get($config,
#{$theme},
"tui-grid-cell-borderColor"
);
border-right: 0;
// border-right-color: map-deep-get($config,
// #{$theme},
// "tui-grid-cell-borderColor"
// );
width: auto !important;
}
@ -151,24 +151,27 @@
width: $scrollbar-width !important;
height: $scrollbar-width !important;
-webkit-appearance: initial;
background-color: map-deep-get($config,
#{$theme},
"scrollbar-track"
) !important;
// 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},
"scrollbar-track"
) !important;
// 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;
}
@ -195,6 +198,7 @@
&-scrollbar-right-top {
background-color: rgba(0, 0, 0, 0);
border: none;
display: none;
// background-color: map-deep-get(
// $config,
// #{$theme},
@ -221,12 +225,13 @@
width: $scrollbar-width !important;
height: $scrollbar-width !important;
// display: none !important;
border-color: map-deep-get($config, #{$theme}, "scrollbar-track");
background-color: map-deep-get($config, #{$theme}, "scrollbar-track");
border-color: map-deep-get($config, #{$theme}, "cardBackground");
background-color: map-deep-get($config, #{$theme}, "cardBackground");
// border: none !important;
// bottom: -1px;
// right: -2px;
box-sizing: border-box;
// display: none;
}
&-scrollbar-frozen-border,
@ -236,13 +241,9 @@
border-color: transparent !important;
}
// &-body-area {
// overflow: auto !important;
// }
&-body-area,
&-container,
&-layer-state,
&-body-area,
&-summary-area,
&-cell {
background-color: map-deep-get($config,
@ -315,8 +316,8 @@
&-header-area,
&-cell-header {
// font-family: inherit;
// font-style: Semi Bold;
font-weight: 600;
font-style: Semi Bold;
background-color: map-deep-get($config,
#{$theme},
"tui-grid-header-backgroundColor"
@ -333,8 +334,13 @@
}
&-header-area {
background-color: none;
// background-color: none;
border: none;
margin-right: 0 !important;
background-color: map-deep-get($config,
#{$theme},
"tui-grid-cell-backgroundColor"
);
}
&-row-odd,

View File

@ -106,7 +106,7 @@ $config: (
tui-grid-header-backgroundColor: #2a2b2d,
tui-grid-header-color: #FFFFFFD9,
tui-grid-border-horziontal-color: #212224,
tui-grid-border-vertical-color: #212224,
tui-grid-border-vertical-color: #FFFFFF0F,
tui-grid-cell-backgroundColor: #212224,
tui-grid-cell-color: #fff,
tui-grid-cell-insert-color: #13636c,

View File

@ -22,6 +22,7 @@
<span class="custom-title-4">{{ option.modalTitle }}</span>
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
</v-card-title>
<div class="px-6 py-4 pt-0">
<v-row align="center">
<v-col :cols="5">
@ -58,19 +59,27 @@
</v-col>
</v-row>
</v-col>
<v-col :cols="12">
<div style="height: 50vh;">
<div ref="modalGridParent" class="h100 py-4">
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId"
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
</div>
</div>
</v-col>
</v-row>
</div>
<div :style="'height: calc(50vh)'">
<!-- <div style="height: 50vh;">
<div ref="modalGridParent" class="h100 px-6 py-4">
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId"
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
</div>
</div>
</div> -->
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)"
class="mr-2">닫기</a-button>
<a-button v-if="item.closeBtnFg || false" :ripple="false" type="danger" ghost danger

View File

@ -20,6 +20,7 @@
:editorGrid="true"
:innerTabGridInfo="innerTabGridInfo"
@getRowsData="getRowData"
:dataPath="dataPathMock"
/>
</div>
</div>
@ -53,10 +54,22 @@ export default {
},
data() {
return {
loadGrid: false,
loadGrid: true,
gridName: 'rowDetailGrid',
rowKey: null,
edtingFinishFlag: 'Y',
dataPathMock: {
"rowDetailGrid": {
column: [
{ header: '추가 정보', name: 'readObjId', align: 'left' },
{ header: 'Data 구분', name: 'readObjNm', align: 'left' },
{ header: '추가 정보 값', name: 'readObjKind', align: 'left' },
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {}
}
},
};
},
computed: {
@ -431,4 +444,22 @@ export default {
},
},
};
const dataPathDataExample = [
{
readObjId: 'OBJ001',
readObjNm: '서울 본사',
readObjKind: 'TYPE01',
},
{
readObjId: 'OBJ002',
readObjNm: '부산 지사',
readObjKind: 'TYPE02',
},
{
readObjId: 'OBJ003',
readObjNm: '대전 공장',
readObjKind: 'TYPE03',
}
]
</script>

View File

@ -19,6 +19,7 @@
:parentPrgmId="parentPrgmId"
@getRowsData="getRowData"
:innerTabGridInfo="innerTabGridInfo"
:dataPath="dataPathMock"
/>
</div>
<div>
@ -59,11 +60,24 @@ export default {
},
data() {
return {
loadGrid: false,
loadGrid: true,
gridName: 'rowEccIaoGrid',
inputList_emMapDiv: [],
inputList_cmInOut: [],
detailList: myDetail,
dataPathMock: {
"rowEccIaoGrid": {
column: [
{ header: '검침 대상 ID', name: 'readObjId', align: 'left' },
{ header: '검침 대상 명', name: 'readObjNm', align: 'left' },
{ header: '검침 대상 유형', name: 'readObjKind', align: 'left' },
{ header: '그룹', name: 'grpCd', align: 'left' },
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {}
}
},
};
},
computed: {
@ -502,4 +516,12 @@ const myDetail = [
iconShow: true,
},
];
const dataPathDataExample = [
{
readObjId: 'OBJ001',
readObjNm: '서울 본사',
readObjKind: 'TYPE01',
grpCd: 'GRP01',
},
]
</script>

View File

@ -12,8 +12,6 @@
:parentPrgmId="myPrgmId"
:sendParam="{ comId }"
customClass="select-large"
labelCols="12"
textCols="12"
/>
<!-- <component
:is="'selectCodeList'"
@ -81,6 +79,7 @@
@getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
:selectedRowDataWatchFlag="true"
:dataPath="dataPathMock"
/>
</div>
</div>
@ -129,7 +128,7 @@
<template v-else-if="item.id == 'AsgnRoleByUser'">
<v-col :cols="3" class="h100">
<v-card-title
class="pa-0 custom-subtitle-tab"
class="pa-0 custom-title-4"
style="min-height:36px;"
>역할리스트</v-card-title
>
@ -155,7 +154,7 @@
</v-col>
<v-col :cols="8" class="h100">
<div class="d-flex align-center justify-space-between">
<v-card-title class="pa-0 custom-subtitle-tab">
<v-card-title class="pa-0 custom-title-4">
사용자 역할</v-card-title
>
<div>
@ -308,10 +307,40 @@ export default {
},
methods: {
async init() {
await this.gridInit();
this.gridInit();
},
gridInitTest() {
const rowGrid = {
column: [
{ header: '사용자No', name: 'userNo', align: 'center', hidden: true },
{ header: '사용자명', name: 'userNm' },
{ header: '사용자ID', name: 'userLoginId' },
{ header: '사용자비밀번호', name: 'userPswd', hidden: true },
{ header: '사업장', name: 'blocId', hidden: true },
{ header: 'email', name: 'email', hidden: true },
{ header: '등록자NO', name: 'regUserNo', hidden: true },
{ header: '등록일시', name: 'regDttm', hidden: true },
{ header: '수정자NO', name: 'procUserNo', hidden: true },
{ header: '수정일시', name: 'procDttm', hidden: true },
{ header: 'comId', name: 'comId', hidden: true },
{ header: 'deptId', name: 'deptId', hidden: true },
],
data: dataMockExample,
defaultRow: dataMockExample,
option: [],
}
this.dataPathMock = {rowGrid};
this.$nextTick(() => {
this.loadGrid = true;
});
},
// 사용자 리스트 그리드 세팅
gridInit() {
// this.gridInitTest(); return
const gridHeight = this.$refs.gridParent.offsetHeight - 90;
const myOptions = {
@ -1071,4 +1100,67 @@ function sha512(str) {
.update(str)
.digest('hex');
}
</script>
const dataMockExample = [
{
userNo: 1,
userNm: '홍길동',
userLoginId: 'hong123',
userPswd: 'password123',
blocId: 'B001',
email: 'hong@example.com',
regUserNo: 100,
regDttm: '2025-07-01 10:00:00',
procUserNo: 101,
procDttm: '2025-07-15 14:30:00',
comId: 'C001',
deptId: 'D001'
},
{
userNo: 2,
userNm: '김영희',
userLoginId: 'kimyh',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
},
{
userNo: 3,
userNm: '관리자',
userLoginId: 'user',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
},
{
userNo: 4,
userNm: '사용자',
userLoginId: 'admin',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
}
];
</script>

View File

@ -4,27 +4,24 @@
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="end" no-gutters>
<div></div>
<v-col :cols="2.5">
<v-row align="center" no-gutters>
<v-col :cols="2">
<InputText
:parentPrgmId="myPrgmId"
label="배치ID"
valueNm="batchId"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col :cols="2.5">
<v-col :cols="2">
<InputText
:parentPrgmId="myPrgmId"
label="배치명"
valueNm="batchNm"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col :cols="2.5">
<v-col :cols="2">
<component
:is="'selectCodeList'"
:parentPrgmId="myPrgmId"
@ -32,21 +29,20 @@
:dataKey="'execRsltCd'"
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_RSLT', useFg: '1' }"
:addAll="true"
customClass="select-large"
/>
</v-col>
<v-col :cols="2.5">
<v-col :cols="2">
<component
:is="'Datepicker'"
:parentPrgmId="myPrgmId"
:label="'조회기간'"
customClass="datepicker-large"
/>
</v-col>
<div class="text-right d-flex align-end justify-end pl-9" style="gap: 8px">
<v-spacer></v-spacer>
<v-col :cols="4" class="text-right">
<BtnSearch />
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" size="large" />
</div>
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" />
</v-col>
</v-row>
</v-card>
</v-col>
@ -430,4 +426,7 @@ const myDetail = [
class: 'py-2',
},
];
</script>
</script>
<style lang="scss">
@import '@/assets/scss/common.scss';
</style>

View File

@ -64,6 +64,7 @@
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
:dataPath="dataPathMock"
/>
</div>
</div>
@ -136,10 +137,24 @@ export default {
return {
myPrgmId: myPrgmId,
gridName: 'rowGrid',
loadGrid: false,
loadGrid: true,
tab: null,
detailList: myDetail,
initedFlag: false,
dataPathMock : {
'rowGrid': {
column: [
{ header: '추가 정보 그룹', name: 'addGrpId', align: 'left' },
{ header: '추가 정보 ID', name: 'addInfoId', align: 'left' },
{ header: '추가 정보 명', name: 'addInfoNm', align: 'left' },
{ header: 'Data 형식', name: 'addInfoDataKind', align: 'center' },
{ header: '사용여부', name: 'useFg', align: 'center' },
],
data: dataMockExample,
defaultRow: dataMockExample,
option: {},
},
},
};
},
computed: {
@ -627,4 +642,43 @@ const myDetail = [
placeholder: '시스템 자동입력',
},
];
const dataMockExample = [
{
addGrpId: 'GRP001',
addInfoId: 'INFO001',
addInfoNm: '온도 센서',
addInfoDataKind: 'DATA01',
useFg: true,
},
{
addGrpId: 'GRP002',
addInfoId: 'INFO002',
addInfoNm: '압력 센서',
addInfoDataKind: 'DATA02',
useFg: false,
},
{
addGrpId: 'GRP003',
addInfoId: 'INFO003',
addInfoNm: '압력 센서',
addInfoDataKind: 'DATA03',
useFg: false,
},
{
addGrpId: 'GRP004',
addInfoId: 'INFO004',
addInfoNm: '압력 센서',
addInfoDataKind: 'DATA04',
useFg: false,
},
{
addGrpId: 'GRP005',
addInfoId: 'INFO005',
addInfoNm: '압력 센서',
addInfoDataKind: 'DATA05',
useFg: false,
},
];
</script>