Merge pull request #218 from nakazawakan/fe_fix

<子画面> ・本登録の入力エラー時に上にエラーメッセージが出ていない(今までの遷移から、おそらく不具合だと思われるので念のため報告)
このコミットが含まれているのは:
chankan77 2021-12-30 09:55:51 +09:00 committed by GitHub
コミット 7b1099ca6e
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: 4AEE18F83AFDEB23
63個のファイルの変更6901行の追加4858行の削除

ファイルの表示

@ -12152,6 +12152,16 @@ categories: [layout]
max-width: 560px;
}
}
.l-content-w1024 {
margin: 0 auto;
max-width: 1024px;
width: 100%;
}
.l-content-w786 {
margin: 0 auto;
max-width: 786px;
width: 100%;
}
/* #Side
-------------------------------------------------------------------------- */
@ -16171,6 +16181,11 @@ input[type=radio] + .lbl::before {
height: 27px;
}
input[type=checkbox].is-invalid + .lbl::before,
input[type=radio].is-invalid + .lbl::before {
border-color: #ff9999;
}
input[type=checkbox]:checked + .lbl::before,
input[type=radio]:checked + .lbl::before {
display: inline-block;
@ -17569,6 +17584,43 @@ a {
object-fit: contain;
}
.term-link {
color: #002bff;
text-decoration: underline !important;
}
.term-wrap {
max-width: 625px;
width: 100%;
font-size: 14px;
font-family: Yu Gothic;
}
.term-wrap .text-gray {
color: #a7a7a7;
}
.term-wrap ul {
list-style: auto;
padding-left: 1.5em;
margin: 1em 0;
}
.term-wrap ul li {
margin-bottom: 1em;
}
.term-wrap .ttl {
font-size: 16px;
font-weight: bold;
margin: 2em 0 1em 0;
}
.css-loader-pane {
width: 100vw;
height: 100vh;
left: 0;
top: 0;
position: fixed;
z-index: 100;
}
@media screen and (min-width: 1068px) {
.p-meetingAdd-btn {
width: 200px !important;

8777
backend/public/js/app.js vendored

ファイル差分が大きすぎるため省略します 差分を読み込み

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory, Link } from 'react-router-dom';
import axios from 'axios';
import IconButton from "@material-ui/core/IconButton";
import PhotoCameraOutlinedIcon from '@mui/icons-material/PhotoCameraOutlined';
@ -28,21 +27,22 @@ const ChildDetail = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect(async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get(`/api/admin/children/detail/${props.match.params?.child_id}`)
.then(response => {
setLoaded(true);
switch(response.data.status_code){
case 200:{
setChild(response.data.params);
setImage(response.data.params.image);
break;
await axios.get(`/api/admin/children/detail/${props.match.params?.child_id}`)
.then(response => {
setLoaded(true);
switch(response.data.status_code){
case 200:{
setChild(response.data.params);
setImage(response.data.params.image);
break;
}
case 400: set400Error('失敗しました。'); break;
}
case 400: set400Error('失敗しました。'); break;
}
})
})
},[]);

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { LoadingButton } from '@material-ui/lab';
import Alert from '../../component/alert';
@ -35,29 +34,30 @@ const ChildEdit = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect(async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get(`/api/admin/children/detail/${props.match.params?.child_id}`)
.then(response => {
setLoaded(true);
if(response.data.status_code==200)
{
var child = response.data.params;
setChild(child);
if(child){
setFirstName(child.first_name);
setLastName(child.last_name);
setIdentity(child.identity);
setEmail(child.email);
setTelephone(child.tel);
setCompany(child.company);
await axios.get(`/api/admin/children/detail/${props.match.params?.child_id}`)
.then(response => {
setLoaded(true);
if(response.data.status_code==200)
{
var child = response.data.params;
setChild(child);
if(child){
setFirstName(child.first_name);
setLastName(child.last_name);
setIdentity(child.identity);
setEmail(child.email);
setTelephone(child.tel);
setCompany(child.company);
}
}
}
else {
set400Error("失敗しました。");
}
})
else {
set400Error("失敗しました。");
}
})
},[]);

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import { Link } from 'react-router-dom';
import IconButton from '@mui/material/IconButton';
import SearchIcon from '@mui/icons-material/Search';
@ -24,23 +23,24 @@ const Child = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get('/api/admin/children/list')
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
setChildrenList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchChildrenList(response.data.params.slice(0, INFINITE));
else setFetchChildrenList(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
});
await axios.get('/api/admin/children/list')
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
setChildrenList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchChildrenList(response.data.params.slice(0, INFINITE));
else setFetchChildrenList(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
});
}, []);
const fetchMoreChildrenList = () => {

ファイルの表示

@ -1,7 +1,6 @@
import React, { useState } from 'react';
import { useHistory } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../component/alert';
@ -24,7 +23,7 @@ const ChildPasswordEdit = (props) => {
const [submit, setSubmit] = useState(false)
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({
password:'',
@ -35,20 +34,21 @@ const ChildPasswordEdit = (props) => {
password: password,
password_confirmation: password_confirmation
}
axios.put(`/api/admin/children/updatePassword/${props.match.params?.child_id}`, request)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/admin/child/detail/${props.match.params?.child_id}`,
state: response.data.success_messages});
break;
await axios.put(`/api/admin/children/updatePassword/${props.match.params?.child_id}`, request)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/admin/child/detail/${props.match.params?.child_id}`,
state: response.data.success_messages});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
})
}

ファイルの表示

@ -1,7 +1,6 @@
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../component/alert';
@ -21,7 +20,7 @@ const AdminLogin = () => {
}
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
setSubmit(true); //show progressbar
const formdata = new FormData();
@ -30,30 +29,30 @@ const AdminLogin = () => {
init_error();
axios.post('/api/admin/login', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200: {
localStorage.setItem("from_login", true);
window.location.href = "/admin/meeting";
break;
await axios.post('/api/admin/login', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200: {
localStorage.setItem("from_login", true);
window.location.href = "/admin/meeting";
break;
}
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
}
case 400: {
set400Error(response.data.error_message);
break;
}
}
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
}
case 400: {
set400Error(response.data.error_message);
break;
}
}
if(response.data.status_code != 200){
setPassword('');
}
})
.catch(err=>console.log(err))
if(response.data.status_code != 200){
setPassword('');
}
})
.catch(err=>console.log(err))
}

ファイルの表示

