Compare commits

...

9 Commits

18 changed files with 150 additions and 86 deletions

View File

@ -241,9 +241,16 @@ input[type="checkbox"] {
.v-application.#{$theme}-mode { .v-application.#{$theme}-mode {
.ant-checkbox-wrapper { .ant-checkbox-wrapper {
.ant-checkbox {
.ant-checkbox-inner {
background-color: map-deep-get($config, #{$theme}, "ant-checkbox-bg"); // background for unchecked checkbox
border-color: map-deep-get($config, #{$theme}, "ant-checkbox-border");
}
}
.ant-checkbox-checked { .ant-checkbox-checked {
.ant-checkbox-inner { .ant-checkbox-inner {
background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); // background for checked checkbox
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");

View File

@ -19,6 +19,13 @@
border-color: currentColor; border-color: currentColor;
// border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color"); // border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
&:hover {
border-color: map-deep-get($config, #{$theme}, "v-input-fieldset-hover-color" ) !important;
}
&:has(.v-input--is-focused){
border-width: 2px;
}
&.datepicker-large { &.datepicker-large {
height: 40px; height: 40px;
} }

View File

@ -111,10 +111,10 @@ $config: (
tui-grid-border-vertical-color: #FFFFFF0F, tui-grid-border-vertical-color: #FFFFFF0F,
tui-grid-cell-backgroundColor: #212224, tui-grid-cell-backgroundColor: #212224,
tui-grid-cell-color: #FFFFFFD9, tui-grid-cell-color: #FFFFFFD9,
tui-grid-cell-insert-color: #13636c, tui-grid-cell-insert-color: #2B2111,
tui-grid-cell-selected-color: #0A224F, tui-grid-cell-selected-color: #0A224F,
tui-grid-cell-modify-color: #13636c, tui-grid-cell-modify-color: #13636c,
tui-grid-cell-removed-color: #f6637b, tui-grid-cell-removed-color: #2A1215,
tui-grid-cell-disabled-color: rgb(170, 170, 170), tui-grid-cell-disabled-color: rgb(170, 170, 170),
tui-grid-cell-hover-backgroundColor: #2d4571, tui-grid-cell-hover-backgroundColor: #2d4571,
v-tabs-items-border-color: #FFFFFF0F, v-tabs-items-border-color: #FFFFFF0F,
@ -177,6 +177,8 @@ $config: (
v-header-border: #424242, v-header-border: #424242,
v-chart-border: #424242, v-chart-border: #424242,
v-sidebar-border: #303030, v-sidebar-border: #303030,
ant-checkbox-bg: #212224,
ant-checkbox-border: #424242,
), ),
light: (w-g5: $--color-gray_555, light: (w-g5: $--color-gray_555,
g5-w: $--color-white, g5-w: $--color-white,
@ -317,5 +319,7 @@ $config: (
v-header-border: #D9D9D9, v-header-border: #D9D9D9,
v-chart-border: #D9D9D9, v-chart-border: #D9D9D9,
v-sidebar-border: #F0F0F0, v-sidebar-border: #F0F0F0,
ant-checkbox-bg: #FFFFFF,
ant-checkbox-border: #D9D9D9,
), ),
); );

View File

@ -426,7 +426,7 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/assets/scss/datepicker.scss"; // @import "@/assets/scss/datepicker.scss";
::v-deep { ::v-deep {
.tui-timepicker-row { .tui-timepicker-row {

View File

@ -9,7 +9,6 @@
@dblclick="dblClick" @dblclick="dblClick"
@mouseover="mouseoverEvent" @mouseover="mouseoverEvent"
@mouseout="mouseoutEvent" @mouseout="mouseoutEvent"
@mousedown="onMousedown"
@focusChange="focusChangeEvt" @focusChange="focusChangeEvt"
/> />
</template> </template>
@ -268,15 +267,7 @@ export default {
} }
}); });
}, },
onMousedown(evt) {
this.handleSelectedRow(evt);
},
focusChangeEvt(e) { focusChangeEvt(e) {
if(e.rowKey === 0) {
this.handleSelectedRow(e);
}
},
handleSelectedRow(e) {
// console.log('focusChangeEvt1...') // console.log('focusChangeEvt1...')
if (this.preventFocusChangeEvent(e)) { if (this.preventFocusChangeEvent(e)) {
// console.log('prevent focusChangeEvt') // console.log('prevent focusChangeEvt')

View File

@ -12,15 +12,26 @@
</label> </label>
</v-col> </v-col>
<v-col :cols="item.label ? 7 : ''" > <v-col :cols="item.label ? 7 : ''" >
<v-checkbox <!-- <v-checkbox
v-model="chkValue" v-model="chkValue"
:disabled="disabledFlag" :disabled="disabledFlag"
:readonly="item.readonly || false" :readonly="item.readonly || false"
:required="item.required || false" :required="item.required || false"
:false-value="false" :false-value="false"
:color="isDarkMode ? '#fff' : '#1890ff'" :color="isDarkMode ? '#1668DC' : '#1890ff'"
@change="modifyValue" @change="modifyValue"
></v-checkbox> class="small-checkbox"
></v-checkbox> -->
<a-checkbox
v-model="chkValue"
:disabled="disabledFlag"
:readonly="item.readonly || false"
:required="item.required || false"
:false-value="false"
:color="isDarkMode ? '#1668DC' : '#1890ff'"
@change="modifyValue"
>
</a-checkbox>
</v-col> </v-col>
</v-row> </v-row>
</template> </template>
@ -141,7 +152,7 @@ export default {
modifyValue(e) { modifyValue(e) {
const dt = { const dt = {
columnName: this.item.valueNm, columnName: this.item.valueNm,
value: e, value: e.target.checked,
}; };
this.$emit('gridEditingFinish', dt); this.$emit('gridEditingFinish', dt);
}, },

View File

@ -10,7 +10,10 @@
<v-col :cols="textCols"> <v-col :cols="textCols">
<v-text-field readonly v-model="selectValue" append-icon="" :class="['v-input__custom', customClass]" <v-text-field readonly v-model="selectValue" append-icon="" :class="['v-input__custom', customClass]"
@click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true" :required="required || false" @click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true" :required="required || false"
:disabled="disabled || false"><template v-slot:append> :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>

View File

@ -190,7 +190,7 @@ export default {
// } // }
// } // }
}, },
{ header: '비고', name: 'rmrk', align: 'center' }, { header: '비고', name: 'rmrk', align: 'left' },
]; ];
this.setGridColumn({ this.setGridColumn({

View File

@ -1,7 +1,9 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center my-5" > <div class="d-flex justify-space-between align-center mb-5" >
<span class="txt custom-subtitle-tab">설비 추가 정보</span> <v-card-title class="txt custom-title-4 pa-0">
설비 추가 정보
</v-card-title>
<Buttons <Buttons
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:bindingData="gridName" :bindingData="gridName"
@ -268,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(

View File

@ -1,7 +1,10 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center my-5" > <div class="d-flex justify-space-between align-center mb-5" >
<span class="txt custom-subtitle-tab">설비 상수 정보</span> <!-- <span class="txt custom-subtitle-tab">설비 상수 정보</span> -->
<v-card-title class="txt custom-title-4 pa-0">
설비 상수 정보
</v-card-title>
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" /> <Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
</div> </div>
<div ref="gridParent" style="min-height: calc(100vh - 800px);"> <div ref="gridParent" style="min-height: calc(100vh - 800px);">
@ -386,7 +389,7 @@ const myEqpmConstDetail = [
required: true, required: true,
openMode: 'CONST', openMode: 'CONST',
cols: 6, cols: 6,
class: 'py-3 pl-4', class: 'pt-3 pb-1 pl-4',
eqpmGrpDisableFlag: true, eqpmGrpDisableFlag: true,
// eqpmGrpId:'', // eqpmGrpId:'',
labelCols: 12, labelCols: 12,
@ -406,7 +409,7 @@ const myEqpmConstDetail = [
disabled: true, disabled: true,
readonly: true, readonly: true,
cols: 6, cols: 6,
class: 'py-3 pt-1 pl-4', class: 'pb-3 pt-0 pl-4',
align: 'right', align: 'right',
// class: 'py-2 d-none', // class: 'py-2 d-none',
labelCols: 12, labelCols: 12,

View File

@ -1,7 +1,10 @@
<template> <template>
<div> <div>
<div class="d-flex justify-space-between align-center my-5" > <div class="d-flex justify-space-between align-center mb-5" >
<span class="txt custom-subtitle-tab">설비 입출력 정보</span> <!-- <span class="txt custom-subtitle-tab">설비 입출력 정보</span> -->
<v-card-title class="txt custom-title-4 pa-0">
설비 입출력 정보
</v-card-title>
<Buttons <Buttons
:parentPrgmId="parentPrgmId" :parentPrgmId="parentPrgmId"
:bindingData="gridName" :bindingData="gridName"
@ -226,6 +229,7 @@ export default {
return retVal; return retVal;
}, },
minWidth: 150,
}, },
{ {
header: '대상 유형', header: '대상 유형',
@ -242,9 +246,10 @@ export default {
return retVal; return retVal;
}, },
minWidth: 150,
}, },
{ header: '물리량', name: 'pysclQtyId', align: 'left', hidden: true }, { header: '물리량', name: 'pysclQtyId', align: 'left', hidden: true },
{ header: '물리량', name: 'pysclQtyNm', align: 'left' }, { header: '물리량', name: 'pysclQtyNm', align: 'left', minWidth: 150, },
{ {
header: '물리량값', header: '물리량값',
name: 'pysclQtyVal', name: 'pysclQtyVal',
@ -269,6 +274,7 @@ export default {
); );
return newValue[0].commCdNm; return newValue[0].commCdNm;
}, },
minWidth: 100,
}, },
{ header: '분배율', name: 'distRt', align: 'right' }, { header: '분배율', name: 'distRt', align: 'right' },
{ header: '등록 사용자', name: 'regUserNo', hidden: true }, { header: '등록 사용자', name: 'regUserNo', hidden: true },

View File

@ -32,15 +32,18 @@
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<v-col cols="12" lg="9"> <v-col cols="12" lg="9" class="pl-0">
<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 align="center" no-gutters :style="{ height: 'calc(100% - 62px)' }" class="px-5"> <v-row align="center" no-gutters :style="{ height: 'calc(100% - 62px)' }" class="px-5">
<v-col class="h100" style="max-width: 400px;"> <v-col class="h100" style="max-width: 400px;">
<span class="body-1 font-weight-bold d-flex align-center" <v-card-title class="pl-0 pb-3">
:style="{ minHeight: '36px' }">[미배정]메뉴리스트</span> <span class="custom-title-4">[미배정]메뉴리스트</span>
</v-card-title>
<!-- <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"
@ -55,15 +58,18 @@
<ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3" <ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3"
:btnActionsFnc="dualGridBtnActions" /> :btnActionsFnc="dualGridBtnActions" />
</v-col> --> </v-col> -->
<div class="pr-2"> <div class="pr-2 arrow-button">
<ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3" <ActionButtons :parentPrgmId="myPrgmId" :leftGridName="gridName2" :rightGridName="gridName3"
:btnActionsFnc="dualGridBtnActions"/> :btnActionsFnc="dualGridBtnActions"/>
</div> </div>
<v-col :cols="7" class="h100"> <v-col :cols="7" class="h100">
<v-row justify="space-between" align="center" no-gutters class="px-5"> <v-row justify="space-between" align="center" no-gutters class="px-5 pl-0">
<v-col :cols="11"> <v-col :cols="11">
<span class="body-1 font-weight-bold d-flex align-center" <v-card-title class="pl-0 pb-3">
:style="{ minHeight: '36px' }">[배정]메뉴별권한 리스트</span> <span class="custom-title-4">[배정]메뉴별권한 리스트</span>
</v-card-title>
<!-- <span class="body-1 font-weight-bold d-flex align-center"
:style="{ minHeight: '36px' }">[배정]메뉴별권한 리스트</span> -->
<!-- <span class="body-1 font-weight-bold">[배정]메뉴별권한 리스트</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">
@ -805,4 +811,23 @@ function numberFormatter({ value }) {
return value; return value;
} }
} }
</script> </script>
<style lang="scss" scoped>
::v-deep {
.arrow-button button {
display: flex;
justify-content: center;
align-items: center;
width: 24px;
height: 24px;
}
.arrow-button svg {
width: 14px;
height: 14px;
}
}
</style>

View File

@ -46,19 +46,21 @@
icon="delete">삭제</a-button> icon="delete">삭제</a-button>
</div> </div>
</v-col> </v-col>
<v-col :cols="12" class="mt-5"> <v-col :cols="12" class="mt-5 pb-4">
<v-card-title class="custom-title-6 pa-0">{{ viewActionData.title }}</v-card-title> <v-card-title class="custom-title-6 pa-0">{{ viewActionData.title }}</v-card-title>
</v-col> </v-col>
<v-col :cols="12" style="min-height: 30vh;" class="pa-0"> <v-col :cols="12" style="min-height: 30vh;" class="pa-0 custom-view">
<v-card class="pa-3" style="overflow-y:auto;">
<viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit" <viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit"
:initialValue="viewActionData.content" theme="white" :initialValue="viewActionData.content" theme="white"
:class="[isDarkMode ? 'theme--white' : 'theme--black', 'custom-view pa-3']" /> :class="[isDarkMode ? 'theme--white' : 'theme--black']" />
</v-card>
</v-col> </v-col>
<v-col :cols="6" class="mt-5"> <v-col :cols="6" class="mt-5">
<v-card-title class="custom-title-7 pa-0"> <v-card-title class="custom-title-7 pa-0">
파일목록 파일목록
</v-card-title> </v-card-title>
<div v-for="fileData in viewActionData.fileData" :key="fileData.apndFileId" class="file-item"> <div v-for="fileData in viewActionData.fileData" :key="fileData.apndFileId" class="file-item" style="background-color: unset;">
<a @click.prevent="downloadFile(fileData)"> <a @click.prevent="downloadFile(fileData)">
<div class="d-flex justify-start search-box-label"> <div class="d-flex justify-start search-box-label">
<v-icon>mdi-paperclip</v-icon> <v-icon>mdi-paperclip</v-icon>
@ -187,13 +189,26 @@
<div v-for="(fileData, index) in updateActionData.fileData" :key="fileData.apndFileId" <div v-for="(fileData, index) in updateActionData.fileData" :key="fileData.apndFileId"
class="file-item d-flex justify-space-between"> class="file-item d-flex justify-space-between">
<div class="file-item-detail"> <div class="file-item-detail">
<v-icon>mdi-paperclip</v-icon> <v-icon style="font-size: 18px;">mdi-paperclip</v-icon>
<span href="#" class="file-item-name">{{ fileData.name }}</span> <span href="#" class="file-item-name">{{ fileData.name }}</span>
</div> </div>
<a-icon type="delete" class="v-icon pointer" <a-icon type="delete" class="v-icon pointer"
@click="updateActionData.fileData.splice(index, 1)" /> @click="updateActionData.fileData.splice(index, 1)" />
</div> </div>
</div> </div>
<div class="" v-if="updateActionData.currentFileList">
<div v-for="(fileData, index) in updateActionData.currentFileList"
:key="fileData.apndFileId" class="file-item d-flex justify-space-between">
<div class="file-item-detail">
<v-icon style="font-size: 18px;">mdi-paperclip</v-icon>
<span @click.prevent="downloadFile(fileData)" href="#"
class="file-item-name pointer">{{ fileData.apndFileNm + '.' +
fileData.apndFileExt }}</span>
</div>
<a-icon type="delete" class="v-icon pointer"
@click="addFileToDeleteFileList(fileData)" />
</div>
</div>
<a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()"> <a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()">
업로드 업로드
</a-button> </a-button>
@ -1044,7 +1059,7 @@ const defaultData = {
.custom-view { .custom-view {
border: 1px solid; border: 1px solid;
border-radius: 6px; border-radius: 6px;
height: 100%; height: 0;
@each $theme in dark, light { @each $theme in dark, light {
@include theme($theme); @include theme($theme);
@ -1065,5 +1080,10 @@ const defaultData = {
.toastui-editor-mode-switch .tab-item { .toastui-editor-mode-switch .tab-item {
color: #000000E0 color: #000000E0
} }
.v-icon.anticon-delete svg {
width: 14px;
height: 14px;
}
} }
</style> </style>

View File

@ -103,21 +103,6 @@ export default {
gridName: 'rowGrid', gridName: 'rowGrid',
// rowGridOrigin: [], // rowGridOrigin: [],
detailList: myDetail, detailList: myDetail,
dataPathMock: {
'rowGrid': {
column: [
{ header: '프로그램ID', name: 'field1', align: 'left' },
{ header: '프로그램덤', name: 'field2', align: 'left' },
{ header: '타임', name: 'field3', align: 'left' },
{ header: '사용여부', name: 'field4', align: 'left' }
],
option: {
scrollY: false,
scrollX: false,
}
}
},
}; };
}, },
computed: { computed: {
@ -189,17 +174,17 @@ export default {
const gridHeight = this.$refs.gridParent.offsetHeight - 36; const gridHeight = this.$refs.gridParent.offsetHeight - 36;
const myOptions = { const myOptions = {
scrollX: false, scrollY: true,
}; };
// console.log("this.pageData", this.pageData) // console.log("this.pageData", this.pageData)
const _this = this; const _this = this;
const myColumns = [ const myColumns = [
{ header: '프로그램ID', name: 'prgmId', align: 'center' }, { header: '프로그램ID', name: 'prgmId', align: 'left' },
{ header: '프로그램명', name: 'prgmNm' }, { header: '프로그램명', name: 'prgmNm', align: 'left' },
{ {
header: '타입', header: '타입',
name: 'prgmTpCd', name: 'prgmTpCd',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
return value ? (value === '1' ? '프로그램' : '팝업') : null; return value ? (value === '1' ? '프로그램' : '팝업') : null;
}, },
@ -207,7 +192,7 @@ export default {
{ {
header: '사용여부', header: '사용여부',
name: 'useFg', name: 'useFg',
align: 'center', align: 'left',
formatter({ value }) { formatter({ value }) {
value = value === true ? '1' : '0'; value = value === true ? '1' : '0';
const newValue = _this.pageData.selectUseFgList.filter( const newValue = _this.pageData.selectUseFgList.filter(

View File

@ -840,7 +840,7 @@ export default {
{ header: "주의", name: "careStndVal", align: "right", width: 40 }, { header: "주의", name: "careStndVal", align: "right", width: 40 },
{ header: "경고", name: "warnStndVal", align: "right", width: 40 }, { header: "경고", name: "warnStndVal", align: "right", width: 40 },
{ header: "가이드", name: "totVal", align: "right", width: 40 }, { header: "가이드", name: "totVal", align: "right", width: 40 },
{ header: "알람 내용", name: "alrmMsg", align: "left" }, { header: "알람 내용", name: "alrmMsg", align: "left", resizable: false },
{ header: "설비종류", name: "eqpmKindId", align: "left", hidden: true }, { header: "설비종류", name: "eqpmKindId", align: "left", hidden: true },
{ header: "설비종류", name: "eqpmKindNm", align: "left", hidden: true }, { header: "설비종류", name: "eqpmKindNm", align: "left", hidden: true },
]; ];

View File

@ -365,7 +365,7 @@ export default {
header: '사업장', header: '사업장',
name: 'blocId', name: 'blocId',
width: 100, width: 100,
align: 'center', align: 'left',
hidden: true, hidden: true,
formatter({ value }) { formatter({ value }) {
let retVal = ''; let retVal = '';

View File

@ -289,8 +289,8 @@ const Utility = () => {
header: { header: {
height: 28, height: 28,
}, },
rowHeight: 29, rowHeight: 37,
minRowHeight: 29, minRowHeight: 37,
columnOptions: { columnOptions: {
resizable: true, resizable: true,
minWidth: 100, minWidth: 100,