From 99943c0b19cc034b09d35f9d17c3de0cef399ebf Mon Sep 17 00:00:00 2001 From: bcjang Date: Fri, 18 Jul 2025 15:18:45 +0900 Subject: [PATCH] =?UTF-8?q?=ED=80=98=EC=8A=A4=ED=8A=B8=20=EA=B0=95?= =?UTF-8?q?=EC=A0=9C=20=EC=99=84=EB=A3=8C=20=EA=B2=BD=EC=A0=9C=EC=A7=80?= =?UTF-8?q?=ED=91=9C=20=EC=9E=AC=ED=99=94=20=ED=97=A4=EB=8D=94=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/Users.js | 15 +++ src/assets/data/options.js | 5 + src/components/DataManage/QuestDetailModal.js | 30 ++++- src/components/DataManage/UserQuestInfo.js | 35 ++++- src/components/IndexManage/CreditContent.js | 121 +++++++++++++----- src/i18n.js | 1 + 6 files changed, 166 insertions(+), 41 deletions(-) diff --git a/src/apis/Users.js b/src/apis/Users.js index b60d65f..fd0e683 100644 --- a/src/apis/Users.js +++ b/src/apis/Users.js @@ -185,6 +185,21 @@ export const UserQuestView = async (token, guid) => { } }; +//퀘스트 테스크 완료 +export const UserQuestTaskComplete = async (token, params) => { + try { + const res = await Axios.post(`/api/v1/users/quest/task`, params, { + headers: { Authorization: `Bearer ${token}` }, + }); + + return res.data; + } catch (e) { + if (e instanceof Error) { + throw new Error('UserQuestTaskComplete Error', e); + } + } +}; + // 친구목록 조회 export const UserFriendListView = async (token, guid) => { try { diff --git a/src/assets/data/options.js b/src/assets/data/options.js index f0d7647..13c7e64 100644 --- a/src/assets/data/options.js +++ b/src/assets/data/options.js @@ -110,6 +110,11 @@ export const questStatus = [ { value: 'RUNNING', name: '진행중' }, ]; +export const questCompleteStatusType = [ + { value: 0, name: '미완료' }, + { value: 1, name: '완료' } +] + export const currencyItemCode = [ { value: '19010001', name: '골드' }, { value: '19010002', name: '사파이어' }, diff --git a/src/components/DataManage/QuestDetailModal.js b/src/components/DataManage/QuestDetailModal.js index f0c7f74..48f435d 100644 --- a/src/components/DataManage/QuestDetailModal.js +++ b/src/components/DataManage/QuestDetailModal.js @@ -5,15 +5,31 @@ import { BtnWrapper, TableStyle } from '../../styles/Components'; import Button from '../../components/common/button/Button'; import Modal from '../../components/common/modal/Modal'; import { useEffect, useState, Fragment } from 'react'; +import { questStatus } from '../../assets/data/options'; +import { commonStatus } from '../../assets/data'; +import { useModal } from '../../hooks/hook'; +import { alertTypes } from '../../assets/data/types'; +import { useAlert } from '../../context/AlertProvider'; + +const QuestDetailModal = ({ detailPop, handleClick, detailQuest, handleQuestComplete }) => { + const { showModal } = useAlert(); -const QuestDetailModal = ({ detailPop, handleClick, detailQuest }) => { const [detailList, setDetailList] = useState([]) useEffect(() => { - Array.isArray(detailQuest) && setDetailList(detailQuest) + Array.isArray(detailQuest.detailQuest) && setDetailList(detailQuest.detailQuest) }, [detailQuest]) - // const questlist = [{ taskNo: detailQuest.task_no, taskName: detailQuest.quest_name, counter: detailQuest.counter, state: detailQuest.status }]; + + const handleQuestCompleteConfirm = (data) => { + const params = {...data, quest_key: detailQuest.quest_key} + showModal('QUEST_TASK_COMPLETE_CONFIRM',{ + type: alertTypes.confirm, + onConfirm: () => { + handleQuestComplete(params); + } + }); + } return ( <> @@ -25,7 +41,8 @@ const QuestDetailModal = ({ detailPop, handleClick, detailQuest }) => { Task No Task Name Counter - State + 상태 + 완료처리 @@ -36,7 +53,10 @@ const QuestDetailModal = ({ detailPop, handleClick, detailQuest }) => { {el.task_no} {el.quest_name} {el.counter} - {el.status} + {questStatus.find(data => data.value === el.status)?.name} + + { el.status === commonStatus.running &&