@ -1,7 +1,6 @@
import { useRef, useEffect, useState } from 'react';
import { useHistory, Link } from 'react-router-dom';
import moment from 'moment';
import axios from 'axios';
import Alert from '../../component/alert';
import ModalPdf from '../../component/pdf/modal_pdf';
@ -27,46 +26,46 @@ const MeetingDetail = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get(`/api/admin/meetings/detail/${props.match.params?.meeting_id}`)
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
var list = response.data.params;
var total=0, num=0;
if(list.approval){
for(var i in list.approval)
{
if(list.approval[i].approval_at) num ++;
total ++;
await axios.get(`/api/admin/meetings/detail/${props.match.params?.meeting_id}`)
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
var list = response.data.params;
var total=0, num=0;
if(list.approval){
for(var i in list.approval)
{
if(list.approval[i].approval_at) num ++;
total ++;
}
}
setMeeting({...list, denominator:total, numerator:num});
if(list.meeting_image.length > 0) setThumbnail(list.meeting_image[0].image);
}
}
setMeeting({...list, denominator:total, numerator:num});
if(list.meeting_image.length > 0) setThumbnail(list.meeting_image[0].image);
}
else {
set400Error("失敗しました。");
}
});
else {
set400Error("失敗しました。");
}
});
}, []);
async function handleAcceptDelete() {
setSubmit(true);
axios.delete(`/api/admin/meetings/delete/${props.match.params?.meeting_id}`)
.then(response => {
setShowConfirmModal(false);
setSubmit(false);
switch(response.data.status_code){
case 200:{
history.push({pathname: '/admin/meeting', state: '削除に成功しました!'});
break;
}
case 400: set400Error("削除に失敗しました。"); break;
}
});
await axios.delete(`/api/admin/meetings/delete/${props.match.params?.meeting_id}`)
.then(response => {
setShowConfirmModal(false);
setSubmit(false);
switch(response.data.status_code){
case 200:{
history.push({pathname: '/admin/meeting', state: '削除に成功しました!'});
break;
}
case 400: set400Error("削除に失敗しました。"); break;
}
});
};

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { LoadingButton } from '@material-ui/lab';
import IconButton from '@mui/material/IconButton';
import RemoveIcon from '@mui/icons-material/Remove';
@ -9,8 +8,6 @@ import PreviewPDF from '../../component/preview_pdf';
import PageLoader from '../../component/page_loader';
import UploadingProgress from '../../component/modal_uploading';
const REGISTED_IMAGE_ID = -100; //
const MeetingEdit = (props) => {
const meeting_id = props.match.params.meeting_id;
@ -56,45 +53,45 @@ const MeetingEdit = (props) => {
},[check_radio])
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get(`/api/admin/meetings/detail/${meeting_id}`)
.then(response => {
setLoaded(true);
if(response.data.status_code==200){
setMeeting(response.data.params); //Success
setTitle(response.data.params?.title);
setMemo(response.data.params.memo ? response.data.params.memo: '');
setText(response.data.params.text ? response.data.params.text: '');
setMeetingImages(response.data.params?.meeting_image);
setApproval(response.data.params?.approval);
setPdf(response.data.params?.pdf);
setPDFURL(response.data.params?.pdf);
var list = [...response.data.params?.children];
var approval = [...response.data.params?.approval];
var arr = [];
for(var i in list){
if(approval.findIndex(ele=>ele.child_id == list[i].id) >= 0)
arr.push({...list[i], checked: true});
else arr.push({...list[i], checked: false});
await axios.get(`/api/admin/meetings/detail/${meeting_id}`)
.then(response => {
setLoaded(true);
if(response.data.status_code==200){
setMeeting(response.data.params); //Success
setTitle(response.data.params?.title);
setMemo(response.data.params.memo ? response.data.params.memo: '');
setText(response.data.params.text ? response.data.params.text: '');
setMeetingImages(response.data.params?.meeting_image);
setApproval(response.data.params?.approval);
setPdf(response.data.params?.pdf);
setPDFURL(response.data.params?.pdf);
var list = [...response.data.params?.children];
var approval = [...response.data.params?.approval];
var arr = [];
for(var i in list){
if(approval.findIndex(ele=>ele.child_id == list[i].id) >= 0)
arr.push({...list[i], checked: true});
else arr.push({...list[i], checked: false});
}
setChildrenList(arr);
if((approval.length == list.length) && (approval.length > 0))
setCheckRadio('all_send');
else if((approval.length != list.length) && (approval.length > 0))
setCheckRadio('pickup_send');
else setCheckRadio('');
}
else {
set400Error("失敗しました。");
}
setChildrenList(arr);
if((approval.length == list.length) && (approval.length > 0))
setCheckRadio('all_send');
else if((approval.length != list.length) && (approval.length > 0))
setCheckRadio('pickup_send');
else setCheckRadio('');
}
else {
set400Error("失敗しました。");
}
});
});
}, []);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({title:'',memo:'',text:'',pdf:'',image:''});
@ -113,29 +110,30 @@ const MeetingEdit = (props) => {
const formdata = new FormData();
formdata.append('children', JSON.stringify(approval_registerIndexes));
axios.post('/api/admin/meeting/approvals/register',formdata, {params:{meeting_id: meeting_id}})
axios.delete('/api/admin/meeting/approvals/delete',{params:{children: approval_deleteIndexes, meeting_id: meeting_id}})
await axios.post('/api/admin/meeting/approvals/register',formdata, {params:{meeting_id: meeting_id}})
await axios.delete('/api/admin/meeting/approvals/delete',{params:{children: approval_deleteIndexes, meeting_id: meeting_id}})
const request = { title: title, text: text, memo: memo, pdf: pdf };
setSubmit(true);
axios.put(`/api/admin/meetings/update/${meeting_id}`, request)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/admin/meeting/detail/${meeting_id}`,
state: "更新成功しました!"});
break;
await axios.put(`/api/admin/meetings/update/${meeting_id}`, request)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/admin/meeting/detail/${meeting_id}`,
state: "更新成功しました!"});
break;
}
case 400: set400Error("更新失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error("更新失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
});
}
const handleImageChange = (e) => {
const handleImageChange = async (e) => {
e.preventDefault();
const files = Array.from(e.target.files);
if(e.target.files.length + meeting_image.length > 10)
@ -154,33 +152,34 @@ const MeetingEdit = (props) => {
}))
});
Promise.all(promises).then(images => {
Promise.all(promises).then( async (images) => {
set422Errors({image:''});
const formdata = new FormData();
formdata.append('image', JSON.stringify(images));
setImageSending(true);
axios.post(`/api/admin/meeting/images/register`, formdata, {params:{meeting_id: meeting_id}})
.then(response => {
setImageSending(false);
switch(response.data.status_code){
case 200: setMeetingImages(response.data.params); break;
case 400: set400Error("画像の登録に失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
await axios.post(`/api/admin/meeting/images/register`, formdata, {params:{meeting_id: meeting_id}})
.then(response => {
setImageSending(false);
switch(response.data.status_code){
case 200: setMeetingImages(response.data.params); break;
case 400: set400Error("画像の登録に失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
},
error => { console.error(error); });
};
const handleDeleteImage = (index, image_id) => {
axios.delete(`/api/admin/meeting/images/delete/${meeting_id}`, {params:{image_id: image_id}})
.then(response=>{
switch(response.data.status_code){
case 400: set400Error("画像の削除に失敗しました。");
}
})
const handleDeleteImage = async (index, image_id) => {
await axios.delete(`/api/admin/meeting/images/delete/${meeting_id}`, {params:{image_id: image_id}})
.then(response=>{
switch(response.data.status_code){
case 400: set400Error("画像の削除に失敗しました。");
}
})
let list = [...meeting_image];
list.splice(index, 1);
setMeetingImages(list);

ファイルの表示

@ -1,7 +1,6 @@
import React, { useRef, useEffect, useState } from 'react';
import moment from 'moment';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import { Link } from 'react-router-dom';
import IconButton from '@mui/material/IconButton';
import SearchIcon from '@mui/icons-material/Search';
import InfiniteScroll from "react-infinite-scroll-component";
@ -25,45 +24,48 @@ const Meeting = (props) => {
const isMountedRef = useRef(true);
useEffect(()=>{
useEffect( async () => {
if(localStorage.getItem("from_login")){
setSuccess("ログインに成功しました!");
localStorage.removeItem("from_login");
}
},[]);
useEffect(() => {
isMountedRef.current = false;
setLoaded(false);
axios.get('/api/admin/meetings/list').then(response => {
setLoaded(true);
if(response.data.status_code==200){
//------------Calculate Numerator & Denominator--------------
var list = response.data.params;
var arr = [];
for(var i in list){
var total=0, num=0;
for(var j in list[i].approval)
{
if(list[i].approval[j].approval_at) num ++;
total ++;
}
arr.push({...list[i], denominator:total, numerator:num})
}
setMeetingList(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingList(arr.slice(0, INFINITE));
else setFetchMeetingList(arr.slice(0, len));
}
else {
set400Error("失敗しました。");
}
});
await axios.get('/api/admin/meetings/list')
.then(response => {
setLoaded(true);
if(response.data.status_code==200){
//------------Calculate Numerator & Denominator--------------
var list = response.data.params;
var arr = [];
for(var i in list){
var total=0, num=0;
for(var j in list[i].approval)
{
if(list[i].approval[j].approval_at) num ++;
total ++;
}
arr.push({...list[i], denominator:total, numerator:num})
}
setMeetingList(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingList(arr.slice(0, INFINITE));
else setFetchMeetingList(arr.slice(0, len));
}
else {
set400Error("失敗しました。");
}
});
}, []);
const fetchMoreMeetingList = () => {
setTimeout(() => {
var x = fetch_meeting_list.length;
@ -76,7 +78,7 @@ const Meeting = (props) => {
};
const handleSearch = (e) => {
const handleSearch = async (e) => {
e.preventDefault();
if(keyword == '')
{
@ -86,29 +88,29 @@ const Meeting = (props) => {
set422errors({keyword:''});
setLoaded(false);
setMeetingList([]);
axios.get('/api/admin/meetings/search',{params:{keyword: keyword}})
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
//------------Calculate Numerator & Denominator--------------
var list = response.data.params;
var arr = [];
for(var i in list){
var total=0, num=0;
for(var j in list[i].approval)
{
if(list[i].approval[j].approval_at) num ++;
total ++;
}
arr.push({...list[i], denominator:total, numerator:num})
}
setMeetingList(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingList(arr.slice(0, INFINITE));
else setFetchMeetingList(arr.slice(0, len));
}
});
await axios.get('/api/admin/meetings/search',{params:{keyword: keyword}})
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
//------------Calculate Numerator & Denominator--------------
var list = response.data.params;
var arr = [];
for(var i in list){
var total=0, num=0;
for(var j in list[i].approval)
{
if(list[i].approval[j].approval_at) num ++;
total ++;
}
arr.push({...list[i], denominator:total, numerator:num})
}
setMeetingList(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingList(arr.slice(0, INFINITE));
else setFetchMeetingList(arr.slice(0, len));
}
});
}

ファイルの表示

@ -1,8 +1,6 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory, Link } from 'react-router-dom';
import axios from 'axios';
import { LoadingButton } from '@material-ui/lab';
import IconButton from "@material-ui/core/IconButton";
import PhotoCameraOutlinedIcon from '@mui/icons-material/PhotoCameraOutlined';
@ -57,40 +55,40 @@ const ParentDetail = (props) => {
let reader = new FileReader();
let _file = e.target.files[0];
reader.readAsDataURL(_file);
reader.onloadend = () => {
reader.onloadend = async () => {
set422Errors({image: ''});
setSubmitImage(true);
axios.put(`/api/admin/fathers/updateImage/${props.match.params?.father_id}`, {image: reader.result})
.then(response => {
setSubmitImage(false);
switch(response.data.status_code){
case 200: {
setImage(reader.result);
setSuccess(response.data.success_messages);
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
await axios.put(`/api/admin/fathers/updateImage/${props.match.params?.father_id}`, {image: reader.result})
.then(response => {
setSubmitImage(false);
switch(response.data.status_code){
case 200: {
setImage(reader.result);
setSuccess(response.data.success_messages);
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
};
};
async function handleAcceptDelete() {
setSubmit(true);
axios.delete(`/api/admin/fathers/delete/${props.match.params?.father_id}`)
.then(response => {
setShowConfirmModal(false);
setSubmit(false);
if(response.data.status_code == 200){
history.push({
pathname: "/admin/parent",
state: '削除に成功しました!'});
} else {
set400Error("削除に失敗しました。");
}
});
await axios.delete(`/api/admin/fathers/delete/${props.match.params?.father_id}`)
.then(response => {
setShowConfirmModal(false);
setSubmit(false);
if(response.data.status_code == 200){
history.push({
pathname: "/admin/parent",
state: '削除に成功しました!'});
} else {
set400Error("削除に失敗しました。");
}
});
};

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { LoadingButton } from '@material-ui/lab';
import Alert from '../../component/alert';
import PageLoader from '../../component/page_loader';
@ -32,31 +31,32 @@ const ParentEdit = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get(`/api/admin/fathers/detail/${props.match.params?.father_id}`)
.then(response => {
setLoaded(true);
if(response.data.status_code==200){
var parent = response.data.params;
setParent(parent);
if(parent){
setCompany(parent?.company);
setEmail(parent.email);
setTelephone(parent.tel);
setProfile(parent.profile ? parent.profile: '');
setLimit(parent.limit);
await axios.get(`/api/admin/fathers/detail/${props.match.params?.father_id}`)
.then(response => {
setLoaded(true);
if(response.data.status_code==200){
var parent = response.data.params;
setParent(parent);
if(parent){
setCompany(parent?.company);
setEmail(parent.email);
setTelephone(parent.tel);
setProfile(parent.profile ? parent.profile: '');
setLimit(parent.limit);
}
}
}
else{
set400Error("失敗しました。");
}
})
else{
set400Error("失敗しました。");
}
})
},[]);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set401Error('');
set422Errors({
@ -74,21 +74,22 @@ const ParentEdit = (props) => {
tel: tel,
profile: profile,
};
axios.put(`/api/admin/fathers/updateProfile/${props.match.params?.father_id}`, request)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/admin/parent/detail/${props.match.params?.father_id}`,
state: response.data.success_messages});
break;
await axios.put(`/api/admin/fathers/updateProfile/${props.match.params?.father_id}`, request)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/admin/parent/detail/${props.match.params?.father_id}`,
state: response.data.success_messages});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 401: set401Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
case 401: set401Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
})
}
return (

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import { Link } from 'react-router-dom';
import IconButton from '@mui/material/IconButton';
import SearchIcon from '@mui/icons-material/Search';
import InfiniteScroll from "react-infinite-scroll-component";
@ -23,23 +22,24 @@ const Parent = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get('/api/admin/fathers/list')
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
setFatherList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchFatherList(response.data.params.slice(0, INFINITE));
else setFetchFatherList(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
});
await axios.get('/api/admin/fathers/list')
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
setFatherList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchFatherList(response.data.params.slice(0, INFINITE));
else setFetchFatherList(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
});
}, []);
const fetchMoreFatherList = () => {
@ -54,7 +54,7 @@ const Parent = (props) => {
};
const handleSearch = (e) => {
const handleSearch = async (e) => {
e.preventDefault();
if(keyword == '')
{
@ -64,17 +64,17 @@ const Parent = (props) => {
set422errors({keyword:''});
setLoaded(false);
setFatherList([]);
axios.get('/api/admin/fathers/search',{params: {keyword: keyword}})
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
setFatherList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchFatherList(response.data.params.slice(0, INFINITE));
else setFetchFatherList(response.data.params.slice(0, len));
}
});
await axios.get('/api/admin/fathers/search',{params: {keyword: keyword}})
.then((response) => {
setLoaded(true);
if(response.data.status_code==200){
setFatherList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchFatherList(response.data.params.slice(0, INFINITE));
else setFetchFatherList(response.data.params.slice(0, len));
}
});
}
return (

ファイルの表示

@ -1,7 +1,6 @@
import React, { useState } from 'react';
import { useHistory } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../component/alert';
@ -23,7 +22,7 @@ const ParentPasswordEdit = (props) => {
const [submit, setSubmit] = useState(false)
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({
password:'',
@ -34,20 +33,21 @@ const ParentPasswordEdit = (props) => {
password: password,
password_confirmation: password_confirmation
}
axios.put(`/api/admin/fathers/updatePassword/${props.match.params?.father_id}`, request)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/admin/parent/detail/${props.match.params?.father_id}`,
state: response.data.success_messages});
break;
await axios.put(`/api/admin/fathers/updatePassword/${props.match.params?.father_id}`, request)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/admin/parent/detail/${props.match.params?.father_id}`,
state: response.data.success_messages});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
})
}
return (

ファイルの表示

@ -1,9 +1,7 @@
import React, { useEffect, useState } from 'react';
import React, { useState } from 'react';
import { useHistory } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../component/alert';
@ -19,23 +17,23 @@ const ParentRegister = () => {
const [submit, setSubmit] = useState(false);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({ email: '' })
setSubmit(true);
const formdata = new FormData();
formdata.append('email', email);
formdata.append('relation_limit', limit);
axios.post('/api/admin/fathers/registerTemporary', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
.catch(err=>console.log(err))
await axios.post('/api/admin/fathers/registerTemporary', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
.catch(err=>console.log(err))
}

ファイルの表示

@ -1,12 +1,12 @@
import React, { useEffect, useState } from 'react';
import React, { useState } from 'react';
import { Link } from 'react-router-dom'
export default function Side() {
const [selected, setSelected] = useState('');
const handleLogout = () => {
axios.get('/admin/logout')
.then(() => location.href = '/admin/login')
const handleLogout = async () => {
await axios.get('/admin/logout')
.then(() => location.href = '/admin/login')
}
return (

ファイルの表示

@ -1,6 +1,5 @@
import React, { useState } from 'react';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../../component/alert';
const ChildForgotPassword = () => {
@ -12,24 +11,24 @@ const ChildForgotPassword = () => {
const [_400error, set400Error] = useState('')
const [_success, setSuccess] = useState('')
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({tel: ''});
setSubmit(true);
const formdata = new FormData();
formdata.append('tel', tel);
axios.post('/api/children/requestPassword', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 401: set400Error(response.data.error_messages); break;
case 402: set400Error(response.data.error_messages); break;
}
})
await axios.post('/api/children/requestPassword', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 401: set400Error(response.data.error_messages); break;
case 402: set400Error(response.data.error_messages); break;
}
})
}

ファイルの表示

@ -1,7 +1,6 @@
import React, { useEffect, useState } from 'react';
import React, { useState } from 'react';
import { useHistory } from 'react-router';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../../component/alert';
@ -17,7 +16,7 @@ const ChildForgotPasswordReset = (props) => {
const [_400error, set400Error] = useState('')
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({password:'', password_confirmation:''});
setSubmit(true);
@ -26,18 +25,19 @@ const ChildForgotPasswordReset = (props) => {
password_confirmation: password_confirmation,
token: props.match.params?.token
}
axios.put('/api/children/updatePassword', req)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({pathname: '/c-account/forgot-password/complete', state: response.data.success_messages});
break;
await axios.put('/api/children/updatePassword', req)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({pathname: '/c-account/forgot-password/complete', state: response.data.success_messages});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
})
}

ファイルの表示

@ -1,7 +1,6 @@
import React, { useEffect, useState } from 'react';
import { Link, useHistory } from 'react-router-dom';
import React, { useState } from 'react';
import { Link } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../../component/alert';
@ -16,7 +15,7 @@ const ChildLogin = (props) => {
const [_400error, set400Error] = useState(props.history.location.state);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
setSubmit(true);
set422Errors({tel:'', password:''});
@ -24,26 +23,27 @@ const ChildLogin = (props) => {
const formdata = new FormData();
formdata.append('tel', tel);
formdata.append('password', password);
axios.post('/api/children/login/', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200:{
localStorage.setItem("from_login", true);
window.location.href = '/c-account/meeting';
break;
await axios.post('/api/children/login/', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200:{
localStorage.setItem("from_login", true);
window.location.href = '/c-account/meeting';
break;
}
case 400: set400Error(response.data.error_message); break;
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
}
}
case 400: set400Error(response.data.error_message); break;
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
if(response.data.status_code != 200){
setPassword('');
}
}
if(response.data.status_code != 200){
setPassword('');
}
})
})
}
return (

ファイルの表示

@ -1,7 +1,6 @@
import React, { useEffect, useState } from 'react';
import { useHistory } from 'react-router';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import IconButton from "@material-ui/core/IconButton";
import PhotoCameraOutlinedIcon from '@mui/icons-material/PhotoCameraOutlined';
@ -20,6 +19,7 @@ const ChildSignUp = (props) => {
const [password_confirmation, setPasswordConfirmation] = useState('');
const [company, setCompany] = useState('');
const [image, setImage] = useState(null);
const [check_terms, setCheckTerms] = useState(false);
const [_422errors, set422Errors] = useState({
first_name:'',
@ -29,22 +29,23 @@ const ChildSignUp = (props) => {
password:'',
password_confirmation: '',
image:'',
company:''
company:'',
terms: ''
});
useEffect(()=>{
axios.get('/api/children/checkRegisterMain', {params:{token: props.match.params.token}})
.then(response=>{
switch(response.data.status_code){
case 200: setLoaded(true); setIdentity(response.data.params.tel); break;
case 400: history.push({pathname: '/c-account/login', state: ''}); break;
};
})
useEffect( async ()=>{
await axios.get('/api/children/checkRegisterMain', {params:{token: props.match.params.token}})
.then(response=>{
switch(response.data.status_code){
case 200: setLoaded(true); setIdentity(response.data.params.tel); break;
case 400: history.push({pathname: '/c-account/login', state: ''}); break;
};
})
},[])
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({
first_name:'',
@ -54,7 +55,8 @@ const ChildSignUp = (props) => {
password:'',
password_confirmation: '',
image:'',
company:''
company:'',
terms: ''
});
setSubmit(true);
const formdata = new FormData();
@ -66,24 +68,27 @@ const ChildSignUp = (props) => {
formdata.append('password_confirmation', password_confirmation);
formdata.append('company', company);
formdata.append('image', image);
formdata.append('check_terms', check_terms);
formdata.append('token', props.match.params.token);
axios.post('/api/children/registerMain', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: history.push({pathname: '/c-account/register/complete/'+props.match.params.token, state: response.data.success_messages}); break;
case 400: history.push({pathname: '/c-account/register/error/'+props.match.params.token, state: response.data.error_messages}); break;
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
await axios.post('/api/children/registerMain', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: history.push({pathname: '/c-account/register/complete/'+props.match.params.token, state: response.data.success_messages}); break;
case 400: history.push({pathname: '/c-account/register/error/'+props.match.params.token, state: response.data.error_messages}); break;
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
}
};
if(response.data.status_code != 200){
setPassword('');
setPasswordConfirmation('');
}
};
if(response.data.status_code != 200){
setPassword('');
setPasswordConfirmation('');
}
})
})
}
@ -200,6 +205,26 @@ const ChildSignUp = (props) => {
}
</div>
<div className="edit-set text-center mt-5">
<label htmlFor="terms">
<input id="terms" name="terms" type="checkbox"
className={_422errors.terms && 'is-invalid'}
onChange={()=>setCheckTerms(!check_terms)}
checked={check_terms}
/>
<span className='lbl padding-16'>
<a href="/terms" target='_blank' className='term-link' rel="noopener noreferrer">規約</a>
に同意する
</span>
</label>
{
_422errors.terms &&
<span className="l-alert__text--error ft-16 ft-md-14">
{ _422errors.terms }
</span>
}
</div>
<LoadingButton type="submit" fullWidth
className="btn-edit btn-default btn-h75 bg-yellow rounded-20"
loading={submit}>

ファイルの表示

@ -1,5 +1,4 @@
import React, { useEffect, useState } from 'react';
import axios from 'axios';
import React, { useState } from 'react';
import { LoadingButton } from '@material-ui/lab';
import Alert from '../../../component/alert';
@ -11,7 +10,7 @@ const ChildSignUpTemporary = () => {
const [_422errors, set422Errors] = useState({tel:''});
const [_success, setSuccess] = useState('');
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({tel:''});
@ -20,15 +19,16 @@ const ChildSignUpTemporary = () => {
formdata.append('tel', tel);
formdata.append('father_id', document.getElementById('father_token').value);
setSubmit(true);
axios.post('/api/children/registerTemporary', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: setSuccess("SMSに本登録案内のメッセージを送信しました。本登録を行ってください。"); break;
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
};
})
await axios.post('/api/children/registerTemporary', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: setSuccess("SMSに本登録案内のメッセージを送信しました。本登録を行ってください。"); break;
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
};
})
}

ファイルの表示

@ -1,5 +1,4 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { Link, useHistory } from 'react-router-dom';
import Notification from '../notification';
@ -31,56 +30,58 @@ const MeetingDetail = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
let child_id = document.getElementById('child_id').value;
axios.get(`/api/children/meetings/detail/${props.match.params?.meeting_id}`, {params:{child_id: child_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code == 200)
{
var meeting = response.data.params;
setMeeting(meeting);
if(meeting.meeting_image.length > 0) setThumbnail(meeting.meeting_image[0].image);
if(meeting.approval.approval_at != null){
setApprovalRegister(true);
await axios.get(`/api/children/meetings/detail/${props.match.params?.meeting_id}`, {params:{child_id: child_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code == 200)
{
var meeting = response.data.params;
setMeeting(meeting);
if(meeting.meeting_image.length > 0) setThumbnail(meeting.meeting_image[0].image);
if(meeting.approval.approval_at != null){
setApprovalRegister(true);
}
}
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
},[]);
const handleApprovalRegister = () => {
const handleApprovalRegister = async () => {
setSubmit(true);
const formdata = new FormData();
formdata.append('child_id', document.getElementById('child_id').value);
formdata.append('meeting_id', props.match.params.meeting_id);
axios.post('/api/children/meeting/approvals/registerApproval', formdata)
.then(response => {
setSubmit(false);
setShowConfirmMoal(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: {
setSuccess(response.data.success_messages);
setApprovalRegister(true);
break;
await axios.post('/api/children/meeting/approvals/registerApproval', formdata)
.then(response => {
setSubmit(false);
setShowConfirmMoal(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: {
setSuccess(response.data.success_messages);
setApprovalRegister(true);
break;
}
case 400: set400Error(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
}
})
})
}
const handlePDFOpen = (pdf) => {

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import { Link } from 'react-router-dom';
import moment from 'moment';
import Notification from '../notification';
@ -40,42 +39,42 @@ const Meeting = () => {
},[loaded1, loaded2])
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
let child_id = document.getElementById('child_id').value;
axios.get('/api/children/meetings/listOfNonApprovalOfChild', {params:{child_id: child_id}})
.then(response => {
setLoaded1(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMettingListNonApproval(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchMettingListNonApproval(response.data.params.slice(0, INFINITE));
else setFetchMettingListNonApproval(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
})
await axios.get('/api/children/meetings/listOfNonApprovalOfChild', {params:{child_id: child_id}})
.then(response => {
setLoaded1(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMettingListNonApproval(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchMettingListNonApproval(response.data.params.slice(0, INFINITE));
else setFetchMettingListNonApproval(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
})
axios.get('/api/children/meetings/listOfApprovalOfChild', {params:{child_id: child_id}})
.then(response => {
setLoaded2(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMettingListApproval(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchMettingListApproval(response.data.params.slice(0, INFINITE));
else setFetchMettingListApproval(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
})
await axios.get('/api/children/meetings/listOfApprovalOfChild', {params:{child_id: child_id}})
.then(response => {
setLoaded2(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMettingListApproval(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchMettingListApproval(response.data.params.slice(0, INFINITE));
else setFetchMettingListApproval(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
})
},[]);
const fetchMoreListNonApproval = () => {

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import { useHistory } from 'react-router-dom';
import Notification from '../notification';
import Alert from '../../component/alert';
@ -19,27 +18,27 @@ const ParentDetail = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get('/api/children/fathers/detail/'+props.match.params.father_id)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setParent(response.data.params);
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
await axios.get('/api/children/fathers/detail/'+props.match.params.father_id)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setParent(response.data.params);
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
},[]);
useEffect(()=>{

ファイルの表示

@ -1,5 +1,4 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import Notification from '../notification';
@ -22,25 +21,26 @@ const Parent = () => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
let child_id = document.getElementById('child_id').value;
axios.get('/api/children/fathers/listOfChild', {params: {child_id: child_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setParentList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchParentList(response.data.params.slice(0, INFINITE));
else setFetchParentList(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
})
await axios.get('/api/children/fathers/listOfChild', {params: {child_id: child_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setParentList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchParentList(response.data.params.slice(0, INFINITE));
else setFetchParentList(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
})
}, []);

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { LoadingButton } from '@material-ui/lab';
import Notification from '../notification';
@ -38,38 +37,39 @@ const ProfileEdit = () => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
let child_id = document.getElementById('child_id').value;
axios.get('/api/children/detail/'+child_id)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
let params = response.data.params;
setProfile(params);
setFirstName(params.first_name);
setLastName(params.last_name);
setEmail(params.email);
setTel(params.tel);
setIdentity(params.identity);
setCompany(params.company? params.company: '');
}else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
await axios.get('/api/children/detail/'+child_id)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
let params = response.data.params;
setProfile(params);
setFirstName(params.first_name);
setLastName(params.last_name);
setEmail(params.email);
setTel(params.tel);
setIdentity(params.identity);
setCompany(params.company? params.company: '');
}else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
},[]);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({
first_name:'',
@ -98,21 +98,22 @@ const ProfileEdit = () => {
}
setSubmit(true);
let child_id =document.getElementById('child_id').value;
axios.put('/api/children/updateProfile/'+child_id, post)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: {
history.push({
pathname: "/c-account/profile",
state: response.data.success_messages});
break;
await axios.put('/api/children/updateProfile/'+child_id, post)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: {
history.push({
pathname: "/c-account/profile",
state: response.data.success_messages});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
})
}

ファイルの表示

@ -1,7 +1,6 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory, Link } from 'react-router-dom';
import IconButton from "@material-ui/core/IconButton";
import axios from 'axios';
import PhotoCameraOutlinedIcon from '@mui/icons-material/PhotoCameraOutlined';
import Alert from '../../component/alert';
@ -26,28 +25,28 @@ const Profile = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
let child_id = document.getElementById('child_id').value;
axios.get('/api/children/detail/'+child_id)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setProfile(response.data.params);
setImage(response.data.params.image);
} else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
await axios.get('/api/children/detail/'+child_id)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setProfile(response.data.params);
setImage(response.data.params.image);
} else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
},[]);
useEffect(() => {
@ -57,9 +56,9 @@ const Profile = (props) => {
}
})
const handleLogout = () => {
axios.get('/c-account/logout')
.then(() => location.href = '/c-account/login')
const handleLogout = async () => {
await axios.get('/c-account/logout')
.then(() => location.href = '/c-account/login')
}
const handleImageChange = (e) => {
@ -68,23 +67,23 @@ const Profile = (props) => {
let reader = new FileReader();
let _file = e.target.files[0];
reader.readAsDataURL(_file);
reader.onloadend = () => {
reader.onloadend = async () => {
set422Errors({image: ''});
setSubmitImage(true);
axios.put(`/api/children/updateImage/${document.getElementById('child_id').value}`, {image: reader.result})
.then(response => {
setNotice(response.data.notice);
setSubmitImage(false);
switch(response.data.status_code){
case 200: {
localStorage.setItem('image_upload_success', response.data.success_messages);
window.location.reload(true);
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
await axios.put(`/api/children/updateImage/${document.getElementById('child_id').value}`, {image: reader.result})
.then(response => {
setNotice(response.data.notice);
setSubmitImage(false);
switch(response.data.status_code){
case 200: {
localStorage.setItem('image_upload_success', response.data.success_messages);
window.location.reload(true);
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
};
};

ファイルの表示

@ -1,7 +1,6 @@
import React, { useState } from 'react';
import { useHistory } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Notification from '../notification';
import Alert from '../../component/alert';
@ -24,7 +23,7 @@ const ProfilePasswordEdit = () => {
const [submit, setSubmit] = useState(false);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({
password:'',
@ -35,21 +34,22 @@ const ProfilePasswordEdit = () => {
password: password,
password_confirmation: password_confirmation
}
axios.put(`/api/children/updatePassword/${document.getElementById('child_id').value}`, post)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: {
history.push({
pathname: "/c-account/profile",
state: response.data.success_messages});
break;
await axios.put(`/api/children/updatePassword/${document.getElementById('child_id').value}`, post)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: {
history.push({
pathname: "/c-account/profile",
state: response.data.success_messages});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
})
}

ファイルの表示

@ -1,5 +1,4 @@
import React, { useState } from 'react';
import axios from 'axios';
import { LoadingButton } from '@material-ui/lab';
import Notification from '../notification';
@ -12,19 +11,19 @@ const ProfileWithdrawal = () => {
const [_400error, set400Error] = useState('');
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
setSubmit(true);
let child_id = document.getElementById("child_id").value;
axios.delete('/api/children/withdrawal', {params:{child_id: child_id}})
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: window.location.href = "/c-account/withdrawal/complete"; break;
case 400: set400Error("失敗しました。"); break;
}
})
await axios.delete('/api/children/withdrawal', {params:{child_id: child_id}})
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: window.location.href = "/c-account/withdrawal/complete"; break;
case 400: set400Error("失敗しました。"); break;
}
})
}
return (

ファイルの表示

@ -1,6 +1,5 @@
import React, { useEffect, useState } from 'react';
import { useHistory, Link } from 'react-router-dom';
import axios from 'axios';
import { Link } from 'react-router-dom';
import moment from 'moment';
import Notification from '../notification';
@ -31,7 +30,7 @@ const Search = () => {
const [notice, setNotice] = useState(localStorage.getItem('notice'));
const handleSearch = (e) => {
const handleSearch = async (e) => {
e.preventDefault();
if(keyword == ''){
document.getElementById('keyword').focus();
@ -41,30 +40,31 @@ const Search = () => {
setLoaded2(false);
setInitPage(false);
axios.get('/api/children/meetings/searchOfNonApprovalOfChild', {params:{keyword: keyword, child_id: child_id}})
.then(response => {
setLoaded1(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMettingListNonApproval(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchMettingListNonApproval(response.data.params.slice(0, INFINITE));
else setFetchMettingListNonApproval(response.data.params.slice(0, len));
}
});
axios.get('/api/children/meetings/searchOfApprovalOfChild', {params:{keyword: keyword, child_id: child_id}})
.then((response) => {
setLoaded2(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMettingListApproval(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchMettingListApproval(response.data.params.slice(0, INFINITE));
else setFetchMettingListApproval(response.data.params.slice(0, len));
}
});
await axios.get('/api/children/meetings/searchOfNonApprovalOfChild', {params:{keyword: keyword, child_id: child_id}})
.then(response => {
setLoaded1(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMettingListNonApproval(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchMettingListNonApproval(response.data.params.slice(0, INFINITE));
else setFetchMettingListNonApproval(response.data.params.slice(0, len));
}
});
await axios.get('/api/children/meetings/searchOfApprovalOfChild', {params:{keyword: keyword, child_id: child_id}})
.then((response) => {
setLoaded2(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMettingListApproval(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchMettingListApproval(response.data.params.slice(0, INFINITE));
else setFetchMettingListApproval(response.data.params.slice(0, len));
}
});
}
useEffect(()=>{

ファイルの表示

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react';
import React, { useState } from 'react';
import { Link } from 'react-router-dom'
export default function Side() {
@ -6,9 +6,9 @@ export default function Side() {
const child_img = document.getElementById('child_image').value;
const handleLogout = () => {
axios.get('/c-account/logout')
.then(() => location.href = '/c-account/login')
const handleLogout = async () => {
await axios.get('/c-account/logout')
.then(() => location.href = '/c-account/login')
}
const handleSelected = (id) => {

ファイルの表示

@ -1,10 +1,7 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory, Link } from 'react-router-dom';
import axios from 'axios';
import { Link } from 'react-router-dom';
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import Slide from '@mui/material/Slide';
import { CircularProgress } from '@material-ui/core';
@ -30,24 +27,26 @@ export default function ModalSettingNotify({show, handleClose, meetingId}){
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded1(false);
axios.get('/api/fathers/meeting/approvals/listChildrenOfApprovel', {params: { meeting_id: meetingId }})
.then((response) => {
setLoaded1(true);
if(response.data.status_code==200){
setApproval(response.data.params);
}
});
await axios.get('/api/fathers/meeting/approvals/listChildrenOfApprovel', {params: { meeting_id: meetingId }})
.then((response) => {
setLoaded1(true);
if(response.data.status_code==200){
setApproval(response.data.params);
}
});
setLoaded2(false);
axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params: { meeting_id: meetingId }})
.then((response) => {
setLoaded2(true);
if(response.data.status_code==200){
setUnapproval(response.data.params);
}
});
await axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params: { meeting_id: meetingId }})
.then((response) => {
setLoaded2(true);
if(response.data.status_code==200){
setUnapproval(response.data.params);
}
});
}, []);
@ -56,17 +55,17 @@ export default function ModalSettingNotify({show, handleClose, meetingId}){
},[loaded1, loaded2]);
const settingNotify = (email) => {
const settingNotify = async (email) => {
const formdata = new FormData();
formdata.append('email', JSON.stringify(new Array(email)));
formdata.append('meeting_id', meetingId);
axios.post('/api/fathers/meetingNotification', formdata)
.then(response=>{
switch(response.data.status_code){
case 200: setSuccess('通知に成功しました!'); break;
case 400: set400Error('通知に失敗しました。'); break;
}
})
await axios.post('/api/fathers/meetingNotification', formdata)
.then(response=>{
switch(response.data.status_code){
case 200: setSuccess('通知に成功しました!'); break;
case 400: set400Error('通知に失敗しました。'); break;
}
})
}

ファイルの表示

@ -5,6 +5,7 @@ import { CircularProgress } from '@material-ui/core';
const PageLoader = () => {
return (
<div className="css-loader-pane">
<CircularProgress
className="css-loader"
sx={{
@ -13,6 +14,7 @@ const PageLoader = () => {
thickness={1}
value={50}
/>
</div>
)
}

ファイルの表示

@ -1,12 +1,13 @@
import React from 'react';
import { Button } from '@material-ui/core';
import { useHistory, useLocation } from 'react-router';
import Alert from '../alert';
const SignUpComplete = () => {
const SignUpComplete = (props) => {
const history = useHistory();
const { pathname } = useLocation();
const [_success, setSuccess] = useState(props.history.location.state);
const gotoLogin = () => {
var url;
@ -32,6 +33,7 @@ const SignUpComplete = () => {
</Button>
</div>
</div>
{ _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
</div>
)
}

ファイルの表示

@ -1,5 +1,4 @@
import React, { useState } from 'react';
import axios from 'axios';
import { useHistory } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
@ -17,14 +16,14 @@ const Contact = () => {
const [_400error, set400Error] = useState('');
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
setSubmit(true); //show progressbar
set422Errors({ email:'', message:'' });
const formdata = new FormData();
formdata.append('email', email);
formdata.append('message', message);
axios.post('/api/contacts/register', formdata)
await axios.post('/api/contacts/register', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){

ファイルの表示

@ -1,5 +1,4 @@
import React, { useState } from 'react';
import axios from 'axios';
import { useHistory } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
@ -15,23 +14,24 @@ const UnknownError = () => {
const [_400error, set400Error] = useState('');
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
setSubmit(true); //show progressbar
set422Errors({ email:'', message:'' });
const formdata = new FormData();
formdata.append('email', email);
formdata.append('message', message);
axios.post('/api/contacts/register/', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: history.push({pathname: '/contact-us/complete', state: {}}); break;
case 422: set422Errors(response.data.error_messages); break;
case 400: set400Error(response.data.error_messages); break;
};
})
.catch(err=>console.log(err))
await axios.post('/api/contacts/register/', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: history.push({pathname: '/contact-us/complete', state: {}}); break;
case 422: set422Errors(response.data.error_messages); break;
case 400: set400Error(response.data.error_messages); break;
};
})
.catch(err=>console.log(err))
}

ファイルの表示

@ -1,6 +1,5 @@
import React, { useState } from 'react';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../../component/alert';
const ParentForgotPassword = () => {
@ -12,22 +11,23 @@ const ParentForgotPassword = () => {
const [_400error, set400Error] = useState('')
const [_success, setSuccess] = useState('')
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({email: ''});
setSubmit(true);
const formdata = new FormData();
formdata.append('email', email);
axios.post('/api/fathers/requestPassword', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
await axios.post('/api/fathers/requestPassword', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
}

ファイルの表示

@ -1,7 +1,6 @@
import React, { useEffect, useState } from 'react';
import React, { useState } from 'react';
import { useHistory } from 'react-router';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../../component/alert';
@ -17,7 +16,7 @@ const ParentForgotPasswordReset = (props) => {
const [_400error, set400Error] = useState('')
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({password:'', password_confirmation:''});
setSubmit(true);
@ -26,18 +25,19 @@ const ParentForgotPasswordReset = (props) => {
password_confirmation: password_confirmation,
token: props.match.params?.token
}
axios.put('/api/fathers/updatePassword', req)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({pathname: '/p-account/forgot-password/complete', state: response.data.success_messages});
break;
await axios.put('/api/fathers/updatePassword', req)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({pathname: '/p-account/forgot-password/complete', state: response.data.success_messages});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
})
}

ファイルの表示

@ -1,7 +1,6 @@
import React, { useEffect, useState } from 'react';
import { Link, useHistory } from 'react-router-dom';
import React, { useState } from 'react';
import { Link } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../../component/alert';
@ -16,7 +15,7 @@ const ParentLogin = (props) => {
const [_400error, set400Error] = useState(props.history.location.state);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
setSubmit(true);
set422Errors({email:'', password:''});
@ -24,26 +23,27 @@ const ParentLogin = (props) => {
const formdata = new FormData();
formdata.append('email', email);
formdata.append('password', password);
axios.post('/api/fathers/login/', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200:{
localStorage.setItem("from_login", true);
window.location.href = '/p-account/meeting';
break;
await axios.post('/api/fathers/login/', formdata)
.then(response => {
setSubmit(false)
switch(response.data.status_code){
case 200:{
localStorage.setItem("from_login", true);
window.location.href = '/p-account/meeting';
break;
}
case 400: set400Error(response.data.error_message); break;
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
}
}
case 400: set400Error(response.data.error_message); break;
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
if(response.data.status_code != 200){
setPassword('');
}
}
if(response.data.status_code != 200){
setPassword('');
}
})
})
}
return (

ファイルの表示

@ -3,7 +3,6 @@ import { useHistory } from 'react-router';
import { LoadingButton } from '@material-ui/lab';
import IconButton from "@material-ui/core/IconButton";
import PhotoCameraOutlinedIcon from '@mui/icons-material/PhotoCameraOutlined';
import axios from 'axios';
import Alert from '../../../component/alert';
@ -20,6 +19,7 @@ const ParentSignUp = (props) => {
const [password_confirmation, setPasswordConfirmation] = useState('');
const [tel, setTel] = useState('');
const [profile, setProfile] = useState('');
const [check_terms, setCheckTerms] = useState(false);
const [_422errors, set422Errors] = useState({
image:'',
@ -28,22 +28,23 @@ const ParentSignUp = (props) => {
password_confirmation: '',
tel:'',
profile:'',
terms:''
});
const [_400error, set400Error] = useState('');
useEffect(()=>{
axios.get('/api/fathers/checkRegisterMain', {params:{token: props.match.params.token}})
.then(response=>{
switch(response.data.status_code){
case 200: setLoaded(true); break;
case 400: history.push({pathname: '/p-account/login', state: ''}); break;
};
})
useEffect( async ()=>{
await axios.get('/api/fathers/checkRegisterMain', {params:{token: props.match.params.token}})
.then(response=>{
switch(response.data.status_code){
case 200: setLoaded(true); break;
case 400: history.push({pathname: '/p-account/login', state: ''}); break;
};
})
},[])
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({
image:'',
@ -52,6 +53,7 @@ const ParentSignUp = (props) => {
password_confirmation: '',
tel:'',
profile:'',
terms:''
});
setSubmit(true);
const formdata = new FormData();
@ -61,25 +63,27 @@ const ParentSignUp = (props) => {
formdata.append('password_confirmation', password_confirmation);
formdata.append('tel', tel);
formdata.append('profile', profile);
formdata.append('check_terms', check_terms);
formdata.append('token', props.match.params.token);
axios.post('/api/fathers/registerMain', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: history.push({pathname: '/p-account/register/complete/'+props.match.params.token, state: response.data.success_messages}); break;
case 400: set400Error(response.data.error_messages); break;
case 401: history.push({pathname: '/p-account/register/error/'+props.match.params.token, state: response.data.error_messages}); break;
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
await axios.post('/api/fathers/registerMain', formdata)
.then(response => {
setSubmit(false);
switch(response.data.status_code){
case 200: history.push({pathname: '/p-account/register/complete/'+props.match.params.token, state: response.data.success_messages}); break;
case 400: set400Error(response.data.error_messages); break;
case 401: history.push({pathname: '/p-account/register/error/'+props.match.params.token, state: response.data.error_messages}); break;
case 422: {
window.scrollTo(0, 0);
set422Errors(response.data.error_messages);
break;
}
};
if(response.data.status_code != 200){
setPassword('');
setPasswordConfirmation('');
}
};
if(response.data.status_code != 200){
setPassword('');
setPasswordConfirmation('');
}
})
})
}
@ -174,6 +178,26 @@ const ParentSignUp = (props) => {
}
</div>
<div className="edit-set text-center mt-5">
<label htmlFor="terms">
<input id="terms" name="terms" type="checkbox"
className={_422errors.terms && 'is-invalid'}
onChange={()=>setCheckTerms(!check_terms)}
checked={check_terms}
/>
<span className='lbl padding-16'>
<a href="/terms" target='_blank' className='term-link' rel="noopener noreferrer">規約</a>
に同意する
</span>
</label>
{
_422errors.terms &&
<span className="l-alert__text--error ft-16 ft-md-14">
{ _422errors.terms }
</span>
}
</div>
<LoadingButton type="submit" fullWidth
className="btn-edit btn-default btn-h75 bg-yellow rounded-20"
loading={submit}>

ファイルの表示

@ -1,6 +1,5 @@
import React, { useEffect, useState } from 'react';
import React, { useState } from 'react';
import { LoadingButton } from '@material-ui/lab';
import axios from 'axios';
import Alert from '../../component/alert';
import Notification from '../notification';
import copy from 'clipboard-copy';
@ -17,7 +16,7 @@ const ChildAdd = () => {
const [submit, setSubmit] = useState(false);
const father_id = document.getElementById('father_id').value;
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({identity: ''});
set401Error('');
@ -25,17 +24,18 @@ const ChildAdd = () => {
formdata.append('identity', identity);
formdata.append('father_id', father_id);
setSubmit(true);
axios.post('/api/fathers/relations/register', formdata)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 401: set401Error(response.data.error_messages); set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
await axios.post('/api/fathers/relations/register', formdata)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: setSuccess(response.data.success_messages); break;
case 400: set400Error(response.data.error_messages); break;
case 401: set401Error(response.data.error_messages); set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
}
const copyInviteURL = () => {

ファイルの表示

@ -1,5 +1,4 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { Link, useHistory } from 'react-router-dom';
import moment from 'moment';
@ -24,27 +23,27 @@ const ChildDetail = (props) => {
const child_id = props.match.params.child_id;
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get('/api/fathers/children/detail/'+child_id, {params:{father_id: father_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setChild(response.data.params);
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
await axios.get('/api/fathers/children/detail/'+child_id, {params:{father_id: father_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setChild(response.data.params);
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
},[]);
//-------------------------------------------------------------
@ -56,22 +55,22 @@ const ChildDetail = (props) => {
},[]);
//---------------------------------------------------------------
const handleAcceptDelete = () => {
const handleAcceptDelete = async () => {
setSubmit(true);
axios.delete(`/api/fathers/relations/deleteRelationChild/${child_id}`)
.then(response => {
setSubmit(false);
setShowDelete(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: {
history.push({ pathname: "/p-account/child",
state: "子の削除に成功しました。" });
break;
await axios.delete(`/api/fathers/relations/deleteRelationChild/${child_id}`)
.then(response => {
setSubmit(false);
setShowDelete(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: {
history.push({ pathname: "/p-account/child",
state: "子の削除に成功しました。" });
break;
}
case 400: set400Error('子の削除に失敗しました。'); break;
}
case 400: set400Error('子の削除に失敗しました。'); break;
}
});
});
};
return (

ファイルの表示

@ -3,7 +3,6 @@ import ja from "date-fns/locale/ja";
import DatePicker, { registerLocale } from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
registerLocale("ja", ja);
import axios from 'axios';
import moment from 'moment';
import { LoadingButton } from '@material-ui/lab';
import Notification from '../notification';
@ -29,30 +28,30 @@ const ChildEdit = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get('/api/fathers/children/detail/'+child_id, {params:{father_id: father_id}})
.then(response => {
setNotice(response.data.notice);
await axios.get('/api/fathers/children/detail/'+child_id, {params:{father_id: father_id}})
.then(response => {
setNotice(response.data.notice);
setLoaded(true);
if(response.data.status_code==200){
let hire_at = moment(response.data.params.father_relations?.hire_at).toDate();
setHireAt(hire_at);
} else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
if(response.data.status_code==200){
let hire_at = moment(response.data.params.father_relations?.hire_at).toDate();
setHireAt(hire_at);
} else {
set400Error("失敗しました。");
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
})
},[]);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({hire_at: ''});
const request = {
@ -60,22 +59,22 @@ const ChildEdit = (props) => {
hire_at: hire_at
}
setSubmit(true);
axios.put(`/api/fathers/relations/updateHireDate/${child_id}`, request)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200:{
history.push({
pathname: '/p-account/child/detail/'+child_id,
state: response.data.success_messages
});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
await axios.put(`/api/fathers/relations/updateHireDate/${child_id}`, request)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200:{
history.push({
pathname: '/p-account/child/detail/'+child_id,
state: response.data.success_messages
});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
}
return (

ファイルの表示

@ -1,5 +1,4 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import Notification from '../notification';
@ -22,25 +21,25 @@ const Child = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
let father_id = document.getElementById('father_id').value;
axios.get('/api/fathers/children/listOfFather', {params: {father_id: father_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setChildrenList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchChildrenList(response.data.params.slice(0, INFINITE));
else setFetchChildrenList(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
})
await axios.get('/api/fathers/children/listOfFather', {params: {father_id: father_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setChildrenList(response.data.params);
var len = response.data.params.length;
if(len > INFINITE)
setFetchChildrenList(response.data.params.slice(0, INFINITE));
else setFetchChildrenList(response.data.params.slice(0, len));
}
else {
set400Error("失敗しました。");
}
})
}, []);

ファイルの表示

@ -1,14 +1,13 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import { Link } from 'react-router-dom';
import moment from 'moment';
import IconButton from '@mui/material/IconButton';
import Notification from '../notification';
import Alert from '../../component/alert';
import PageLoader from '../../component/page_loader';
import InfiniteScroll from "react-infinite-scroll-component";
import { isObject } from 'lodash';
const INFINITE = 10;
const SCROLL_DELAY_TIME = 1500;
@ -34,11 +33,12 @@ const Favorite = (props) => {
},[loaded1, loaded2])
useEffect(() => {
useEffect(async () => {
isMountedRef.current = false;
setLoaded(false);
let father_id = document.getElementById('father_id').value;
axios.get('/api/fathers/meetings/listOfNonFavoriteOfFather', {params:{father_id: father_id}})
await axios.get('/api/fathers/meetings/listOfNonFavoriteOfFather', {params:{father_id: father_id}})
.then(response => {
setLoaded1(true);
setNotice(response.data.notice);
@ -64,7 +64,8 @@ const Favorite = (props) => {
set400Error("失敗しました。");
}
})
axios.get('/api/fathers/meetings/listOfFavoriteOfFather', {params:{father_id: father_id}})
await axios.get('/api/fathers/meetings/listOfFavoriteOfFather', {params:{father_id: father_id}})
.then(response => {
setLoaded2(true);
setNotice(response.data.notice);
@ -118,8 +119,8 @@ const Favorite = (props) => {
const formdata = new FormData();
formdata.append('meeting_id', meetingId);
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response=>{setNotice(response.data.notice)})
await axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response=>{setNotice(response.data.notice)})
if(stateName == "nonFavoriteOfFather") {
const newList = meeting_list_non_favorite.map((item) => {

ファイルの表示

@ -1,4 +1,4 @@
import React, { Component } from 'react';
import React from 'react';
import ReactDOM from 'react-dom';
import Side from './side';

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { LoadingButton } from '@material-ui/lab';
import IconButton from '@mui/material/IconButton';
import RemoveIcon from '@mui/icons-material/Remove';
@ -36,7 +35,7 @@ const MeetingAdd = (props) => {
const state = props.history.location.state;
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
if(state){
@ -64,24 +63,24 @@ const MeetingAdd = (props) => {
else setCheckRadio('');
}
else{
axios.get('/api/fathers/children/listOfFather', {params:{father_id: father_id}})
.then(response=>{
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code == 200){
var list = response.data.params;
var arr = [];
for(var i in list)
arr.push({...list[i], checked: false})
setChildrenList(arr);
if(list.length > 0)
setCheckRadio("all_send");
else setCheckRadio('');
}
else {
set400Error("失敗しました。");
}
})
await axios.get('/api/fathers/children/listOfFather', {params:{father_id: father_id}})
.then(response=>{
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code == 200){
var list = response.data.params;
var arr = [];
for(var i in list)
arr.push({...list[i], checked: false})
setChildrenList(arr);
if(list.length > 0)
setCheckRadio("all_send");
else setCheckRadio('');
}
else {
set400Error("失敗しました。");
}
})
}
},[])
@ -112,7 +111,7 @@ const MeetingAdd = (props) => {
},[check_radio])
//----------------------------------------------------------------------
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({title:'',memo:'',text:'',pdf:'',image:''});
@ -130,22 +129,23 @@ const MeetingAdd = (props) => {
formdata.append('children', JSON.stringify(c_arr));
setSubmit(true);
axios.post('/api/fathers/meetings/register', formdata)
.then(response => {
setNotice(response.data.notice);
setSubmit(false);
switch(response.data.status_code){
case 200: {
const meeting_id = response.data.params.meeting_id;
history.push({
pathname: `/p-account/meeting/detail/${meeting_id}`,
state: "登録成功しました"});
break;
await axios.post('/api/fathers/meetings/register', formdata)
.then(response => {
setNotice(response.data.notice);
setSubmit(false);
switch(response.data.status_code){
case 200: {
const meeting_id = response.data.params.meeting_id;
history.push({
pathname: `/p-account/meeting/detail/${meeting_id}`,
state: "登録成功しました"});
break;
}
case 400: set400Error("登録失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error("登録失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
});
}

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import moment from 'moment';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import ModalEditMemo from '../../component/modal_edit_memo';
@ -33,36 +32,36 @@ const MeetingDetail = (props) => {
const [thumbnail, setThumbnail] = useState(null);
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
let father_id = document.getElementById('father_id').value;
setLoaded(false);
axios.get(`/api/fathers/meetings/detail/${props.match.params?.meeting_id}`, {params: { father_id: father_id}})
.then((response) => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
var total=0, num=0;
for(var i in list.approval)
{
if(list.approval[i].approval_at) num ++;
total ++;
await axios.get(`/api/fathers/meetings/detail/${props.match.params?.meeting_id}`, {params: { father_id: father_id}})
.then((response) => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
var total=0, num=0;
for(var i in list.approval)
{
if(list.approval[i].approval_at) num ++;
total ++;
}
setMeeting({...list, denominator:total, numerator:num});
setThumbnail(response.data.params.meeting_image[0]?.image);
}
setMeeting({...list, denominator:total, numerator:num});
setThumbnail(response.data.params.meeting_image[0]?.image);
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
}, []);
//-------------------------------------------------------------
@ -74,22 +73,22 @@ const MeetingDetail = (props) => {
},[]);
const handleAcceptDelete = () => {
const handleAcceptDelete = async () => {
setSubmitDelete(true);
axios.delete(`/api/fathers/meetings/delete/${props.match.params?.meeting_id}`)
.then(response => {
setNotice(response.data.notice);
setSubmitDelete(false);
setShowDeleteModal(false);
switch(response.data.status_code){
case 200: {
history.push({ pathname: "/p-account/meeting",
state: "ミーティングの削除に成功しました!" });
break;
await axios.delete(`/api/fathers/meetings/delete/${props.match.params?.meeting_id}`)
.then(response => {
setNotice(response.data.notice);
setSubmitDelete(false);
setShowDeleteModal(false);
switch(response.data.status_code){
case 200: {
history.push({ pathname: "/p-account/meeting",
state: "ミーティングの削除に成功しました!" });
break;
}
case 400: set400Error('ミーティングの削除に失敗しました。'); break;
}
case 400: set400Error('ミーティングの削除に失敗しました。'); break;
}
});
});
};
@ -97,8 +96,8 @@ const MeetingDetail = (props) => {
const formdata = new FormData();
formdata.append('meeting_id', meetingId);
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response => {setNotice(response.data.notice)})
await axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response => {setNotice(response.data.notice)})
const updatedItem = {
...meeting,
is_favorite: currentFavorite == 1 ? 0 : 1,
@ -106,35 +105,35 @@ const MeetingDetail = (props) => {
setMeeting(updatedItem);
};
const handleNotifyAllChild = () => {
const handleNotifyAllChild = async () => {
setSubmitNotify(true);
axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params:{meeting_id: props.match.params?.meeting_id}})
.then(response => {
setNotice(response.data.notice);
if(response.data.status_code == 200){
var list = response.data.params;
const email_list = [];
for(var i in list){
email_list.push(list[i].child.email);
}
const formdata = new FormData();
formdata.append('email', JSON.stringify(email_list));
formdata.append('meeting_id', props.match.params.meeting_id);
axios.post('/api/fathers/meetingEditNotification', formdata)
.then(response=>{
setSubmitNotify(false);
setShowNotifySelectModal(false);
switch(response.data.status_code){
case 200: setSuccess('通知に成功しました!'); break;
case 400: set400Error('通知に失敗しました。'); break;
await axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params:{meeting_id: props.match.params?.meeting_id}})
.then(response => {
setNotice(response.data.notice);
if(response.data.status_code == 200){
var list = response.data.params;
const email_list = [];
for(var i in list){
email_list.push(list[i].child.email);
}
})
}
});
const formdata = new FormData();
formdata.append('email', JSON.stringify(email_list));
formdata.append('meeting_id', props.match.params.meeting_id);
axios.post('/api/fathers/meetingEditNotification', formdata)
.then(response=>{
setSubmitNotify(false);
setShowNotifySelectModal(false);
switch(response.data.status_code){
case 200: setSuccess('通知に成功しました!'); break;
case 400: set400Error('通知に失敗しました。'); break;
}
})
}
});
}
const handleUpdateMemo = (modal_memo) => {
const handleUpdateMemo = async (modal_memo) => {
let _tmp = meeting;
_tmp.memo = modal_memo;
setMeeting(_tmp);
@ -142,7 +141,7 @@ const MeetingDetail = (props) => {
meeting_id: meeting.id,
memo: modal_memo
}
axios.put('/api/fathers/meetings/updateMemo', post)
await axios.put('/api/fathers/meetings/updateMemo', post)
}

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { LoadingButton } from '@material-ui/lab';
import IconButton from '@mui/material/IconButton';
import RemoveIcon from '@mui/icons-material/Remove';
@ -14,7 +13,6 @@ import UploadingProgress from '../../component/modal_uploading';
const REGISTED_IMAGE_ID = -100; //
const MeetingEdit = (props) => {
@ -46,49 +44,49 @@ const MeetingEdit = (props) => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect(async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get(`/api/fathers/meetings/detail/${meeting_id}`, {params: { father_id: father_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMeeting(response.data.params);
setTitle(response.data.params?.title);
setMemo(response.data.params.memo ? response.data.params.memo: '');
setText(response.data.params.text ? response.data.params.text: '');
setMeetingImages(response.data.params?.meeting_image);
setApproval(response.data.params?.approval);
setPdf(response.data.params?.pdf);
setPDFURL(response.data.params?.pdf);
var list = [...response.data.params?.children];
var approval = [...response.data.params?.approval];
var arr = [];
for(var i in list){
if(approval.findIndex(ele=>ele.child_id == list[i].id) >= 0)
arr.push({...list[i], checked: true});
else arr.push({...list[i], checked: false});
await axios.get(`/api/fathers/meetings/detail/${meeting_id}`, {params: { father_id: father_id}})
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setMeeting(response.data.params);
setTitle(response.data.params?.title);
setMemo(response.data.params.memo ? response.data.params.memo: '');
setText(response.data.params.text ? response.data.params.text: '');
setMeetingImages(response.data.params?.meeting_image);
setApproval(response.data.params?.approval);
setPdf(response.data.params?.pdf);
setPDFURL(response.data.params?.pdf);
var list = [...response.data.params?.children];
var approval = [...response.data.params?.approval];
var arr = [];
for(var i in list){
if(approval.findIndex(ele=>ele.child_id == list[i].id) >= 0)
arr.push({...list[i], checked: true});
else arr.push({...list[i], checked: false});
}
setChildrenList(arr);
if((approval.length==list.length) && approval.length > 0)
setCheckRadio('all_send');
else if((approval.length != list.length) && approval.length > 0)
setCheckRadio('pickup_send');
else setCheckRadio('');
}
setChildrenList(arr);
if((approval.length==list.length) && approval.length > 0)
setCheckRadio('all_send');
else if((approval.length != list.length) && approval.length > 0)
setCheckRadio('pickup_send');
else setCheckRadio('');
}
else{
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
else{
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
}, []);
//-------------------------------------------------------------
@ -120,7 +118,7 @@ useEffect(()=>{
},[check_radio])
//----------------------------------------------------------------------
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({title:'',memo:'',text:'',pdf:'',image:''});
@ -139,27 +137,29 @@ useEffect(()=>{
const formdata = new FormData();
formdata.append('children', JSON.stringify(approval_registerIndexes));
axios.post('/api/fathers/meeting/approvals/register', formdata, {params:{meeting_id: meeting_id}})
axios.delete('/api/fathers/meeting/approvals/delete', {params:{children: approval_deleteIndexes, meeting_id: meeting_id}})
await axios.post('/api/fathers/meeting/approvals/register', formdata, {params:{meeting_id: meeting_id}})
await axios.delete('/api/fathers/meeting/approvals/delete', {params:{children: approval_deleteIndexes, meeting_id: meeting_id}})
const request = { title: title, text: text, memo: memo, pdf: pdf };
setSubmit(true);
axios.put(`/api/fathers/meetings/update/${meeting_id}`, request)
.then(response => {
setNotice(response.data.notice);
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/p-account/meeting/detail/${meeting_id}`,
state: "編集が完了しました!"
});
break;
await axios.put(`/api/fathers/meetings/update/${meeting_id}`, request)
.then(response => {
setNotice(response.data.notice);
setSubmit(false);
switch(response.data.status_code){
case 200: {
history.push({
pathname: `/p-account/meeting/detail/${meeting_id}`,
state: "編集が完了しました!"
});
break;
}
case 400: set400Error("編集が失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error("編集が失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
});
}
@ -182,34 +182,35 @@ useEffect(()=>{
}))
});
Promise.all(promises).then(images => {
Promise.all(promises).then( async images => {
set422Errors({image:''});
const formdata = new FormData();
formdata.append('image', JSON.stringify(images));
setImageSending(true);
axios.post(`/api/fathers/meeting/images/register`, formdata, {params:{meeting_id: meeting_id}})
.then(response=>{
setImageSending(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: setMeetingImages(response.data.params); break;
case 400: set400Error("画像の登録に失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
await axios.post(`/api/fathers/meeting/images/register`, formdata, {params:{meeting_id: meeting_id}})
.then(response=>{
setImageSending(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200: setMeetingImages(response.data.params); break;
case 400: set400Error("画像の登録に失敗しました。"); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
},
error => { console.error(error); });
};
const handleDeleteImage = (index, image_id) => {
axios.delete(`/api/fathers/meeting/images/delete/${meeting_id}`, {params:{image_id: image_id}})
.then(response=>{
setNotice(response.data.notice);
switch(response.data.status_code){
case 400: set400Error("画像の削除に失敗しました。");
}
})
const handleDeleteImage = async (index, image_id) => {
await axios.delete(`/api/fathers/meeting/images/delete/${meeting_id}`, {params:{image_id: image_id}})
.then(response=>{
setNotice(response.data.notice);
switch(response.data.status_code){
case 400: set400Error("画像の削除に失敗しました。");
}
})
let list = [...meeting_image];
list.splice(index, 1);
setMeetingImages(list);

ファイルの表示

@ -1,6 +1,5 @@
import React, { useRef, useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import { Link } from 'react-router-dom';
import moment from 'moment';
import Notification from '../notification';
@ -45,13 +44,39 @@ const Meeting = (props) => {
},[loaded1, loaded2])
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
let father_id = document.getElementById('father_id').value;
axios.get('/api/fathers/meetings/listOfIncompleteOfFather', {params:{father_id: father_id}})
.then(response => {
setLoaded1(true);
await axios.get('/api/fathers/meetings/listOfIncompleteOfFather', {params:{father_id: father_id}})
.then(response => {
setLoaded1(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
var arr = [];
for(var i in list){
var total=0, num=0;
for(var j in list[i].approvals)
{
if(list[i].approvals[j].approval_at) num ++;
total ++;
}
arr.push({...list[i], denominator:total, numerator:num})
}
setMeetingListOfIncomplete(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE));
else setFetchMeetingListOfIncomplete(arr.slice(0, len));
}
})
.catch(err=>console.log(err));
await axios.get('/api/fathers/meetings/listOfCompleteOfFather', {params:{father_id: father_id}})
.then(response => {
setLoaded2(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
@ -65,36 +90,14 @@ const Meeting = (props) => {
}
arr.push({...list[i], denominator:total, numerator:num})
}
setMeetingListOfIncomplete(arr);
setMeetingListOfComplete(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE));
else setFetchMeetingListOfIncomplete(arr.slice(0, len));
}
})
axios.get('/api/fathers/meetings/listOfCompleteOfFather', {params:{father_id: father_id}})
.then(response => {
setLoaded2(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
var arr = [];
for(var i in list){
var total=0, num=0;
for(var j in list[i].approvals)
{
if(list[i].approvals[j].approval_at) num ++;
total ++;
}
arr.push({...list[i], denominator:total, numerator:num})
setFetchMeetingListOfComplete(arr.slice(0, INFINITE));
else setFetchMeetingListOfComplete(arr.slice(0, len));
}
setMeetingListOfComplete(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingListOfComplete(arr.slice(0, INFINITE));
else setFetchMeetingListOfComplete(arr.slice(0, len));
}
})
})
.catch(err=>console.log(err));
},[]);
const fetchMoreListNonApproval = () => {
@ -119,12 +122,12 @@ const Meeting = (props) => {
}, SCROLL_DELAY_TIME);
};
const handleFavorite = (meetingId, currentFavorite, stateName) => {
const handleFavorite = async (meetingId, currentFavorite, stateName) => {
const formdata = new FormData();
formdata.append('meeting_id', meetingId);
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response=>{ setNotice(response.data.notice)});
await axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response=>{ setNotice(response.data.notice)});
if(stateName == "inCompleteOfFather") {
const newList1 = meeting_list_incomplete.map((item) => {

ファイルの表示

@ -31,34 +31,34 @@ const ProfileEdit = () => {
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get(`/api/fathers/detail/${father_id}`)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200) {
setParams(response.data.params);
setCompany(response.data.params?.company);
setEmail(response.data.params?.email);
setTel(response.data.params?.tel);
setProfile(response.data.params.profile ? response.data.params.profile: '');
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
await axios.get(`/api/fathers/detail/${father_id}`)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200) {
setParams(response.data.params);
setCompany(response.data.params?.company);
setEmail(response.data.params?.email);
setTel(response.data.params?.tel);
setProfile(response.data.params.profile ? response.data.params.profile: '');
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
}, []);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({ company:'', email: '', tel: '', profile:'' });
const request = {
@ -68,22 +68,22 @@ const ProfileEdit = () => {
profile: profile
}
setSubmit(true);
axios.put(`/api/fathers/updateProfile/${father_id}`, request)
.then(response => {
setNotice(response.data.notice);
setSubmit(false);
switch(response.data.status_code){
case 200:{
history.push({
pathname: '/p-account/profile',
state: response.data.success_messages
});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
await axios.put(`/api/fathers/updateProfile/${father_id}`, request)
.then(response => {
setNotice(response.data.notice);
setSubmit(false);
switch(response.data.status_code){
case 200:{
history.push({
pathname: '/p-account/profile',
state: response.data.success_messages
});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
}

ファイルの表示

@ -1,7 +1,6 @@
import React, { useRef, useEffect, useState } from 'react';
import { useHistory, Link } from 'react-router-dom';
import IconButton from "@material-ui/core/IconButton";
import axios from 'axios';
import PhotoCameraOutlinedIcon from '@mui/icons-material/PhotoCameraOutlined';
import Alert from '../../component/alert';
@ -24,28 +23,28 @@ const Profile = (props) => {
const father_id = document.getElementById('father_id').value;
const isMountedRef = useRef(true);
useEffect(() => {
useEffect( async () => {
isMountedRef.current = false;
setLoaded(false);
axios.get('/api/fathers/detail/'+father_id)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setProfile(response.data.params);
setImage(response.data.params.image);
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
await axios.get('/api/fathers/detail/'+father_id)
.then(response => {
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
setProfile(response.data.params);
setImage(response.data.params.image);
}
else {
set400Error("失敗しました。");
}
})
.catch(err=>{
setLoaded(true);
setNotice(err.response.data.notice);
if(err.response.status==404){
set404Error(err.response.data.message);
}
})
},[]);
useEffect(() => {
@ -55,9 +54,9 @@ const Profile = (props) => {
}
})
const handleLogout = () => {
axios.get('/p-account/logout')
.then(() => location.href = '/p-account/login')
const handleLogout = async () => {
await axios.get('/p-account/logout')
.then(() => location.href = '/p-account/login')
}
const handleImageChange = (e) => {
@ -66,23 +65,23 @@ const Profile = (props) => {
let reader = new FileReader();
let _file = e.target.files[0];
reader.readAsDataURL(_file);
reader.onloadend = () => {
reader.onloadend = async () => {
set422Errors({image: ''});
setSubmitImage(true);
axios.put(`/api/fathers/updateImage/${father_id}`, {image: reader.result})
.then(response => {
setNotice(response.data.notice);
setSubmitImage(false);
switch(response.data.status_code){
case 200: {
localStorage.setItem('image_upload_success', response.data.success_messages);
window.location.reload(true);
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
await axios.put(`/api/fathers/updateImage/${father_id}`, {image: reader.result})
.then(response => {
setNotice(response.data.notice);
setSubmitImage(false);
switch(response.data.status_code){
case 200: {
localStorage.setItem('image_upload_success', response.data.success_messages);
window.location.reload(true);
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
});
};
};

ファイルの表示

@ -1,4 +1,4 @@
import { useEffect, useState } from 'react';
import { useState } from 'react';
import { useHistory } from 'react-router-dom';
import { LoadingButton } from '@material-ui/lab';
import Notification from '../notification';
@ -21,7 +21,7 @@ const ProfilePasswordEdit = () => {
const [submit, setSubmit] = useState(false);
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
set422Errors({
password:'',
@ -32,22 +32,22 @@ const ProfilePasswordEdit = () => {
password: password,
password_confirmation: password_confirmation
}
axios.put(`/api/fathers/updatePassword/${father_id}`, post)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200:{
history.push({
pathname: '/p-account/profile',
state: response.data.success_messages
});
break;
await axios.put(`/api/fathers/updatePassword/${father_id}`, post)
.then(response => {
setSubmit(false);
setNotice(response.data.notice);
switch(response.data.status_code){
case 200:{
history.push({
pathname: '/p-account/profile',
state: response.data.success_messages
});
break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
case 400: set400Error(response.data.error_messages); break;
case 422: window.scrollTo(0, 0); set422Errors(response.data.error_messages); break;
}
})
})
}
return (

ファイルの表示

@ -9,10 +9,11 @@ const ProfileWithdrawal = () => {
const [submit, setSubmit] = useState(false);
const [_400error, set400Error] = useState('');
const handleSubmit = (e) => {
const handleSubmit = async (e) => {
e.preventDefault();
setSubmit(true);
axios.delete('/api/fathers/withdrawal', {params:{father_id: father_id}})
await axios.delete('/api/fathers/withdrawal', {params:{father_id: father_id}})
.then(response => {
setSubmit(false);
setNotice(response.data.notice);

ファイルの表示

@ -1,6 +1,5 @@
import React, { useEffect, useState } from 'react';
import axios from 'axios';
import { useHistory, Link } from 'react-router-dom';
import { Link } from 'react-router-dom';
import moment from 'moment';
import IconButton from '@mui/material/IconButton';
import SearchIcon from '@mui/icons-material/Search';
@ -9,7 +8,6 @@ import Notification from '../notification';
import Alert from '../../component/alert';
import PageLoader from '../../component/page_loader';
import InfiniteScroll from "react-infinite-scroll-component";
import { isObject } from 'lodash';
const INFINITE = 10;
const SCROLL_DELAY_TIME = 1500;
@ -38,7 +36,7 @@ const Search = (props) => {
},[loaded1, loaded2])
const handleSearch = (e) => {
const handleSearch = async (e) => {
e.preventDefault();
if(keyword == ''){
document.getElementById('keyword').focus();
@ -50,9 +48,33 @@ const Search = (props) => {
let father_id = document.getElementById('father_id').value;
axios.get('/api/fathers/meetings/searchOfIncompleteOfFather', {params:{father_id: father_id, keyword: keyword,}})
.then(response => {
setLoaded1(true);
await axios.get('/api/fathers/meetings/searchOfIncompleteOfFather', {params:{father_id: father_id, keyword: keyword,}})
.then(response => {
setLoaded1(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
var arr = [];
for(var i in list){
var total=0, num=0;
for(var j in list[i].approvals)
{
if(list[i].approvals[j].approval_at) num ++;
total ++;
}
arr.push({...list[i], denominator:total, numerator:num})
}
setMeetingListOfIncomplete(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE));
else setFetchMeetingListOfIncomplete(arr.slice(0, len));
}
})
await axios.get('/api/fathers/meetings/searchOfCompleteOfFather', {params:{father_id: father_id, keyword: keyword,}})
.then(response => {
setLoaded2(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
@ -66,36 +88,13 @@ const Search = (props) => {
}
arr.push({...list[i], denominator:total, numerator:num})
}
setMeetingListOfIncomplete(arr);
setMeetingListOfComplete(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE));
else setFetchMeetingListOfIncomplete(arr.slice(0, len));
}
})
axios.get('/api/fathers/meetings/searchOfCompleteOfFather', {params:{father_id: father_id, keyword: keyword,}})
.then(response => {
setLoaded2(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
var arr = [];
for(var i in list){
var total=0, num=0;
for(var j in list[i].approvals)
{
if(list[i].approvals[j].approval_at) num ++;
total ++;
}
arr.push({...list[i], denominator:total, numerator:num})
setFetchMeetingListOfComplete(arr.slice(0, INFINITE));
else setFetchMeetingListOfComplete(arr.slice(0, len));
}
setMeetingListOfComplete(arr);
var len = arr.length;
if(len > INFINITE)
setFetchMeetingListOfComplete(arr.slice(0, INFINITE));
else setFetchMeetingListOfComplete(arr.slice(0, len));
}
})
})
}
@ -125,8 +124,9 @@ const Search = (props) => {
const formdata = new FormData();
formdata.append('meeting_id', meetingId);
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response=>{setNotice(response.data.notice)})
await axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response=>{setNotice(response.data.notice)})
if(stateName == "inCompleteOfFather") {
const newList = meeting_list_incomplete.map((item) => {

ファイルの表示

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react';
import React, { useState } from 'react';
import { Link } from 'react-router-dom'
export default function Side() {
@ -6,9 +6,9 @@ export default function Side() {
const father_image = document.getElementById('father_image').value;
const handleLogout = () => {
axios.get('/p-account/logout')
.then(() => location.href = '/p-account/login')
const handleLogout = async () => {
await axios.get('/p-account/logout')
.then(() => location.href = '/p-account/login')
}
const handleSelected = (id) => {

ファイルの表示

@ -114,6 +114,11 @@ input[type=radio]+.lbl::before {
height: 27px;
}
input[type=checkbox].is-invalid+.lbl::before,
input[type=radio].is-invalid+.lbl::before{
border-color: #ff9999;
}
input[type=checkbox]:checked+.lbl::before,
input[type=radio]:checked+.lbl::before {
display: inline-block;

ファイルの表示

@ -209,6 +209,41 @@ a{
}
.term-link{
color: #002bff;
text-decoration: underline !important;
}
.term-wrap{
max-width: 625px;
width: 100%;
font-size: 14px;
font-family: Yu Gothic;
.text-gray{ color: #a7a7a7;}
ul{
list-style: auto;
padding-left: 1.5em;
margin: 1em 0;
li{ margin-bottom: 1em;}
}
.ttl{
font-size: 16px;
font-weight: bold;
margin: 2em 0 1em 0;
}
}
.css-loader-pane{
width: 100vw;
height: 100vh;
left: 0;
top: 0;
position: fixed;
z-index: 100;
// background-color: rgb(0,0,0, 0.3);
}
/////////////////////////////////////////////////////////////////////////
@media screen and (min-width: 1068px){

ファイルの表示

@ -88,4 +88,16 @@ categories: [layout]
max-width: 560px;
}
}
&-w1024{
margin: 0 auto;
max-width: 1024px;
width: 100%;
}
&-w786{
margin: 0 auto;
max-width: 786px;
width: 100%;
}
}

ファイルの表示

@ -1,6 +1,6 @@
@extends('common.layout')
@section('title', 'KIKI|お問い合わせ')
@section('title', 'KIKI')
@section('content')
<main class="l-single-main l-sign-up">

ファイルの表示

@ -0,0 +1,100 @@
@extends('common.layout')
@section('title', 'KIKI')
@section('content')
<main class="l-single-main l-sign-up">
<div class="l-centeringbox">
<div class="l-centeringbox-wrap">
<div class="l-single-container term-wrap">
<p class="text-center font-weight-bold ft-22 mt-5">プライバシーポリシー</p>
<p class="text-center text-gray font-weight-bold mb-5">Privacy Policy</p>
株式会社ZOTMAN(以下「当社」といいます。)は本ウェブサイト上で提供するサービス(以下,「本サービス」といいます。)におけるプライバシー情報の取扱いについて,以下のとおりプライバシーポリシー(以下,「本ポリシー」といいます。)を定めます。
<p class="ttl">第1条(プライバシー情報)</p>
<ul>
<li>プライバシー情報のうち「個人情報」とは,個人情報保護法にいう「個人情報」を指すものとし,生存する個人に関する情報であって,当該情報に含まれる氏名,生年月日,住所,電話番号,連絡先その他の記述等により特定の個人を識別できる情報を指します。</li>
<li>プライバシー情報のうち「履歴情報および特性情報」とは上記に定める「個人情報」以外のものをいいご利用いただいたサービスやご購入いただいた商品ご覧になったページや広告の履歴会員が検索された検索キーワードご利用日時ご利用の方法ご利用環境郵便番号や性別職業年齢会員のIPアドレスクッキー情報位置情報端末の個体識別情報などを指します。</li>
</ul>
<p class="ttl">第2条(プライバシー情報の収集方法)</p>
<ul>
<li>当社は,会員が利用登録をする際に氏名,生年月日,住所,電話番号,メールアドレス,銀行口座番号,クレジットカード番号,運転免許証番号などの個人情報をお尋ねすることがあります。また,会員と提携先などとの間でなされた会員の個人情報を含む取引記録や,決済に関する情報を当社の提携先(情報提供元,広告主,広告配信先などを含みます。以下,「提携先」といいます。)などから収集することがあります。</li>
<li>当社は会員について利用したサービスやソフトウエア購入した商品閲覧したページや広告の履歴検索した検索キーワード利用日時利用方法利用環境(携帯端末を通じてご利用の場合の当該端末の通信状態利用に際しての各種設定情報なども含みます)IPアドレスクッキー情報位置情報端末の個体識別情報などの履歴情報および特性情報を会員が当社や提携先のサービスを利用しまたはページを閲覧する際に収集します。</li>
</ul>
<p class="ttl">第3条(個人情報を収集・利用する目的)</p>
<p>当社が個人情報を収集・利用する目的は,以下のとおりです。</p>
<ul>
<li>会員に自分の登録情報の閲覧や修正,利用状況の閲覧を行っていただくために,氏名,住所,連絡先,支払方法などの登録情報,利用されたサービスや購入された商品,およびそれらの代金などに関する情報を表示する目的</li>
<li>会員にお知らせや連絡をするためにメールアドレスを利用する場合や会員に商品を送付したり必要に応じて連絡したりするため,氏名や住所などの連絡先情報を利用する目的</li>
<li>会員の本人確認を行うために,氏名,生年月日,住所,電話番号,銀行口座番号,クレジットカード番号,運転免許証番号,配達証明付き郵便の到達結果などの情報を利用する目的</li>
<li>会員に代金を請求するために,購入された商品名や数量,利用されたサービスの種類や期間,回数,請求金額,氏名,住所,銀行口座番号やクレジットカード番号などの支払に関する情報などを利用する目的</li>
<li>会員が簡便にデータを入力できるようにするために,当社に登録されている情報を入力画面に表示させたり,会員のご指示に基づいて他のサービスなど(提携先が提供するものも含みます)に転送したりする目的</li>
<li>代金の支払を遅滞したり第三者に損害を発生させたりするなど,本サービスの利用規約に違反した会員や,不正・不当な目的でサービスを利用しようとする会員の利用をお断りするために,利用態様,氏名や住所など個人を特定するための情報を利用する目的</li>
<li>会員からのお問い合わせに対応するために,お問い合わせ内容や代金の請求に関する情報など当社が会員に対してサービスを提供するにあたって必要となる情報や,会員のサービス利用状況,連絡先情報などを利用する目的</li>
<li>上記の利用目的に付随する目的</li>
</ul>
<p class="ttl">第4条(個人情報の第三者提供)</p>
<ul>
<li>当社は,次に掲げる場合を除いて,あらかじめ会員の同意を得ることなく,第三者に個人情報を提供することはありません。ただし,個人情報保護法その他の法令で認められる場合を除きます。
<ul>
<li>法令に基づく場合</li>
<li>人の生命,身体または財産の保護のために必要がある場合であって,本人の同意を得ることが困難であるとき</li>
<li>公衆衛生の向上または児童の健全な育成の推進のために特に必要がある場合であって,本人の同意を得ることが困難であるとき</li>
<li>国の機関もしくは地方公共団体またはその委託を受けた者が法令の定める事務を遂行することに対して協力する必要がある場合であって,本人の同意を得ることにより当該事務の遂行に支障を及ぼすおそれがあるとき</li>
<li>予め次の事項を告知あるいは公表をしている場合
<ul>
<li>利用目的に第三者への提供を含むこと</li>
<li>第三者に提供されるデータの項目</li>
<li>第三者への提供の手段または方法</li>
<li>本人の求めに応じて個人情報の第三者への提供を停止すること</li>
</ul>
</li>
</ul>
</li>
<li>前項の定めにかかわらず,次に掲げる場合は第三者には該当しないものとします。
<ul>
<li>当社が利用目的の達成に必要な範囲内において個人情報の取扱いの全部または一部を委託する場合</li>
<li>合併その他の事由による事業の承継に伴って個人情報が提供される場合</li>
<li>個人情報を特定の者との間で共同して利用する場合であって,その旨並びに共同して利用される個人情報の項目,共同して利用する者の範囲,利用する者の利用目的および当該個人情報の管理について責任を有する者の氏名または名称について,あらかじめ本人に通知し,または本人が容易に知り得る状態に置いているとき</li>
</ul>
</li>
</ul>
<p class="ttl">第5条(個人情報の開示)</p>
<ul>
<li>当社は本人から個人情報の開示を求められたときは本人に対し遅滞なくこれを開示します。ただし開示することにより次のいずれかに該当する場合はその全部または一部を開示しないこともあり開示しない決定をした場合にはその旨を遅滞なく通知します。なお個人情報の開示に際しては件あたり100,000円の手数料を申し受けます。
<ul>
<li>本人または第三者の生命,身体,財産その他の権利利益を害するおそれがある場合</li>
<li>当社の業務の適正な実施に著しい支障を及ぼすおそれがある場合</li>
<li>その他法令に違反することとなる場合</li>
</ul>
</li>
<li>前項の定めにかかわらず,履歴情報および特性情報などの個人情報以外の情報については,原則として開示いたしません。</li>
</ul>
<p class="ttl">第6条(個人情報の訂正および削除)</p>
<ul>
<li>会員は,当社の保有する自己の個人情報が誤った情報である場合には,当社が定める手続きにより,当社に対して個人情報の訂正または削除を請求することができます。</li>
<li>当社は,会員から前項の請求を受けてその請求に応じる必要があると判断した場合には,遅滞なく,当該個人情報の訂正または削除を行い,これを会員に通知します。</li>
</ul>
<p class="ttl">第7条(個人情報の利用停止等)</p>
<p>囲を超えて取り扱われているという理由,または不正の手段により取得されたものであるという理由により,その利用の停止または消去(以下,「利用停止等」といいます。)を求められた場合には,遅滞なく必要な調査を行い,その結果に基づき,個人情報の利用停止等を行い,その旨本人に通知します。ただし,個人情報の利用停止等に多額の費用を有する場合その他利用停止等を行うことが困難な場合であって,本人の権利利益を保護するために必要なこれに代わるべき措置をとれる場合は,この代替策を講じます。</p>
<p class="ttl">第8条(プライバシーポリシーの変更)</p>
<ul>
<li>本ポリシーの内容は,会員に通知することなく,変更することができるものとします。</li>
<li>当社が別途定める場合を除いて,変更後のプライバシーポリシーは,本ウェブサイトに掲載したときから効力を生じるものとします。</li>
</ul>
<p class="ttl">第9条(お問い合わせ窓口)</p>
<p>本ポリシーに関するお問い合わせは,下記の窓口までお願いいたします。<br><br>Eメールアドレス<b><a href='mailto:56@zotman.jp'>56@zotman.jp</a></b></p>
</div>
</div>
</div>
</main>
@endsection

141
backend/resources/views/pages/terms.blade.php ノーマルファイル
ファイルの表示

@ -0,0 +1,141 @@
@extends('common.layout')
@section('title', 'KIKI')
@section('content')
<main class="l-single-main l-sign-up">
<div class="l-centeringbox">
<div class="l-centeringbox-wrap">
<div class="l-single-container term-wrap">
<p class="text-center font-weight-bold ft-22 mt-5">利用規約</p>
<p class="text-center text-gray font-weight-bold mb-5">Terms of service</p>
この利用規約(以下「本規約」といいます。)は株式会社ZOTMAN(以下「当社」といいます。)がこのサイト上で提供するサービス(以下「本サービス」といいます。)の利用条件を定めるものです。登録会員の皆さま(以下「会員」といいます。)には本規約に従って本サービスをご利用いただきます。
<p class="ttl">第1条(適用)</p>
<p>本規約は,加盟店及び会員と当社との間の本サービスの利用に関わる一切の関係に適用されるものとします。</p>
<p class="ttl">第2条(利用登録)</p>
<ul>
<li>登録希望者が当社の定める方法によって利用登録を申請し,当社がこれを承認することによって,利用登録が完了するものとします。</li>
<li>当社は,利用登録の申請者に以下の事由があると判断した場合,利用登録の申請を承認しないことがあり,その理由については一切の開示義務を負わないものとします。
<ul>
<li>利用登録の申請に際して虚偽の事項を届け出た場合</li>
<li>本規約に違反したことがある者からの申請である場合</li>
<li>未成年者,成年被後見人,被保佐人または被補助人のいずれかであり,法定代理人,後見人,保佐人または補助人の同意等を得ていなかった場合</li>
<li>反社会的勢力等(暴力団,暴力団員,右翼団体,反社会的勢力,その他これに準ずる者を意味します。)である,または資金提供その他を通じて反社会的勢力等の維持,運営もしくは経営に協力もしくは関与する等反社会的勢力との何らかの交流もしくは関与を行っていると当社が判断した場合</li>
<li>その他,当社が利用登録を相当でないと判断した場合</li>
</ul>
</li>
</ul>
<p class="ttl">第3条(会員IDおよびパスワードの管理)</p>
<ul>
<li>加盟店及び会員は自己の責任において本サービスの会員IDおよびパスワードを管理するものとします。</li>
<li>加盟店及び会員はいかなる場合にも会員IDおよびパスワードを第三者に譲渡または貸与することはできません。当社は加盟店及び会員IDとパスワードの組み合わせが登録情報と一致してログインされた場合にはその会員IDを登録している会員自身による利用とみなします。</li>
</ul>
<p class="ttl">第4条(利用料金および支払、返金方法)</p>
<ul>
<li>加盟店及び会員は,本サービス利用の対価として,当社が別途定め,本サービスに表示する利用料金を,当社が指定する方法により支払うものとします。</li>
<li>加盟店が利用料金の支払を遅滞した場合には加盟店は年146の割合による遅延損害金を支払うものとします。</li>
<li>運営者からの返金はいかなる理由であろうと不可とする。</li>
<li>退会や広告掲載の終了をユーザーから申請がない限り自動更新され以降課金は継続されます。</li>
<li>広告掲載期間未満で広告契約の終了を申し出た場合は残りの掲載期間月の掲載料金を一括で課金することにより掲載を終了できます。</li>
</ul>
<p class="ttl">第5条(禁止事項)</p>
<p>加盟店及び会員は,本サービスの利用にあたり,以下の行為をしてはなりません。</p>
<ul>
<li>法令または公序良俗に違反する行為</li>
<li>犯罪行為に関連する行為</li>
<li>当社のサーバーまたはネットワークの機能を破壊したり,妨害したりする行為</li>
<li>当社のサービスの運営を妨害するおそれのある行為</li>
<li>他の会員に関する個人情報等を収集または蓄積する行為</li>
<li>他の会員に成りすます行為</li>
<li>当社のサービスに関連して,反社会的勢力に対して直接または間接に利益を供与する行為</li>
<li>当社,本サービスの他の利用者または第三者の知的財産権,肖像権,プライバシー,名誉その他の権利または利益を侵害する行為</li>
<li>過度に暴力的な表現,露骨な性的表現,人種,国籍,信条,性別,社会的身分,門地等による差別につながる表現,自殺,自傷行為,薬物乱用を誘引または助長する表現,その他反社会的な内容を含み他人に不快感を与える表現を,投稿または送信する行為</li>
<li>営業,宣伝,広告,勧誘,その他営利を目的とする行為(当社の認めたものを除きます。),性行為やわいせつな行為を目的とする行為,面識のない異性との出会いや交際を目的とする行為,他のお客様に対する嫌がらせや誹謗中傷を目的とする行為,その他本サービスが予定している利用目的と異なる目的で本サービスを利用する行為</li>
<li>宗教活動または宗教団体への勧誘行為</li>
<li>その他,当社が不適切と判断する行為</li>
</ul>
<p class="ttl">第6条(本サービスの提供の停止等)</p>
<ul>
<li>法令または公当社は,以下のいずれかの事由があると判断した場合,加盟店及び会員に事前に通知することなく本サービスの全部または一部の提供を停止または中断することができるものとします。序良俗に違反する行為
<ul>
<li>本サービスにかかるコンピュータシステムの保守点検または更新を行う場合</li>
<li>地震,落雷,火災,停電または天災などの不可抗力により,本サービスの提供が困難となった場合</li>
<li>コンピュータまたは通信回線等が事故により停止した場合</li>
<li>その他,当社が本サービスの提供が困難と判断した場合</li>
</ul>
</li>
<li>当社は,本サービスの提供の停止または中断により,会員または第三者が被ったいかなる不利益または損害について,理由を問わず一切の責任を負わないものとします。</li>
</ul>
<p class="ttl">第7条(著作権)</p>
<ul>
<li>加盟店及び会員は,自ら著作権等の必要な知的財産権を有するか,または必要な権利者の許諾を得た文章,画像や映像等の情報のみ,本サービスを利用し,投稿または編集することができるものとします。</li>
<li>加盟店と会員が本サービスを利用して投稿または編集した文章,画像,映像等の著作権については,当該会員その他既存の権利者に留保されるものとします。ただし,当社は,本サービスを利用して投稿または編集された文章,画像,映像等を利用できるものとし,加盟店及び会員は,この利用に関して,著作者人格権を行使しないものとします。</li>
<li>前項本文の定めるものを除き,本サービスおよび本サービスに関連する一切の情報についての著作権およびその他知的財産権はすべて当社または当社にその利用を許諾した権利者に帰属し,加盟店及び会員は無断で複製,譲渡,貸与,翻訳,改変,転載,公衆送信(送信可能化を含みます。),伝送,配布,出版,営業使用等をしてはならないものとします。</li>
</ul>
<p class="ttl">第8条(利用制限および登録抹消)</p>
<ul>
<li>当社は,以下の場合には,事前の通知なく,投稿データを削除し,加盟店及び会員に対して本サービスの全部もしくは一部の利用を制限しまたは加盟店及び会員の登録を抹消することができるものとします。
<ul>
<li>本規約のいずれかの条項に違反した場合</li>
<li>登録事項に虚偽の事実があることが判明した場合</li>
<li>破産,民事再生,会社更生または特別清算の手続開始決定等の申立がなされたとき</li>
<li>1年間以上本サービスの利用がない場合</li>
<li>当社からの問い合わせその他の回答を求める連絡に対して30日間以上応答がない場合</li>
<li>第2条第2項各号に該当する場合</li>
<li>その他,当社が本サービスの利用を適当でないと判断した場合</li>
</ul>
</li>
<li>項各号のいずれかに該当した場合,加盟店及び会員は,当然に当社に対する一切の債務について期限の利益を失い,その時点において負担する一切の債務を直ちに一括して弁済しなければなりません。</li>
<li>当社は,本条に基づき当社が行った行為により加盟店及び会員に生じた損害について,一切の責任を負いません。</li>
</ul>
<p class="ttl">第9条(保証の否認および免責事項)</p>
<ul>
<li>当社は,本サービスに事実上または法律上の瑕疵(安全性,信頼性,正確性,完全性,有効性,特定の目的への適合性,セキュリティなどに関する欠陥,エラーやバグ,権利侵害などを含みます。)がないことを明示的にも黙示的にも保証しておりません。</li>
<li>当社は,本サービスに起因して加盟店及び会員に生じたあらゆる損害について一切の責任を負いません。ただし,本サービスに関する当社と加盟店及び会員との間の契約(本規約を含みます。)が消費者契約法に定める消費者契約となる場合,この免責規定は適用されません。</li>
<li>前項ただし書に定める場合であっても,当社は,当社の過失による債務不履行または不法行為により加盟店及び会員に生じた損害のうち特別な事情から生じた損害(当社または加盟店及び会員が損害発生につき予見し,または予見し得た場合を含みます。)について一切の責任を負いません。また,当社の過失による債務不履行または不法行為により加盟店及び会員に生じた損害の賠償は,加盟店と会員から当該損害が発生した月に受領した利用料の10%額を上限とします。</li>
<li>当社は,本サービスに関して,加盟店と会員と他の加盟店及び会員または第三者との間において生じた取引,連絡または紛争等について一切責任を負いません。</li>
</ul>
<p class="ttl">第10条(サービス内容の変更等)</p>
<p>当社は,会員に通知することなく,本サービスの内容を変更しまたは本サービスの提供を中止することができるものとし,これによって加盟店及び会員に生じた損害について一切の責任を負いません。</p>
<p class="ttl">第11条(利用規約の変更)</p>
<p>当社は,必要と判断した場合には,加盟店及び会員に通知することなくいつでも本規約を変更することができるものとします。</p>
<p class="ttl">第12条(通知または連絡)</p>
<p>加盟店及び会員と当社との間の通知または連絡は,当社の定める方法によって行うものとします。</p>
<p class="ttl">第13条(権利義務の譲渡の禁止)</p>
<p>加盟店及び会員は,当社の書面による事前の承諾なく,利用契約上の地位または本規約に基づく権利もしくは義務を第三者に譲渡し,または担保に供することはできません。</p>
<p class="ttl">第14条(準拠法・裁判管轄)</p>
<ul>
<li>本規約の解釈にあたっては,日本法を準拠法とします。</li>
<li>本サービスに関して紛争が生じた場合には,当社の本店所在地を管轄する裁判所を専属的合意管轄とします。</li>
</ul>
<p class="mt-5 text-right">以上</p>
</div>
</div>
</div>
</main>
@endsection

ファイルの表示

@ -67,6 +67,8 @@ Route::group(['prefix' => 'contact-us'], function () {
Route::get('/complete', function () { return view('pages.contact'); });
});
Route::get('/unknown-error ', function () { return view('pages.contact'); });
Route::get('/terms', function () { return view('pages.terms'); });
Route::get('/privacy-policy', function () { return view('pages.privacy'); });
// ---------------------------------------- Child Account ------------------------------------------- //
Route::group(['prefix' => 'c-account'], function () {