update theme header

This commit is contained in:
Nguyen Van Luan/(Nguyen Van Luan)/현장대리인/SK
2025-07-25 12:30:27 +09:00
19 changed files with 607 additions and 1599 deletions

View File

@ -3,13 +3,14 @@
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row algin="center" no-gutters>
<v-row algin="end" no-gutters>
<v-col :cols="3">
<InputText
:parentPrgmId="myPrgmId"
label="역할ID"
valueNm="roleId"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col :cols="3">
@ -18,17 +19,19 @@
label="역할명"
valueNm="roleNm"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col :cols="6" class="text-right">
<!-- <v-btn @click="test = !test">WWW</v-btn> -->
<BtnSearch />
<BtnSearch size="large" />
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
<v-row ref="contents">
<v-row ref="contents" style="height: 100vh;">
<v-col cols="12" lg="2" class="h100">
<v-card>
<v-card-title>

View File

@ -339,7 +339,7 @@ export default {
// 사용자 리스트 그리드 세팅
gridInit() {
this.gridInitTest(); return
// this.gridInitTest(); return
const gridHeight = this.$refs.gridParent.offsetHeight - 90;

View File

@ -1,242 +1,224 @@
<template>
<div class="l-layout">
<!-- 리스트 페이지 시작 -->
<div v-if="pageActionFlag == 'list'" class="h100">
<v-row align="center" no-gutters>
<v-col :cols="12">
<v-card>
<div class="d-flex align-center justify-space-between pa-5">
<v-card-title class="pa-0">공지사항</v-card-title>
<div v-if="pageActionFlag == 'list'" class="h1001">
<v-card class="" >
<div class="pa-5">
<v-row align="center" no-gutters >
<v-col :cols="12" class="d-flex align-center justify-space-between">
<v-card-title class="pa-0 custom-title-4">공지사항</v-card-title>
<div class="d-flex align-center">
<!-- <v-btn @click="listPageButtonGroupClickEvent('view')" :ripple="false" class="mr-1">상세보기</v-btn> -->
<a-button type="primary" size="large" @click="listPageButtonGroupClickEvent('write')" :ripple="false"
icon="edit" class="mr-1">작성</a-button>
<!-- <v-btn @click="listPageButtonGroupClickEvent('delete')" :ripple="false">삭제</v-btn> -->
</div>
</div>
</v-card>
</v-col>
</v-row>
<v-row ref="contents">
<v-col :cols="12">
<v-card class="pa-5">
<div ref="gridParent" class="h100 px-50">
<component :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
ref="noticeMngGrid" @getRowsData="getRowData" :dataPath="dataPathMock" />
</div>
<!-- <div class="h100 W100 px-50" style="min-height:calc(100% - 70px)">
</div> -->
</v-card>
</v-col>
</v-row>
</v-col>
<v-col :cols="12" ref="contents" class="mt-5">
<div ref="gridParent" class="h100 px-50">
<component :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
ref="noticeMngGrid" @getRowsData="getRowData" :dataPath="dataPathMock" />
</div>
</v-col>
</v-row>
</div>
</v-card>
</div>
<!-- 리스트 페이지 -->
<!-- 상세보기 페이지 시작 -->
<div v-if="pageActionFlag == 'view'" class="h100">
<div v-if="pageActionFlag == 'view'" class="h1001">
<v-card>
<v-row class="pa-5">
<v-col :cols="12" class="d-flex align-center justify-space-between ">
<v-card-title class="pa-0 custom-title-4">공지사항</v-card-title>
<div class="d-flex align-center">
<a-button @click="viewPageButtonGroupClickEvent('list')" type="primary" :ripple="false" class="mr-1" icon="unordered-list" >목록</a-button>
<a-button @click="viewPageButtonGroupClickEvent('reply')" type="primary" :ripple="false" class="mr-1" icon="send-outlined" >
<v-icon
small
:class="['mr-2']"
>$icoSend</v-icon>
<a-button @click="viewPageButtonGroupClickEvent('list')" type="primary" :ripple="false" class="mr-1"
icon="unordered-list">목록</a-button>
<a-button @click="viewPageButtonGroupClickEvent('reply')" type="primary" :ripple="false" class="mr-1"
icon="send-outlined">
<v-icon small :class="['mr-2']">$icoSend</v-icon>
답글
</a-button>
<a-button @click="viewPageButtonGroupClickEvent('update')" type="primary" :ripple="false" class="mr-1" icon="edit">수정</a-button>
<a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost icon="delete" >삭제</a-button>
<a-button @click="viewPageButtonGroupClickEvent('update')" type="primary" :ripple="false" class="mr-1"
icon="edit">수정</a-button>
<a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost icon="delete">삭제</a-button>
</div>
</v-col>
<v-col :cols="12" class="custom-title-4-new">
제목
</v-col>
<v-col :cols="12">
<v-text-field v-model="viewActionData.title" class="v-input__custom" hide-details
:readonly="true">
<p class="custom-title-3 mb-2"> 제목 </p>
<v-text-field v-model="viewActionData.title" class="v-input__custom" hide-details :readonly="true">
</v-text-field>
</v-col>
</v-row>
<v-row style="height:calc(100% - 218px);">
<v-col :cols="12" style="height: 100%;">
<v-card class="pa-5" style="overflow-y:auto;">
<viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit"
:initialValue="viewActionData.content" theme="white"
:class="isDarkMode ? 'theme--white' : 'theme--black'" />
</v-card>
<v-col :cols="12" style="min-height:calc(90vh - 218px);" class="pa-5">
<viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit"
:initialValue="viewActionData.content" theme="white"
:class="isDarkMode ? 'theme--white' : 'theme--black'" />
</v-col>
</v-row>
<v-row>
<v-col :cols="12">
<v-card class="pa-5">
<v-row align="center" no-gutters>
<v-col cols="1">
<v-card-subtitle class="pa-0">파일목록</v-card-subtitle>
</v-col>
<v-col :cols="11">
<v-row v-for="fileData in viewActionData.fileData" :key="fileData.apndFileId">
<a @click.prevent="downloadFile(fileData)">
<div class="search-box-label">
{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}
</div>
</a>
</v-row>
</v-col>
</v-row>
</v-card>
<v-col :cols="6">
<p class="custom-title-3 mb-2">파일목록</p>
<div v-for="fileData in viewActionData.fileData"
:key="fileData.apndFileId"
class="file-item">
<a @click.prevent="downloadFile(fileData)">
<div class="d-flex justify-space-between search-box-label">
<v-icon>mdi-paperclip</v-icon>
<span class="file-item-name">{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}</span>
</div>
</a>
</div>
</v-col>
</v-row>
</v-card>
</div>
<!-- 상세보기 페이지 -->
<!-- 작성 페이지 시작 -->
<div v-if="pageActionFlag == 'write'" class="h100">
<v-row align="center" no-gutters>
<v-col :cols="12">
<v-card>
<v-card-title>공지사항</v-card-title>
<v-row class="pa-5">
<v-col :cols="12" class="custom-title-4-new">
제목
</v-col>
<v-col :cols="12">
<v-text-field v-model="writeActionData.title" class="v-input__custom" hide-details outlined>
</v-text-field>
</v-col>
<v-col :cols="12" style="min-height: calc(90vh - 270px);">
<editor ref="tuiEditor" height="100%" initialEditType="wysiwyg" />
</v-col>
<v-col :cols="12" class="custom-title-4-new mt-2">
<div v-if="pageActionFlag == 'write'" class="h1001">
<v-card>
<div class="pa-5">
<v-row class="pa-50">
<v-col :cols="12" class="">
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
</v-col>
<v-col :cols="12" class="custom-title-4-new mt-4">
<p class="custom-title-3 mb-2">제목</p>
<v-text-field v-model="writeActionData.title" class="v-input__custom" hide-details outlined>
</v-text-field>
</v-col>
<v-col :cols="12" style="min-height: calc(90vh - 270px);">
<editor ref="tuiEditor" height="100%" initialEditType="wysiwyg" />
</v-col>
<v-col :cols="12" class="mt-2">
<p class="custom-title-3 mb-2">
파일첨부
</v-col>
<v-col :cols="6">
<!-- background-color="#47535c" -->
<v-file-input multiple show-size v-model="writeActionData.fileData" hide-details="true"
clear-icon="delete" chips label="업로드" flat hide-input outlined>
<!-- append-icon="cancel" -->
</v-file-input>
</v-col>
<v-col :cols="12" class="text-right">
<a-button @click="writePageButtonGroupClickEvent('cancel')" :ripple="false" class="mr-2">취소</a-button>
<a-button @click="writePageButtonGroupClickEvent('write')" :ripple="false" type="primary">등록</a-button>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
</p>
</v-col>
<v-col :cols="6">
<div class="" v-if="writeActionData.fileData">
<div
v-for="(fileData, index) in writeActionData.fileData"
:key="fileData.apndFileId"
class="file-item d-flex justify-space-between">
<div class="file-item-detail">
<v-icon>mdi-paperclip</v-icon>
<span href="#" class="file-item-name">{{ fileData.name }}</span>
</div>
<a-icon type="delete" class="v-icon pointer" @click="writeActionData.fileData.splice(index, 1)" />
</div>
</div>
<a-button class="mt-2" icon="upload" @click="$refs.writeInputFile.$refs.input.click()" >
업로드
</a-button>
<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>
</v-col>
<v-col :cols="12" class="text-right">
<a-button @click="writePageButtonGroupClickEvent('cancel')" :ripple="false" class="mr-2">취소</a-button>
<a-button @click="writePageButtonGroupClickEvent('write')" :ripple="false" type="primary">등록</a-button>
</v-col>
</v-row>
</div>
</v-card>
</div>
<!-- 작성 페이지 -->
<!-- 답글 작성 페이지 시작 -->
<div v-if="pageActionFlag == 'reply'" class="h1001">
<v-card class="pa-5">
<v-row>
<v-col :cols="12" class="card-title-color">
<v-card-title class="pa-0 custom-title-4">공지사항</v-card-title>
<v-row align="center" class="mt-0">
<v-col :cols="12" class="">
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
</v-col>
</v-row>
<v-row align="center" class="mt-5" >
<v-col :cols="12">
<p class="custom-title-4-new">제목</p>
<v-text-field v-model="replyActionData.title" class="v-input__custom" placeholder="제목" outlined hide-details>
<p class="custom-title-3 mb-2">제목</p>
<v-text-field v-model="replyActionData.title" class="v-input__custom" placeholder="제목" outlined
hide-details>
</v-text-field>
</v-col>
<v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-4" >
<v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-2">
<editor ref="tuiReplyEditor" height="100%" initialEditType="wysiwyg" />
</v-col>
<v-col :cols="12" class="custom-title-4-new mt-4" >
파일첨부
</v-col>
<v-col :cols="12" >
<v-file-input
multiple
show-size
v-model="replyActionData.fileData"
hide-details="true">
<v-col :cols="6" class="mt-4">
<p class="custom-title-3 mb-2">
파일첨부
</p>
<div class="" v-if="replyActionData.fileData">
<div
v-for="(fileData, index) in replyActionData.fileData"
:key="fileData.apndFileId"
class="file-item d-flex justify-space-between">
<div class="file-item-detail">
<v-icon>mdi-paperclip</v-icon>
<span href="#" class="file-item-name">{{ fileData.name }}</span>
</div>
<a-icon type="delete" class="v-icon pointer" @click="replyActionData.fileData.splice(index, 1)" />
</div>
</div>
<a-button class="mt-3" icon="upload" @click="$refs.replyInputFile.$refs.input.click()" >
업로드
</a-button>
<v-file-input ref="replyInputFile" multiple show-size v-model="replyActionData.fileData" hide-details="true" class="d-none">
</v-file-input>
</v-col>
<v-col :cols="12" class="text-right">
<a-button @click="replyPageButtonGroupClickEvent('cancel')" :ripple="false">취소</a-button>
<a-button @click="replyPageButtonGroupClickEvent('reply')" :ripple="false" type="primary" >등록</a-button>
<a-button @click="replyPageButtonGroupClickEvent('reply')" :ripple="false" type="primary">등록</a-button>
</v-col>
</v-row>
</v-card>
</div>
<!-- 답글 작성 페이지 -->
<!-- 수정 페이지 시작 -->
<div v-if="pageActionFlag == 'update'" class="h100">
<v-row align="center" no-gutters>
<v-col :cols="12">
<v-card>
<v-card-title>공지사항</v-card-title>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col :cols="12">
<v-card min-height="60" class="pa-5">
<v-text-field v-model="updateActionData.title" class="v-input__custom" placeholder="제목" hide-details>
</v-text-field>
</v-card>
</v-col>
</v-row>
<v-row style="height:calc(100% - 342px)">
<v-col :cols="12">
<editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg"
:initialValue="updateActionData.content" />
</v-col>
</v-row>
<v-row>
<v-col :cols="12">
<v-card class="pa-5">
<v-row align="center" no-gutters>
<v-col cols="1">
<v-card-subtitle class="pa-0">파일첨부</v-card-subtitle>
</v-col>
<v-col :cols="4">
<v-file-input multiple background-color="#47535c" show-size v-model="updateActionData.fileData"
hide-details="true">
<div v-if="pageActionFlag == 'update'" class="h1001">
<v-card>
<div class="pa-5">
<v-row align="center" no-gutters>
<v-col :cols="12">
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
</v-col>
<v-col :cols="12" class="mt-4">
<p class="custom-title-3 mb-2">제목</p>
<v-text-field v-model="updateActionData.title" class="v-input__custom" placeholder="" hide-details outlined>
</v-text-field>
</v-col>
<v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4" >
<editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg"
:initialValue="updateActionData.content" />
</v-col>
<v-col :cols="6">
<p class="pa-0 mb-2 custom-title-4-new-1">파일첨부</p>
<div class="" v-if="updateActionData.fileData">
<div
v-for="(fileData, index) in updateActionData.fileData"
:key="fileData.apndFileId"
class="file-item d-flex justify-space-between">
<div class="file-item-detail">
<v-icon>mdi-paperclip</v-icon>
<span href="#" class="file-item-name">{{ fileData.name }}</span>
</div>
<a-icon type="delete" class="v-icon pointer" @click="updateActionData.fileData.splice(index, 1)" />
</div>
</div>
<a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()" >
업로드
</a-button>
<v-file-input ref="updateInputFile" multiple show-size v-model="updateActionData.fileData"
hide-details="true" class="d-none">
</v-file-input>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col :cols="12">
<v-card class="pa-5">
<v-row align="center">
<v-col :cols="1">
<v-card-subtitle class="pa-0">파일목록</v-card-subtitle>
</v-col>
<v-col :cols="11">
<v-row v-for="fileData in updateActionData.currentFileList" :key="fileData.apndFileId">
<a @click.prevent="downloadFile(fileData)">
<v-col :cols="12">
<div class="search-box-label">
{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}
</div>
</v-col>
</a>
<v-icon class="pl-5" @click="addFileToDeleteFileList(fileData)">
mdi-close
</v-icon>
</v-row>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col :cols="12" class="text-right">
<v-btn @click="updatePageButtonGroupClickEvent('update')" :ripple="false">등록</v-btn>
<v-btn @click="updatePageButtonGroupClickEvent('cancel')" :ripple="false">취소</v-btn>
</v-col>
</v-row>
</v-col>
<v-col :cols="12" class="text-right">
<a-button @click="updatePageButtonGroupClickEvent('cancel')" >취소</a-button>
<a-button @click="updatePageButtonGroupClickEvent('update')" type="primary" >등록</a-button>
</v-col>
</v-row>
</div>
</v-card>
</div>
<!-- 수정 페이지 -->
</div>
@ -363,6 +345,9 @@ export default {
chkOpenTabList: 'chkOpenTabList',
getDomain: 'modules/list/getDomain',
}),
onTest(){
console.log(this.writeActionData.fileData);
},
async init() {
this.initData();
await this.gridInit();
@ -1069,7 +1054,18 @@ const dataPathDataExample = getPathDataExample({
</script>
<style lang="scss" scoped>
.pointer,
.tui-grid-table tr {
cursor: pointer;
}
.file-item {
width: auto;
margin: 2px 0;
padding: 4px;
background-color: #0000000A;
.file-item-name{
color: #1677FF;
}
}
</style>