diff --git a/README.md b/README.md
index 0f8ecec..9771f63 100644
--- a/README.md
+++ b/README.md
@@ -28,9 +28,9 @@
## π Backend Repository
-νλ‘μ νΈμ λ°±μλ μ½λμ API μλ²λ μλ λ ν¬μ§ν 리μμ νμΈνμ€ μ μμ΅λλ€:
+β¬οΈ νλ‘μ νΈμ λ°±μλ λ ν¬μ§ν 리λ μλμμ νμΈνμ€ μ μμ΅λλ€ β¬οΈ
-[![Backend Repository](https://img.shields.io/badge/Backend-Repository-orange?style=for-the-badge&logo=github)](https://github.com/saokiritoni/2024-2-OSSProj-Osori-BE-01/tree/main)
+[![Backend Repository](https://img.shields.io/badge/Backend-Repository-orange?style=for-the-badge&logo=github)](https://github.com/CSID-DGU/2024-2-OSSProj-Osori-BE-01)
diff --git a/src/assets/images/trash.svg b/src/assets/images/trash.svg
new file mode 100644
index 0000000..c25798b
--- /dev/null
+++ b/src/assets/images/trash.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/views/akopolio/Edit/akopolioEdit.vue b/src/views/akopolio/Edit/akopolioEdit.vue
index fd3d193..3bbea85 100644
--- a/src/views/akopolio/Edit/akopolioEdit.vue
+++ b/src/views/akopolio/Edit/akopolioEdit.vue
@@ -64,10 +64,29 @@
-
-
-
-
+
+
νλ μ΄λ―Έμ§ μ
λ‘λ
+
μ΅λ 5μ₯κΉμ§ κ°λ₯ν΄μ! {{ images.length }} / 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -78,14 +97,16 @@
max-width: 500px;
margin: 4rem auto;
padding: 20px;
- background-color: #ffe8d1;
+ background-color: #fae8da;
min-height: calc(100vh - 120px); /* ν€λμ νΈν°λ₯Ό κ³ λ €ν νμ΄μ§ λμ΄ μ‘°μ */
+ font-family: 'NanumSquareRound', sans-serif;
}
.header {
text-align: center;
}
+.image-upload-container,
.activity-info,
.category-box,
.experience-container,
@@ -95,6 +116,7 @@
.activity-name-container {
margin-bottom: 20px;
+
}
@@ -104,25 +126,24 @@ textarea {
width: 100%;
padding: 10px;
margin-top: 5px;
- background-color: #fff3e6;
+ background-color: white;
border-radius: 5px;
resize: none;
font-size: 13px;
}
+.image-upload-container,
.star-box,
.pmi-box {
- background-color: #fff3e6;
+ background-color: white;
padding: 20px;
border-radius: 10px;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.activity-info{
- background-color: #fff3e6;
+ background-color: white;
padding: 20px;
border-radius: 10px;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
display: flex;
flex-direction: column;
}
@@ -137,23 +158,22 @@ textarea {
button {
display: inline-block;
margin: 3px;
- padding: 8px;
+ padding: 5px 10px;
border-radius: 40px;
background-color: white;
transition: background-color 0.3s;
+ border: 1px solid #eec092;
}
button.active {
- background-color: #F6B87A;
- color: white;
+ background-color: #f6b87a;
}
/* λΆμΌ μ€μ λ°μ€ */
.category-box {
- background-color: #fff3e6;
+ background-color: white;
padding: 15px;
border-radius: 10px;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.category-label {
@@ -164,53 +184,146 @@ button.active {
.tag-badge {
display: inline-block;
margin-left: 10px;
- background-color: #F6B87A;
- color: white;
+ background-color: #f6b87a;
+ color: black;
padding: 5px 10px;
border-radius: 20px;
font-size: 13px;
}
-/* μ μ₯ λ²νΌ */
+.button-container {
+ display: flex;
+ justify-content: center;
+}
+
.save-button {
- width: 100%;
- padding: 15px;
+ width: 160px;
+ margin-top: 20px;
+ padding-left: 16px;
+ padding-right: 16px;
+ padding-top: 8px;
+ padding-bottom: 8px;
background-color: #F6B87A;
- color: white;
- border: none;
- border-radius: 10px;
- font-size: 16px;
- cursor: pointer;
- ;
+ color: black;
+ font-size: 0.875rem;
+ font-weight: 500;
+ border-radius: 9999px;
+ transition: background-color 0.3s ease;
+ margin-bottom: 20px;
}
.save-button:hover {
- background-color: #f4c08c;
+ background-color: #e5a769;
}
-h3 {
- font-size: 15px;
- color: #FF7F00;
+.experience-container h3,
+.pmi-container h3 {
+ font-size: 15px;
+ color: #ff7f00;
+ margin-bottom: 10px;
margin-top: 10px;
+ white-space: nowrap;
+ padding: 0;
+}
+
+h3{
+ font-size: 15px;
+ color: #ff7f00;
+ margin: 0;
+ white-space: nowrap;
+ padding: 0;
+ font-family: 'NanumSquareRound', sans-serif;
}
h2 {
+ font-size: 16px;
+ color: #ff7f00;
+ margin-bottom: 10px;
+ padding: 0;
+ font-family: 'NanumSquareRound', sans-serif;
+}
+
+.category-box h2{
margin: 0;
- font-size: 15px;
}
+p {
+ margin:0;
+ font-size: 14px;
+ word-break: break-word;
+ padding: 0;
+}
+
+.experience-container p,
+.pmi-container p {
+ margin-bottom: 15px;
+}
+
+
label {
font-size: 15px;
}
-.tooltip {
+.delete-image-btn {
position: absolute;
- background-color: rgba(51, 51, 51, 0.9);
- color: white;
- padding: 8px;
- border-radius: 5px;
- z-index: 1000;
- white-space: nowrap;
+ top: 5px;
+ right: 5px;
+ color: black;
+ border: none;
+ background: none; /* λ°°κ²½μ μ κ±° */
+ font-size: 16px; /* X μμ΄μ½μ΄ λ μ 보μ΄λλ‘ ν¬κΈ° μ‘°μ */
+ cursor: pointer;
+ transition: color 0.3s; /* μμ μ ν μ λλ©μ΄μ
μΆκ° */
+}
+
+
+.delete-image-btn:hover {
+ color: white;
+}
+
+
+.image-preview-container {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+ width: 100%;
}
+
+.image-preview-card {
+ width: 100%;
+ max-width: 312px;
+ position: relative;
+ overflow: hidden;
+}
+
+.image-preview {
+ width: 100%;
+ height: 100%;
+ object-fit: contain; /* μ΄λ―Έμ§κ° 컨ν
μ΄λ λ΄μμ λΉμ¨μ μ μ§νλ©΄μ ν¬κΈ° μ‘°μ */
+}
+
+/* κΈ°λ³Έ input[type="file"] μ¨κΈ°κΈ° */
+input[type="file"] {
+ display: none;
+}
+
+/* 컀μ€ν
λ²νΌ μ€νμΌ */
+.custom-file-upload {
+ background-color: #faf5f0;
+ color: #f3ab62;
+ padding: 10px 128px;
+ font-size: 13px;
+ border-radius: 5px;
+ cursor: pointer;
+ margin-top: 10px;
+ transition: background-color 0.3s ease;
+ margin-bottom: 10px;
+}
+
+.custom-file-upload:hover {
+ background-color: #f5eadf;
+}
+
+
diff --git a/src/views/akopolio/Edit/edit.js b/src/views/akopolio/Edit/edit.js
index 0300e12..308ebb3 100644
--- a/src/views/akopolio/Edit/edit.js
+++ b/src/views/akopolio/Edit/edit.js
@@ -1,6 +1,8 @@
import MainHeader from '../../../components/layout/Header.vue';
import MainFooter from '../../../components/layout/Footer.vue';
-import { ref, computed } from 'vue';
+import { ref, computed, onMounted } from 'vue';
+import { useRoute } from 'vue-router';
+import axios from 'axios';
export default {
components: {
@@ -8,22 +10,38 @@ export default {
MainFooter
},
setup() {
- const activityName = ref('μ΅ν©νλ‘κ·Έλλ°');
- const activityDate = ref('2024-11-01');
- const selectedTags = ref(['μ 곡']);
+ const route = useRoute();
+ const portfolioId = route.params.id;
+ const activityName = ref('');
+ const activityDate = ref('');
+ const selectedTags = ref([]);
const tags = ref([
'μ 곡', 'κ΅μ', 'κ΅λ΄λμ리', 'κ΅μΈλμ리', 'νν', 'λ΄μ¬νλ', 'μΈν΄', 'μλ₯΄λ°μ΄νΈ',
'λμΈνλ', 'μν¬ν°μ¦', 'κΈ°μλ¨', 'κ°μ°/νμ¬', 'μ€ν°λ', 'λΆνΈμΊ ν', 'νλ‘μ νΈ',
- 'μ°κ΅¬', 'νμν', 'κΈ°ν'
+ 'μ°κ΅¬', 'νμν', 'κΈ°ν',
]);
- const star = ref({ situation: 'νλμ μμν μ΄μ λ...', task: 'μ°Έμ¬ν νλμ...', action: 'μ κ° λ§‘μ μν μ...', result: 'κ²°κ³Όλ μ΄λ κ² λμμ΅λλ€.' });
- const pmi = ref({ plus: 'μ€λμ μ’μ μ μ...', minus: 'μμ¬μ λ μ μ...', interesting: 'μ¬λ―Έμμλ μ μ...' });
+ const images = ref([
+ { previewUrl: "https://via.placeholder.com/150" } // μμ μ΄λ―Έμ§
+ ]);
+ const star = ref({
+ situation: '',
+ task: '',
+ action: '',
+ result: '',
+ });
+ const pmi = ref({
+ plus: '',
+ minus: '',
+ interesting: '',
+ });
const isDropdownOpen = ref(false);
+ // λλ‘λ€μ΄ ν κΈ
const toggleDropdown = () => {
isDropdownOpen.value = !isDropdownOpen.value;
};
+ // νκ·Έ μ ν/ν΄μ
const toggleTag = (tag) => {
const index = selectedTags.value.indexOf(tag);
if (index > -1) {
@@ -33,26 +51,158 @@ export default {
}
};
+ // ν
μ€νΈ μμ μλ ν¬κΈ° μ‘°μ
const autoResize = (event) => {
const textarea = event.target;
textarea.style.height = 'auto';
textarea.style.height = `${textarea.scrollHeight}px`;
};
- const saveData = () => {
+ // ν¬νΈν΄λ¦¬μ€ λ°μ΄ν° κ°μ Έμ€κΈ°
+ const fetchPortfolioById = async () => {
+ try {
+ const response = await fetch(
+ `${process.env.VUE_APP_BE_API_URL}/api/portfolios/${portfolioId}`
+ );
+
+ if (!response.ok) {
+ throw new Error(`Failed to fetch portfolio: ${response.statusText}`);
+ }
+
+ const data = await response.json();
+ activityName.value = data.activityName || '';
+ activityDate.value = data.activityDate || '';
+ selectedTags.value = data.selectedTags || [];
+ star.value = data.star || { situation: '', task: '', action: '', result: '' };
+ pmi.value = data.pmi || { plus: '', minus: '', interesting: '' };
+ images.value = data.images || [];
+ } catch (error) {
+ console.error('Error fetching portfolio:', error);
+ alert('ν¬νΈν΄λ¦¬μ€λ₯Ό λΆλ¬μ€λ μ€ μ€λ₯κ° λ°μνμ΅λλ€.');
+ }
+ };
+
+ const handleFileChange = (event) => {
+ const selectedFiles = Array.from(event.target.files);
+ if (images.value.length + selectedFiles.length > 5) {
+ alert('μ΅λ 5κ°μ μ΄λ―Έμ§λ§ μ
λ‘λν μ μμ΅λλ€.');
+ return;
+ }
+
+ const newImagesPromises = selectedFiles.map((file) => {
+ const previewUrl = URL.createObjectURL(file);
+ const imageElement = new Image();
+ imageElement.src = previewUrl;
+
+ return new Promise((resolve) => {
+ imageElement.onload = () => {
+ const aspectRatio = imageElement.width / imageElement.height;
+ let containerWidth, containerHeight;
+
+ if (aspectRatio > 1) {
+ containerWidth = '300px';
+ containerHeight = `${300 / aspectRatio}px`;
+ } else {
+ containerWidth = `${300 * aspectRatio}px`;
+ containerHeight = '300px';
+ }
+
+ resolve({
+ file,
+ name: file.name,
+ size: file.size,
+ previewUrl,
+ containerWidth,
+ containerHeight,
+ });
+ };
+ });
+ });
+
+ Promise.all(newImagesPromises).then((newImages) => {
+ const uniqueNewImages = newImages.filter(
+ (newImage) =>
+ !images.value.some(
+ (existingImage) => existingImage.previewUrl === newImage.previewUrl
+ )
+ );
+
+ if (uniqueNewImages.length === 0) {
+ alert('μ΄λ―Έ μ νλ μ΄λ―Έμ§μ
λλ€.');
+ return;
+ }
+
+ images.value = [...images.value, ...uniqueNewImages];
+ });
+ };
+
+ const removeImage = (index) => {
+ URL.revokeObjectURL(images.value[index].previewUrl);
+ images.value.splice(index, 1);
+ };
+
+ const uploadImages = async () => {
+ const uploadedUrls = [];
+ for (const image of images.value) {
+ try {
+ const { data } = await axios.post(
+ `${process.env.VUE_APP_BE_API_URL}/api/get-presigned-url`,
+ {
+ fileName: image.name,
+ fileType: image.file.type,
+ }
+ );
+
+ await axios.put(data.url, image.file, {
+ headers: { 'Content-Type': image.file.type },
+ });
+
+ const uploadedUrl = data.url.split('?')[0];
+ uploadedUrls.push(uploadedUrl);
+ } catch (error) {
+ console.error('Error uploading image:', error);
+ alert('μ΄λ―Έμ§ μ
λ‘λ μ€ μ€λ₯κ° λ°μνμ΅λλ€.');
+ }
+ }
+ };
+
+
+ // μ μ₯ λ²νΌ ν΄λ¦ μ μλ²μ λ°μ
+ const saveData = async () => {
if (!isFormComplete.value) {
alert('λͺ¨λ νλλ₯Ό μ
λ ₯ν΄μ£ΌμΈμ.');
return;
}
- // μ μ₯ λ‘μ§
- console.log('μ μ₯λ λ°μ΄ν°:', {
- activityName: activityName.value,
- activityDate: activityDate.value,
- selectedTags: selectedTags.value,
- star: star.value,
- pmi: pmi.value
- });
+ try {
+ // μμ λ ν¬νΈν΄λ¦¬μ€ λ°μ΄ν°μ μ΄λ―Έμ§ URLμ μλ²μ μ μ‘
+ const response = await fetch(
+ `${process.env.VUE_APP_BE_API_URL}/api/portfolios/${portfolioId}`,
+ {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ activityName: activityName.value,
+ activityDate: activityDate.value,
+ selectedTags: selectedTags.value,
+ star: star.value,
+ pmi: pmi.value,
+ images: images.value.map(image => image.name), // μλ²μ μ λ¬ν μ΄λ―Έμ§ νμΌ μ΄λ¦λ§ μ λ¬
+ }),
+ }
+ );
+
+ if (!response.ok) {
+ throw new Error(`Failed to save data: ${response.statusText}`);
+ }
+
+ alert('λ°μ΄ν°κ° μ±κ³΅μ μΌλ‘ μ μ₯λμμ΅λλ€.');
+ } catch (error) {
+ console.error('Error saving data:', error);
+ alert('λ°μ΄ν° μ μ₯ μ€ μ€λ₯κ° λ°μνμ΅λλ€.');
+ }
};
const isFormComplete = computed(() => {
@@ -65,6 +215,11 @@ export default {
);
});
+ // μ»΄ν¬λνΈ λ§μ΄νΈ μ λ°μ΄ν° κ°μ Έμ€κΈ°
+ onMounted(() => {
+ fetchPortfolioById();
+ });
+
return {
activityName,
activityDate,
@@ -73,9 +228,13 @@ export default {
isDropdownOpen,
star,
pmi,
+ images,
toggleDropdown,
toggleTag,
autoResize,
+ handleFileChange,
+ removeImage,
+ uploadImages,
saveData,
isFormComplete
};
diff --git a/src/views/akopolio/create/akopolioCreate.vue b/src/views/akopolio/create/akopolioCreate.vue
index 39a1925..29ddaee 100644
--- a/src/views/akopolio/create/akopolioCreate.vue
+++ b/src/views/akopolio/create/akopolioCreate.vue
@@ -109,13 +109,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -126,8 +126,9 @@
max-width: 500px;
margin: 4rem auto;
padding: 20px;
- background-color: #ffe8d1;
+ background-color: #fae8da;
min-height: calc(100vh - 120px); /* ν€λμ νΈν°λ₯Ό κ³ λ €ν νμ΄μ§ λμ΄ μ‘°μ */
+ font-family: 'NanumSquareRound', sans-serif;
}
.header {
@@ -153,7 +154,7 @@ textarea {
width: 100%;
padding: 10px;
margin-top: 5px;
- background-color: #fff3e6;
+ background-color: white;
border-radius: 5px;
resize: none;
font-size: 13px;
@@ -162,17 +163,15 @@ textarea {
.image-upload-container,
.star-box,
.pmi-box {
- background-color: #fff3e6;
+ background-color: white;
padding: 20px;
border-radius: 10px;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.activity-info{
- background-color: #fff3e6;
+ background-color: white;
padding: 20px;
border-radius: 10px;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
display: flex;
flex-direction: column;
}
@@ -187,23 +186,22 @@ textarea {
button {
display: inline-block;
margin: 3px;
- padding: 8px;
+ padding: 5px 10px;
border-radius: 40px;
background-color: white;
transition: background-color 0.3s;
+ border: 1px solid #eec092;
}
button.active {
- background-color: #F6B87A;
- color: white;
+ background-color: #f6b87a;
}
/* λΆμΌ μ€μ λ°μ€ */
.category-box {
- background-color: #fff3e6;
+ background-color: white;
padding: 15px;
border-radius: 10px;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.category-label {
@@ -214,42 +212,55 @@ button.active {
.tag-badge {
display: inline-block;
margin-left: 10px;
- background-color: #F6B87A;
- color: white;
+ background-color: #f6b87a;
+ color: black;
padding: 5px 10px;
border-radius: 20px;
font-size: 13px;
}
+.button-container {
+ display: flex;
+ justify-content: center;
+}
+
.save-button {
- width: 100%;
- padding: 15px;
+ width: 160px;
+ margin-top: 20px;
+ padding-left: 16px;
+ padding-right: 16px;
+ padding-top: 8px;
+ padding-bottom: 8px;
background-color: #F6B87A;
- color: white;
- border: none;
- border-radius: 10px;
- font-size: 16px;
- cursor: pointer;
- ;
+ color: black;
+ font-size: 0.875rem;
+ font-weight: 500;
+ border-radius: 9999px;
+ transition: background-color 0.3s ease;
+ margin-bottom: 20px;
}
.save-button:hover {
- background-color: #f4c08c;
+ background-color: #e5a769;
}
h3 {
font-size: 15px;
color: #FF7F00;
margin-top: 10px;
+ font-family: 'NanumSquareRound', sans-serif;
}
h2 {
margin: 0;
- font-size: 15px;
+ color: #FF7F00;
+ font-size: 16px;
+ font-family: 'NanumSquareRound', sans-serif;
}
label {
font-size: 15px;
+ font-family: 'NanumSquareRound', sans-serif;
}
.image-preview-container {
@@ -289,9 +300,6 @@ label {
color: white;
}
-
-
-
/* κΈ°λ³Έ input[type="file"] μ¨κΈ°κΈ° */
input[type="file"] {
display: none;
@@ -299,18 +307,19 @@ input[type="file"] {
/* 컀μ€ν
λ²νΌ μ€νμΌ */
.custom-file-upload {
- background-color: white; /* λ°°κ²½μ */
- color: #f3ab62; /* κΈμμ */
- padding: 10px 128px; /* λ²νΌ ν¬κΈ° */
- font-size: 13px; /* κΈμ ν¬κΈ° */
+ background-color: #faf5f0;
+ color: #f3ab62;
+ padding: 10px 128px;
+ font-size: 13px;
border-radius: 5px;
cursor: pointer;
+ margin-top: 10px;
+ transition: background-color 0.3s ease;
margin-bottom: 10px;
- transition: background-color 0.3s ease; /* λ§μ°μ€ μ€λ² μ λΆλλ½κ² μμ λ³ν */
}
.custom-file-upload:hover {
- background-color: #f6e3d2; /* λ§μ°μ€λ₯Ό μ¬λ Έμ λ λ°°κ²½μ λ³κ²½ */
+ background-color: #f5eadf;
}
\ No newline at end of file
diff --git a/src/views/akopolio/create/create.js b/src/views/akopolio/create/create.js
index 12f53bf..53b8618 100644
--- a/src/views/akopolio/create/create.js
+++ b/src/views/akopolio/create/create.js
@@ -124,33 +124,33 @@ export default {
for (const image of this.images) {
try {
// 1. ν리μ¬μΈλ URL μμ²
- /*
- const { data } = await axios.post('/api/get-presigned-url', {
- fileName: image.name,
- fileType: image.type
- });
- */
+
+ const { data } = await axios.post(
+ `${process.env.VUE_APP_BE_API_URL}/api/get-presigned-url`,
+ {
+ fileName: image.name,
+ fileType: image.type,
+ }
+ );
// 2. ν리μ¬μΈλ URLμ μ΄μ©ν΄ μ΄λ―Έμ§ μ
λ‘λ
- /*
- await axios.put(data.url, image, {
- headers: { 'Content-Type': image.type }
+
+ await axios.put(data.url, image.file, {
+ headers: { 'Content-Type': image.file.type },
});
- */
+
// 3. μ
λ‘λλ μ΄λ―Έμ§μ URLμ μ μ₯ (ν리μ¬μΈλ URLμμ νμΌ URLμ μΆμΆ)
- /*
+
const uploadedUrl = data.url.split('?')[0];
uploadedUrls.push(uploadedUrl);
- */
-
- console.log('Image ready to upload:', image.name);
+
} catch (error) {
console.error('Error uploading image:', error);
alert('μ΄λ―Έμ§ μ
λ‘λ μ€ μ€λ₯κ° λ°μνμ΅λλ€.');
}
}
-
+
this.uploadedImageUrls = uploadedUrls;
},
@@ -176,22 +176,21 @@ export default {
};
try {
- // μ΄ λΆλΆμμ μ€μ λ°±μλλ‘ λ°μ΄ν°λ₯Ό μ μ‘ν μμ
- // await axios.post('/api/portfolios', newPortfolio);
-
- // νμ¬λ λ°±μλ μ°λ λΆλΆμ μ£Όμ μ²λ¦¬ν΄λμμΌλ―λ‘, μμ λ©μμ§λ§ νμ
- console.log('μ μ₯ν λ°μ΄ν°:', newPortfolio); // μ½μμ λ°μ΄ν° νμΈ
- alert('(ν
μ€νΈ) νλμ΄ μ μ₯λμμ΅λλ€!'); // μμ μλ¦Ό λ©μμ§
+ await axios.post(
+ `${process.env.VUE_APP_BE_API_URL}/api/portfolios`,
+ newPortfolio
+ );
- // μ€μ λ°±μλμ μ°λ μ, μ μ₯ ν 리λλ μ
μ€μ
- // this.$router.push('/akopolio/main');
+ alert('νλμ΄ μ±κ³΅μ μΌλ‘ μ μ₯λμμ΅λλ€!');
- this.resetForm(); // λ°μ΄ν° μ μ₯ ν μ
λ ₯ νΌ μ΄κΈ°ν
+ // μ μ₯ ν νμ΄μ§ μ΄λ (μ: λ©μΈ νμ΄μ§)
+ this.$router.push('/akopolio/main');
} catch (error) {
console.error('Error saving portfolio:', error);
alert('μ μ₯ μ€ μ€λ₯κ° λ°μνμ΅λλ€.');
}
},
+
resetForm() {
this.activityName = '';
this.activityDate = '';
diff --git a/src/views/akopolio/detail/akopolioDetail.vue b/src/views/akopolio/detail/akopolioDetail.vue
index 6993992..e7613fa 100644
--- a/src/views/akopolio/detail/akopolioDetail.vue
+++ b/src/views/akopolio/detail/akopolioDetail.vue
@@ -5,23 +5,26 @@
-
-
νλλͺ
+
+
νλλͺ
{{ portfolio ? portfolio.title : '' }}
-
-
νλμΌ
-
{{ portfolio ? portfolio.createdDate : '' }}
-
-
-
λΆμΌ μ€μ
+
+
νλμΌ
+
{{ portfolio ? portfolio.createdDate : '' }}
+
+
+
λΆμΌ μ€μ
-
+
νλ μ΄λ―Έμ§
-
-
-
+
+
+
+
+
@@ -84,13 +89,14 @@