
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<template>
<div class="card ">
<div class="card-body ">
<h2 class="card-title">직원 검색</h2>
<div class="name-box flex simple">
<div class="img-area column">
<div class="img">
<img :src="previewImg || placeholder" alt="미리보기 이미지" />
<button class="close-btn" @click="removeImage">×</button>
</div>
<div class="info">
<div class="file">
<label for="fileUpload" class="file-label">
<img :src="file" alt="">
<p>업로드</p>
</label>
<input id="fileUpload" type="file" @change="handleFileUpload" accept="image/*" />
</div>
</div>
</div>
<form class="row g-3 needs-validation " :class="{ 'was-validated': formSubmitted }"
@submit.prevent="handleRegister" novalidate >
<div class="col-12 ">
<div class="col-12 border-x">
<label for="youremail" class="form-label "><p>아이디<p class="require"><img :src="require" alt=""></p></p></label>
<input v-model="email" type="text" name="username" class="form-control" required
>
</div>
<div class="col-12 border-x">
<label for="yourPassword" class="form-label"><p>권한<p class="require"><img :src="require" alt=""></p></p></label>
<select class="form-select" >
<option value="선택">선택</option>
<option value=""></option>
<option value=""></option>
</select>
</div>
</div>
<div class="col-12 ">
<div class="col-12 border-x">
<label for="youremail" class="form-label "><p>이름<p class="require"><img :src="require" alt=""></p></p></label>
<input v-model="email" type="text" name="username" class="form-control" required
>
</div>
<div class="col-12 border-x">
<label for="yourPassword" class="form-label"><p>부서<p class="require"><img :src="require" alt=""></p></p></label>
<input v-model="selectedname" type="password" name="password" class="form-control"
required placeholder="주식회사 테이큰 소프트">
<input type="button" class="form-control " value="검색" @click="showPopup = true" />
<BuseoPopup v-if="showPopup" @close="showPopup = false" @select="addApproval"/>
</div>
</div>
<div class="col-12 border-x">
<div class="col-12 border-x">
<label for="youremail" class="form-label"><p>직급<p class="require"><img :src="require" alt=""></p></p></label>
<select class="form-select" >
<option value="선택">선택</option>
<option value=""></option>
<option value=""></option>
</select>
</div>
<div class="col-12 border-x">
<label for="yourPassword" class="form-label">직책</label>
<select class="form-select" >
<option value="선택">선택</option>
<option value=""></option>
<option value=""></option>
</select>
</div>
</div>
</form>
</div>
<form class="row g-3 needs-validation detail" :class="{ 'was-validated': formSubmitted }"
@submit.prevent="handleRegister" novalidate style="margin-bottom: 20px;">
<div class="col-12">
<label for="yourName" class="form-label">연락처</label>
<input v-model="name" type="text" name="name" class="form-control " id="yourName"
placeholder="admin">
</div>
<div class="col-12">
<label for="yourName" class="form-label">생년월일</label>
<input v-model="name" type="date" name="name" class="form-control" id="yourName"
>
</div>
<div class="col-12 border-x">
<label for="yourName" class="form-label"><p>입사일<p class="require"><img :src="require" alt=""></p></p></label>
<input v-model="name" type="date" name="name" class="form-control" id="yourName" required
>
</div>
</form>
<form class="row g-3 needs-validation detail salary" :class="{ 'was-validated': formSubmitted }"
@submit.prevent="handleRegister" novalidate>
<div class=" col-12 border-x"><label>연봉<button type="button" title="추가" @click="addSalary">
<PlusCircleFilled />
</button></label>
<div class="yearsalary approval-container">
<div class="col-12 border-x addapproval" v-for="(salary, index) in salarys" :key="index">
<input type="text" name="name" class="form-control" v-model="salary.salary" style="width: 200px;"
placeholder="년도">
<div>
<input type="text" name="name" class="form-control" v-model="salary.total"
placeholder="금액">
</div>
</div>
</div>
</div>
</form>
<div class="buttons">
<button type="reset" class="btn sm primary">등록</button>
<button type="submit" class="btn sm tertiary">취소</button>
</div>
</div>
</div>
</template>
<script>
import GoogleCalendar from "../../../component/GoogleCalendar.vue"
import { SearchOutlined, PlusCircleFilled } from '@ant-design/icons-vue';
import BuseoPopup from "../../../component/Popup/BuseoPopup.vue";
export default {
data() {
return {
showPopup: false,
selectedname: '',
approvals: [],
salarys: [ {
salary: '',
total: '',
},] ,
previewImg: null,
placeholder: "/client/resources/img/img1.png",
require: "/client/resources/img/require.png",
file: "/client/resources/img/file.png",
photoicon: "/client/resources/img/photo_icon.png",
img1: "/client/resources/img/img.png",
icon1: "/client/resources/img/icon.png",
dateicon: "/client/resources/img/date.png",
startbtn: "/client/resources/img/start.png",
stopbtn: "/client/resources/img/stop.png",
moreicon: "/client/resources/img/more.png",
today: new Date().toLocaleDateString('ko-KR', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
weekday: 'short',
}),
time: this.getCurrentTime(),
listData: Array.from({ length: 20 }, (_, i) => ({
department: `부서 ${i + 1}`,
name: `이름 ${i + 1}`,
position: `직급 ${i + 1}`
}))
}
},
components: {
SearchOutlined, PlusCircleFilled, BuseoPopup
},
methods: {
addApproval(selectedUser) {
this.approvals.push({
name: selectedUser.name
});
this.selectedname = selectedUser.name; // 입력창에 표시
this.showPopup = false;
},
addSalary() {
this.salarys.push({
salary: '',
total: '',
});
},
handleFileUpload(event) {
const file = event.target.files[0];
if (file && file.type.startsWith('image/')) {
const reader = new FileReader();
reader.onload = (e) => {
this.previewImg = e.target.result; // 파일 읽기 완료 후 미리보기 이미지 설정
};
reader.readAsDataURL(file); // 파일을 데이터 URL로 읽기
} else {
alert('이미지 파일만 선택할 수 있습니다.');
}
},
// 이미지 삭제 함수
removeImage() {
this.previewImg = null; // 미리보기 이미지 삭제
this.$refs.fileUpload.value = null; // 파일 input 초기화
},
formatBudget(amount) {
return new Intl.NumberFormat().format(amount) + ' 원';
},
isPastPeriod(period) {
// 예: '2025-05-01 ~ 2025-05-03' → 종료일 추출
const endDateStr = period.split('~')[1]?.trim();
if (!endDateStr) return false;
const endDate = new Date(endDateStr);
const today = new Date();
// 현재 날짜보다 과거면 true
return endDate < today;
},
getStatusClass(status) {
return status === 'active' ? 'status-active' : 'status-inactive';
},
getStatusClass(status) {
if (status === '미진행') return 'status-pending';
if (status === '진행중') return 'status-approved';
// Default empty string
return '';
},
getCurrentTime() {
const now = new Date();
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
return `${hours}:${minutes}:${seconds}`;
},
getCategoryClass(category) {
switch (category) {
case '용역': return 'category-service';
case '내부': return 'category-internal';
case '국가과제': return 'category-government';
default: return '';
}
},
},
watch: {
},
computed: {
},
mounted() {
console.log('main mounted');
setInterval(() => {
this.time = this.getCurrentTime();
}, 1000);
}
}
</script>
<style scoped>
tr {
cursor: pointer;
}
</style>