Skip to content

Commit

Permalink
Merge pull request #95 from LikeLionHGU/#93_sungyu_기타카테고리적용
Browse files Browse the repository at this point in the history
#93 sungyu 기타카테고리적용
  • Loading branch information
sungyu0309 authored Aug 6, 2024
2 parents b419549 + 3b64492 commit e950945
Show file tree
Hide file tree
Showing 9 changed files with 222 additions and 28 deletions.
6 changes: 2 additions & 4 deletions src/components/IncomePage/EnterPhoneNumComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ function EnterPhoneNumComponent() {
const [isC2Checked, setIsC2Checked] = useState(false);
const phoneNumRef = useRef("");
const [phoneNum, setPhoneNum] = useState("");
const [showBtn, setShowBtn] = useState(false);
const [showModal1, setShowModal1] = useState(false);
const [showModal2, setShowModal2] = useState(false);
const userToken = useRecoilValue(tokenState);
Expand Down Expand Up @@ -127,7 +126,6 @@ function EnterPhoneNumComponent() {
`${value.slice(0, 3)}-${value.slice(3, 7)}-${value.slice(7)}`
);
}
setShowBtn(value.length === 11);
}

function handleSubmitBtn() {
Expand Down Expand Up @@ -213,8 +211,8 @@ function EnterPhoneNumComponent() {
</div>
<SubmitBtn
onClick={handleSubmitBtn}
disabled={!showBtn}
showBtn={showBtn}
disabled={!(isC1Checked && isC2Checked)}
showBtn={isC1Checked && isC2Checked}
>
쏘삐 시작하기
</SubmitBtn>
Expand Down
2 changes: 1 addition & 1 deletion src/components/IncomePage/TermOfUse2Component.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const InfoWrapper = styled.div`
function TermOfUse2Component() {
return (
<Vertical>
<Title>SSOBBI 이용약관</Title>
<Title>SSOBBI 개인정보약관</Title>
<InfoWrapper>
<p>{info1}</p>
<p>{info2}</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import TermOfUseComponent from "./TermOfUseComponent";
import axios from "axios";
import { useRecoilValue } from "recoil";
import { tokenState } from "../../../store/atom";
import TermOfUseComponent2 from "./TermOfUseComponent2";

const Wrapper = styled.div`
display: flex;
Expand All @@ -15,6 +16,9 @@ const Wrapper = styled.div`
const Title = styled.p`
font-family: "SUITMedium";
font-size: 18px;
> span {
color: red;
}
`;

const InputsWrapper = styled.div`
Expand Down Expand Up @@ -94,8 +98,8 @@ function EnterPhoneNumComponent() {
const [isC2Checked, setIsC2Checked] = useState(false);
const phoneNumRef = useRef("");
const [phoneNum, setPhoneNum] = useState("");
const [showBtn, setShowBtn] = useState(false);
const [showModal, setShowModal] = useState(false);
const [showModal2, setShowModal2] = useState(false);
const userToken = useRecoilValue(tokenState);

function handleCheckboxChange(e) {
Expand All @@ -104,18 +108,15 @@ function EnterPhoneNumComponent() {
setIsAllChecked(checked);
setIsC1Checked(checked);
setIsC2Checked(checked);
phoneNumRef.current.focus();
} else if (id === "condition1") {
setIsC1Checked(checked);
if (checked && isC2Checked) {
setIsAllChecked(true);
phoneNumRef.current.focus();
}
} else if (id === "condition2") {
setIsC2Checked(checked);
if (checked && isC1Checked) {
setIsAllChecked(true);
phoneNumRef.current.focus();
}
}
}
Expand All @@ -132,7 +133,6 @@ function EnterPhoneNumComponent() {
`${value.slice(0, 3)}-${value.slice(3, 7)}-${value.slice(7)}`
);
}
setShowBtn(value.length === 11);
}

function handleSubmitBtn() {
Expand Down Expand Up @@ -160,8 +160,15 @@ function EnterPhoneNumComponent() {
<TermOfUseComponent />
</ModalComponent>
)}
{showModal2 && (
<ModalComponent closeModal={() => setShowModal2(false)}>
<TermOfUseComponent2 />
</ModalComponent>
)}
<Wrapper>
<Title>이용약관</Title>
<Title>
이용약관 <span>*</span>
</Title>
<InputsWrapper>
<InputSpanWrapper
style={{
Expand Down Expand Up @@ -197,7 +204,7 @@ function EnterPhoneNumComponent() {
onChange={handleCheckboxChange}
/>
<span>(필수) 개인정보 처리방침</span>
<span className="info" onClick={() => setShowModal(true)}>
<span className="info" onClick={() => setShowModal2(true)}>
보기
</span>
</InputSpanWrapper>
Expand All @@ -211,8 +218,8 @@ function EnterPhoneNumComponent() {
/>
<SubmitBtn
onClick={handleSubmitBtn}
disabled={!showBtn}
showBtn={showBtn}
disabled={!isC1Checked && isC2Checked}
showBtn={isC1Checked && isC2Checked}
>
쏘삐 시작하기
</SubmitBtn>
Expand Down
13 changes: 3 additions & 10 deletions src/components/MobComponent/MobIncomePage/TermOfUseComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,9 @@ function TermOfUseComponent() {
<InfoWrapper>
<p>{info1}</p>
<p>{info2}</p>
<p>{info3}</p>
<p>{info4}</p>
<p>{info5}</p>
<p>{info6}</p>
<p>{info7}</p>
<p>{info8}</p>
<p>{info9}</p>
<p>{info10}</p>
<p>{info11}</p>
Expand All @@ -53,17 +50,13 @@ export default TermOfUseComponent;

const info1 = "1. 목적";
const info2 =
"이 약관은 SSOBBI(이하 회사)가 제공하는 알림톡 서비스(이하 서비스)의 이용과 관";
const info3 =
"련하여 회사와 이용자(이하 이용자) 간의 권리, 의무 및 책임 사항을 규정함을 목적으로 ";
const info4 = "합니다.";
"이 약관은 SSOBBI(이하 회사)가 제공하는 알림톡 서비스(이하 서비스)의 이용과 관련하여 회사와 이용자(이하 이용자) 간의 권리, 의무 및 책임 사항을 규정함을 목적으로합니다.";
const info5 = "1. 서비스의 제공 및 변경";
const info6 = "회사는 이용자에게 SSOBBI 알림톡 서비스를 제공합니다.";
const info7 =
"회사는 필요한 경우 서비스의 내용을 변경할 수 있으며, 변경 사항은 사전에 이용자에게 공";
const info8 = "지합니다.";
"회사는 필요한 경우 서비스의 내용을 변경할 수 있으며, 변경 사항은 사전에 이용자에게 공지합니다.";
const info9 = "1. 서비스 이용";
const info10 =
"이용자는 회사가 정한 절차에 따라 서비스에 가입하여 이용할 수 있습니다.";
const info11 =
"이용자는 서비스 이용 시 관련 법령과 회사의 이용약관을 준수해야 합니다....";
"이용자는 서비스 이용 시 관련 법령과 회사의 이용약관을 준수해야 합니다";
80 changes: 80 additions & 0 deletions src/components/MobComponent/MobIncomePage/TermOfUseComponent2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import React from "react";
import styled from "styled-components";
import { Vertical } from "../../../styles/CommunalStyle";

const Title = styled.p`
color: var(--Black, #0c0c0c);
text-align: center;
font-family: "SUITLight";
font-size: 18px;
font-style: normal;
font-weight: 500;
line-height: normal;
letter-spacing: 1.2px;
`;

const InfoWrapper = styled.div`
width: 90%;
height: 150px;
padding: 10px 30px;
justify-content: center;
align-items: center;
gap: 10px;
flex-shrink: 0;
font-family: "SUITLight";
overflow: scroll;
border-radius: 14px;
background: #f2f6f4;
text-align: left;
overflow: scroll;
`;
function TermOfUseComponent2() {
return (
<Vertical>
<Title>SSOBBI 개인정보약관</Title>
<InfoWrapper>
<p>{info1}</p>
<p>{info2}</p>
<p>{info3}</p>
<p>{info4}</p>
<p>{info5}</p>
<p>{info6}</p>
<p>{info7}</p>
<p>{info8}</p>
<p>{info9}</p>
<p>{info10}</p>
<p>{info11}</p>
<p>{info12}</p>
<p>{info13}</p>
<p>{info14}</p>
<p>{info15}</p>
<p>{info16}</p>
</InfoWrapper>
</Vertical>
);
}

export default TermOfUseComponent2;
const info1 = "1. **개인정보의 수집 및 이용 목적**";
const info2 = " - 알림톡 서비스 제공 및 관리";
const info3 = "2. **수집하는 개인정보의 항목**";
const info4 = "- 필수항목: 전화번호, 서비스 이용기록";
const info5 = "**개인정보의 보유 및 이용 기간**";
const info6 =
" - 이용자의 개인정보는 서비스 제공 기간 동안 보유하며, 이용자가 동의를 철회하거나 목적이 달성된 후에는 해당 정보를 지체 없이 파기합니다.";
const info7 =
" - 단, 법령에 따라 보관해야 하는 경우 해당 기간 동안 보관합니다.";
const info8 = "4. **개인정보의 제3자 제공**.";
const info9 =
"- 회사는 이용자의 동의 없이 개인정보를 제3자에게 제공하지 않습니다.";
const info10 = "- 다만, 법령에 따라 요구되는 경우는 예외로 합니다.";
const info11 = "5. **개인정보의 파기 절차 및 방법**";
const info12 =
"- 이용자의 개인정보는 보유 기간이 경과하거나 처리 목적이 달성된 후 지체 없이 파기됩니다.";
const info13 =
" - 전자적 파일 형태의 정보는 기술적 방법을 사용하여 복구할 수 없도록 영구 삭제합니다.";
const info14 = "6. **이용자의 권리와 의무**";
const info15 =
"- 이용자는 언제든지 자신의 개인정보를 조회하거나 수정할 수 있으며, 수집 및 이용에 대한 동의를 철회할 수 있습니다.";
const info16 =
" - 이용자는 자신의 개인정보를 최신 상태로 유지해야 하며, 부정확한 정보 제공으로 발생하는 문제에 대해 회사는 책임을 지지 않습니다.";
116 changes: 116 additions & 0 deletions src/components/OverConsumptionPage/CalenderComponent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
import React, { useEffect, useState } from "react";
import Calendar from "react-calendar";
import "../../styles/Calender.css";
import moment from "moment";
import styled from "styled-components";
import { format } from "date-fns";
import axios from "axios";
import { tokenState } from "../../store/atom";
import { useRecoilValue } from "recoil";

const StyledDot = styled.div`
background-color: #2aa663;
border-radius: 50%;
width: 0.3rem;
height: 0.3rem;
position: absolute;
top: 60%;
left: 50%;
transform: translateX(-50%);
`;

const StyledToday = styled.div`
background-color: #3fc87e;
width: 20px;
height: 20px;
border-radius: 50%;
position: absolute;
top: 12%;
left: 50%;
transform: translateX(-50%);
color: white;
`;

const CalenderWrapper = styled.div`
height: 83vh;
background-color: #f2f6f4;
border-top-left-radius: 20px;
border-top-right-radius: 20px;
`;

function Calender({ setSelectDate }) {
const today = new Date();
const todayDate = ("0" + today.getDate()).slice(-2);
const [month, setMonth] = useState(moment(today).format("YYYY-MM"));
const [attendDay, setAttendDay] = useState();
const userToken = useRecoilValue(tokenState);
const handleDateChange = (e) => {
setSelectDate(moment(e).format("YYYY-MM-DD"));
};
const shortWeekdayFormat = (locale, date) => {
return format(date, "EEE", { locale });
}; // 캘린더 요일 형식 영어로 바꾸기
function handleMonthChange({ activeStartDate }) {
setMonth(moment(activeStartDate).format("YYYY-MM"));
}
useEffect(() => {
const apiUrl =
process.env.REACT_APP_BASE_URL +
`/records/monthly/${month}/recorded-dates`;
axios
.get(apiUrl, {
headers: {
Authorization: "Bearer " + userToken,
},
})
.then((response) => {
const data = response.data.recordedDates;
const formattedData = data.map((itm) => ({ date: itm }));
setAttendDay(formattedData);
})
.catch((error) => {
console.log(error);
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [month]);
return (
<CalenderWrapper>
<Calendar
formatShortWeekday={shortWeekdayFormat}
onActiveStartDateChange={handleMonthChange}
onChange={handleDateChange}
formatDay={(locale, date) => moment(date).format("DD")} // 일 제거 숫자만 보이게
formatYear={(locale, date) => moment(date).format("YYYY")} // 네비게이션 눌렀을때 숫자 년도만 보이게
formatMonthYear={(locale, date) => moment(date).format("MM")} // 네비게이션에서 2023. 12 이렇게 보이도록 설정
calendarType="gregory" // 일요일 부터 시작
next2Label={null} // +1년 & +10년 이동 버튼 숨기기
prev2Label={null} // -1년 & -10년 이동 버튼 숨기기
minDetail="year" // 10년단위 년도 숨기기
tileDisabled={({ date, view }) => view === "month" && date > today}
tileContent={({ date, view }) => {
let html = [];
if (
view === "month" &&
date.getMonth() === today.getMonth() &&
date.getDate() === today.getDate()
) {
html.push(<StyledToday key={"today"}>{todayDate}</StyledToday>);
}
if (attendDay) {
if (
attendDay.find(
(x) => x.date === moment(date).format("YYYY-MM-DD")
)
) {
html.push(<StyledDot key={moment(date).format("YYYY-MM-DD")} />);
}
}
return <>{html}</>;
}}
/>
{/* <p>카테고리 출력 : {data}</p> */}
</CalenderWrapper>
);
}

export default Calender;
4 changes: 2 additions & 2 deletions src/pages/Mob/MobOverConsumptionPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ const StyledBtn = styled.button`
border: none;
color: white;
font-family: "SUITLight";
font-size: 20px;
font-size: 17px;
cursor: pointer;
position: fixed;
bottom: 90px;
Expand All @@ -85,7 +85,7 @@ const BackBtn = styled.button`
width: 30px;
height: 30px;
border: none;
background-color: white;
background-color: #f8fcf9;
margin-right: 20px;
cursor: pointer;
margin-bottom: 5px;
Expand Down
2 changes: 1 addition & 1 deletion src/pages/Web/CreatePage.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ function CreatePage() {
} else {
const etc = targetAmount.find((item) => item.category === "기타");
return {
category: "기타",
category: itm.category,
targetAmount: etc ? etc.amount : 0,
amount:
typeof itm.amount === "string"
Expand Down
2 changes: 1 addition & 1 deletion src/pages/Web/OverConsumptionPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
Vertical,
NoCenterVertical,
} from "../../styles/CommunalStyle";
import CalenderComponent from "../../components/CreatePage/CalenderComponent";
import CalenderComponent from "../../components/OverConsumptionPage/CalenderComponent";
import CheckComponent from "../../components/OverConsumptionPage/CheckComponent";
import TooltipComponent from "../../components/OverConsumptionPage/TooltipComponent";
import styled from "styled-components";
Expand Down

0 comments on commit e950945

Please sign in to comment.