Skip to content

Commit 23ec9d7

Browse files
authored
Merge pull request #176 from TaskFlow-CLAP/CLAP-400
Clap-400 수정요구 Moya
2 parents c581303 + 4682bc0 commit 23ec9d7

File tree

16 files changed

+66
-49
lines changed

16 files changed

+66
-49
lines changed

src/components/common/EditInformation.vue

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,16 @@
126126
</template>
127127

128128
<script lang="ts" setup>
129+
import { patchEditInfo } from '@/api/common'
130+
import { ALLOWED_FILE_EXTENSIONS } from '@/constants/common'
129131
import { useMemberStore } from '@/stores/member'
130132
import { storeToRefs } from 'pinia'
131133
import { nextTick, ref, watchEffect } from 'vue'
132134
import { useRouter } from 'vue-router'
133-
import ModalView from './ModalView.vue'
134-
import { patchEditInfo } from '@/api/common'
135135
import FormButtonContainer from './FormButtonContainer.vue'
136136
import FormCheckbox from './FormCheckbox.vue'
137137
import ImageContainer from './ImageContainer.vue'
138+
import ModalView from './ModalView.vue'
138139
const router = useRouter()
139140
140141
const memberStore = useMemberStore()
@@ -222,26 +223,16 @@ const handleFileUpload = (event: Event) => {
222223
if (target.files && target.files[0]) {
223224
const file = target.files[0]
224225
225-
const allowedMimeTypes = [
226-
'image/jpeg',
227-
'image/pjpeg',
228-
'image/png',
229-
'image/gif',
230-
'image/bmp',
231-
'image/x-windows-bmp'
232-
]
233-
const allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp']
234-
235226
const fileName = file.name.toLowerCase()
236227
const fileExtension = fileName.split('.').pop()
237228
238-
if (!fileExtension || !allowedExtensions.includes(fileExtension)) {
229+
if (!fileExtension || !ALLOWED_FILE_EXTENSIONS.includes(fileExtension)) {
239230
failHeader.value = '지원하지 않는 파일입니다'
240231
failBody.value = 'jpg, jpeg, png, gif, bmp 파일만 업로드 가능합니다'
241232
failModalToggle()
242233
return
243234
}
244-
if (!allowedMimeTypes.includes(file.type)) {
235+
if (!ALLOWED_FILE_EXTENSIONS.includes(file.type)) {
245236
failHeader.value = '파일 타입을 확인해주세요'
246237
failBody.value = '파일 타입과 확장자명이 일치해야합니다'
247238
failModalToggle()

src/components/common/ModalView.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@
8181

8282
<script setup lang="ts">
8383
import { failIcon, successIcon, warningIcon } from '@/constants/iconPath'
84-
import { preventEnter } from '@/utils/preventEnter'
8584
import { onUnmounted, ref, watch } from 'vue'
8685
import CommonIcons from './CommonIcons.vue'
86+
import { preventEnter } from '@/utils/preventEnter'
8787
8888
const { isOpen, type, modelValue } = defineProps<{
8989
isOpen: boolean
@@ -116,7 +116,6 @@ watch(
116116
() => isOpen,
117117
() => {
118118
if (isOpen) {
119-
textValue.value = ''
120119
document.body.style.overflow = 'hidden'
121120
window.addEventListener('keydown', preventEnter)
122121
} else {

src/components/request-approve/RequestApprove.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ const handleSubmit = async () => {
153153
const requestData = {
154154
categoryId: category2.value.subCategoryId,
155155
processorId: approveData.value.processor.memberId,
156-
dueDate: isTimeFilled.value
156+
dueDate: !isTimeFilled.value
157157
? convertToISO(approveData.value.dueDate, approveData.value.dueTime)
158158
: null,
159159
labelId: approveData.value.label?.labelId || null

src/components/request-task/ReRequestTask.vue

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,18 @@
2828
:handleCancel="handleCancel"
2929
:handleSubmit="handleSubmit"
3030
cancelText="취소"
31-
submitText="수정" />
31+
:submitText="statusText" />
3232
<ModalView
3333
:isOpen="isModalVisible === 'success'"
3434
:type="'successType'"
3535
@close="handleCancel">
36-
<template #header>작업이 수정되었습니다</template>
36+
<template #header>작업이 {{ statusText }}되었습니다</template>
3737
</ModalView>
3838
<ModalView
3939
:isOpen="isModalVisible === 'fail'"
4040
:type="'failType'"
4141
@close="handleCancel">
42-
<template #header>작업요청을 실패했습니다</template>
42+
<template #header>작업{{ statusText }}을 실패했습니다</template>
4343
<template #body>잠시후 시도해주세요</template>
4444
</ModalView>
4545
</div>
@@ -50,7 +50,7 @@ import { getMainCategory, getSubCategory } from '@/api/common'
5050
import { getTaskDetailUser, patchTaskRequest, postTaskRequest } from '@/api/user'
5151
import type { Category, SubCategory } from '@/types/common'
5252
import type { AttachmentResponse } from '@/types/user'
53-
import { onMounted, ref, watch } from 'vue'
53+
import { computed, onMounted, ref, watch } from 'vue'
5454
import { useRouter } from 'vue-router'
5555
import FormButtonContainer from '../common/FormButtonContainer.vue'
5656
import ModalView from '../common/ModalView.vue'
@@ -61,6 +61,9 @@ import RequestTaskTextArea from './RequestTaskTextArea.vue'
6161
6262
const category1 = ref<Category | null>(null)
6363
const category2 = ref<SubCategory | null>(null)
64+
const statusText = computed(() => {
65+
return reqType === 'edit' ? '수정' : '요청'
66+
})
6467
6568
const title = ref('')
6669
const description = ref('')
@@ -129,6 +132,8 @@ const handleSubmit = async () => {
129132
}
130133
const formData = new FormData()
131134
135+
isSubmitting.value = true
136+
132137
const attachmentsToDelete = initFileArr.value
133138
.filter(initFile => !file.value?.some(f => f.name === initFile.fileName))
134139
.map(initFile => initFile.fileId)

src/components/request-task/RequestTaskFileInput.vue

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
id="file"
88
multiple
99
@change="handleFileUpload" />
10-
<label
11-
v-if="hasFiles"
12-
for="file">
10+
<label v-if="hasFiles">
1311
<RequestTaskFileInputAfter
1412
:files="modelValue"
1513
:removeFile="removeFile" />

src/components/requested/RequestedListCard.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ const rejectRequest = async () => {
109109
return
110110
}
111111
try {
112-
await axiosInstance.patch(`/api/tasks/${info.taskId}/terminate`, rejectReason)
112+
await axiosInstance.patch(`/api/tasks/${info.taskId}/terminate`, {reason: rejectReason.value})
113113
toggleModal('success')
114114
} catch {
115115
toggleModal('fail')

src/components/task-detail/TaskDetail.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ import { useMemberStore } from '@/stores/member'
3636
import type { TaskDetailDatas, TaskDetailHistoryData, TaskDetailProps } from '@/types/user'
3737
import { useQuery } from '@tanstack/vue-query'
3838
import { storeToRefs } from 'pinia'
39+
import { onMounted, onUnmounted } from 'vue'
3940
import TaskDetailHistory from './TaskDetailHistory.vue'
4041
import TaskDetailLeft from './TaskDetailLeft.vue'
4142
import TaskDetailRight from './TaskDetailRight.vue'
4243
import TaskDetailTopBar from './TaskDetailTopBar.vue'
43-
import { onMounted, onUnmounted } from 'vue'
4444
4545
const { closeTaskDetail, selectedId } = defineProps<TaskDetailProps>()
4646
@@ -52,7 +52,8 @@ const { data } = useQuery<TaskDetailDatas>({
5252
queryFn:
5353
info.value.role === 'ROLE_USER'
5454
? () => getTaskDetailUser(selectedId)
55-
: () => getTaskDetailManager(selectedId)
55+
: () => getTaskDetailManager(selectedId),
56+
refetchOnMount: true
5657
})
5758
5859
const { data: historyData } = useQuery<TaskDetailHistoryData>({

src/components/task-detail/TaskDetailHistory.vue

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@
4040
</div>
4141
<div class="flex w-full flex-col items-center">
4242
<TaskDetailHistoryChat
43-
v-if="
44-
item.taskHistoryType === 'COMMENT' || item.taskHistoryType === 'TASK_TERMINATED'
45-
"
43+
v-if="item.taskHistoryType === 'COMMENT'"
4644
:history="item"
4745
:requestor-name="requestorName"
4846
:task-id="taskId" />

src/components/task-detail/TaskDetailHistoryChat.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
'flex max-w-[400px] flex-wrap px-4 py-3 text-base rounded-lg font-normal',
2222
isRequestor ? 'bg-background-2' : 'bg-primary2'
2323
]">
24-
{{ history.details.commentDetails?.comment || history.details.taskDetails?.value }}
24+
{{ history.details.commentDetails?.comment }}
2525
</p>
2626
<div
2727
:class="[

src/components/task-detail/TaskDetailHistoryInput.vue

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@
3434
@click="sendMessage" />
3535
</button>
3636
</div>
37+
<ModalView
38+
:is-open="isModalVisible"
39+
type="failType"
40+
@close="handleModal">
41+
<template #header>파일 전송을 실패했습니다</template>
42+
<template #body>최대 파일의 용량은 5mb까지 가능합니다</template>
43+
</ModalView>
3744
</template>
3845

3946
<script setup lang="ts">
@@ -45,6 +52,7 @@ import { useQueryClient } from '@tanstack/vue-query'
4552
import { storeToRefs } from 'pinia'
4653
import { computed, ref } from 'vue'
4754
import CommonIcons from '../common/CommonIcons.vue'
55+
import ModalView from '../common/ModalView.vue'
4856
4957
const { history, taskId, requestorName } = defineProps<{
5058
history: TaskHistory[]
@@ -57,6 +65,7 @@ const queryClient = useQueryClient()
5765
5866
const messageText = ref('')
5967
const isComposing = ref(false)
68+
const isModalVisible = ref(false)
6069
6170
const isPossible = computed(
6271
() =>
@@ -78,12 +87,15 @@ const placeHolderText = computed(() => {
7887
7988
const sendMessage = async () => {
8089
if (!isPossible.value || !messageText.value.trim()) return
81-
8290
await postComment(taskId, messageText.value)
8391
queryClient.invalidateQueries({ queryKey: ['historyData', taskId] })
8492
messageText.value = ''
8593
}
8694
95+
const handleModal = () => {
96+
isModalVisible.value = !isModalVisible.value
97+
}
98+
8799
const handleEnterKey = () => {
88100
if (!isComposing.value) {
89101
sendMessage()
@@ -94,6 +106,13 @@ const handleFileUpload = async (event: Event) => {
94106
const target = event.target as HTMLInputElement
95107
const file = target.files?.[0]
96108
if (!file) return
109+
110+
if (file.size > 5 * 1024 * 1024) {
111+
handleModal()
112+
target.value = ''
113+
return
114+
}
115+
97116
const formData = new FormData()
98117
formData.append('attachment', file)
99118
await postCommentAttachment(taskId, formData)

0 commit comments

Comments
 (0)