fixed css & size & ... in admin
このコミットが含まれているのは:
コミット
12c23c0d42
|
@ -11313,59 +11313,59 @@ input[type=date].hide-calender::-webkit-inner-spin-button, input[type=date].hide
|
|||
}
|
||||
|
||||
.ft-12 {
|
||||
font-size: 12px;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.ft-13 {
|
||||
font-size: 13px;
|
||||
font-size: 13px !important;
|
||||
}
|
||||
|
||||
.ft-14 {
|
||||
font-size: 14px;
|
||||
font-size: 14px !important;
|
||||
}
|
||||
|
||||
.ft-15 {
|
||||
font-size: 15px;
|
||||
font-size: 15px !important;
|
||||
}
|
||||
|
||||
.ft-16 {
|
||||
font-size: 16px;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.ft-17 {
|
||||
font-size: 17px;
|
||||
font-size: 17px !important;
|
||||
}
|
||||
|
||||
.ft-18 {
|
||||
font-size: 18px;
|
||||
font-size: 18px !important;
|
||||
}
|
||||
|
||||
.ft-19 {
|
||||
font-size: 19px;
|
||||
font-size: 19px !important;
|
||||
}
|
||||
|
||||
.ft-20 {
|
||||
font-size: 20px;
|
||||
font-size: 20px !important;
|
||||
}
|
||||
|
||||
.ft-22 {
|
||||
font-size: 22px;
|
||||
font-size: 22px !important;
|
||||
}
|
||||
|
||||
.ft-25 {
|
||||
font-size: 25px;
|
||||
font-size: 25px !important;
|
||||
}
|
||||
|
||||
.ft-30 {
|
||||
font-size: 30px;
|
||||
font-size: 30px !important;
|
||||
}
|
||||
|
||||
.ft-35 {
|
||||
font-size: 35px;
|
||||
font-size: 35px !important;
|
||||
}
|
||||
|
||||
.ft-40 {
|
||||
font-size: 40px;
|
||||
font-size: 40px !important;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
|
@ -12294,10 +12294,17 @@ a {
|
|||
height: 30px !important;
|
||||
}
|
||||
|
||||
.p-article__txt {
|
||||
.p-article__txt, .profile-info__item .txt {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.meeting-txt {
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1068px) {
|
||||
.p-meetingAdd-btn {
|
||||
width: 200px !important;
|
||||
|
@ -12320,6 +12327,13 @@ a {
|
|||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.search-item:first-child {
|
||||
border-top: none !important;
|
||||
}
|
||||
.search-item:last-child {
|
||||
border-bottom: none !important;
|
||||
}
|
||||
}
|
||||
@media (max-width: 575.98px) {
|
||||
.l-content__ttl h2 {
|
||||
|
|
ファイル差分が大きすぎるため省略します
差分を読み込み
|
@ -16,24 +16,27 @@ const ChildDetail = (props) => {
|
|||
const history = useHistory();
|
||||
|
||||
const [image, setImage] = useState('');
|
||||
const [open, setOpen] = useState(false);
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
const [submit, setSubmit] = useState(false);
|
||||
const [child, setChild] = useState(null);
|
||||
|
||||
|
||||
const [_400error, set400Error] = useState('');
|
||||
const [_422errors, set422Errors] = useState({ image: '' });
|
||||
const [_success_delete, setSuccessDelete] = useState('');
|
||||
const [_success_update_image, setSuccessUpdateImage] = useState('');
|
||||
|
||||
const [_success, setSuccess] = useState(props.history.location.state);
|
||||
const [show_confirm_modal, setShowConfirmModal] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
setLoaded(false);
|
||||
axios.get(`/api/admin/children/detail/${props.match.params?.child_id}`)
|
||||
.then(response => {
|
||||
setLoaded(true);
|
||||
if(response.data.status_code==200){
|
||||
setChild(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
setChild(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
break;
|
||||
}
|
||||
case 400: set400Error('失敗しました。'); break;
|
||||
}
|
||||
})
|
||||
},[]);
|
||||
|
@ -50,7 +53,7 @@ const ChildDetail = (props) => {
|
|||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
setImage(reader.result);
|
||||
setSuccessUpdateImage(response.data.success_messages);
|
||||
setSuccess(response.data.success_messages);
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
|
@ -61,30 +64,20 @@ const ChildDetail = (props) => {
|
|||
};
|
||||
|
||||
|
||||
async function openModal() {
|
||||
setOpen(true);
|
||||
};
|
||||
|
||||
async function closeModal() {
|
||||
setOpen(false);
|
||||
};
|
||||
|
||||
async function handleAcceptDelete() {
|
||||
try {
|
||||
setSubmit(true);
|
||||
axios.delete(`/api/admin/children/delete/${props.match.params?.child_id}`)
|
||||
.then(response => {
|
||||
closeModal();
|
||||
setSubmit(false);
|
||||
if(response.data.status_code == 200){
|
||||
setSuccessDelete('削除に成功しました!');
|
||||
} else {
|
||||
set400Error("削除に失敗しました。");
|
||||
setSubmit(true);
|
||||
axios.delete(`/api/admin/children/delete/${props.match.params?.child_id}`)
|
||||
.then(response => {
|
||||
setShowConfirmModal(false);
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200:{
|
||||
history.push({pathname: "/admin/child", state: "削除に成功しました!"});
|
||||
break;
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.log('error', error);
|
||||
}
|
||||
case 400: set400Error("削除に失敗しました。"); break;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
@ -103,7 +96,7 @@ const ChildDetail = (props) => {
|
|||
<div className="profile-wrap position-relative" style={{ minHeight:'500px'}}>
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'30%', left:'calc(50% - 22px)', color:'green', position:'absolute'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
{
|
||||
loaded &&
|
||||
|
@ -116,7 +109,6 @@ const ChildDetail = (props) => {
|
|||
<label htmlFor="avatar" className='avatar-label'>
|
||||
<IconButton color="primary" aria-label="upload picture" component="span" className="bg-yellow shadow-sm w-50-px h-50-px">
|
||||
<PhotoCameraOutlinedIcon style={{width:'25px', height:'25px', color:'black'}}/>
|
||||
{/* <img src="/assets/img/icon/camera.svg" width="20" height="20"/> */}
|
||||
</IconButton>
|
||||
</label>
|
||||
<img src={image} className="avatar-img" alt="avatar-img"/>
|
||||
|
@ -128,8 +120,8 @@ const ChildDetail = (props) => {
|
|||
</span>
|
||||
}
|
||||
</div>
|
||||
<p className="profile-name ft-xs-14">{`${child.first_name} ${child.last_name}`}</p>
|
||||
<div className="profile-info ft-xs-14">
|
||||
<p className="profile-name ft-18 ft-xs-16">{`${child.first_name} ${child.last_name}`}</p>
|
||||
<div className="profile-info ft-18 ft-xs-16">
|
||||
<div className="profile-info__item">
|
||||
<p className="profile-info__icon">
|
||||
<img src="/assets/img/icon/person-pin.svg" alt="Person"/>
|
||||
|
@ -161,26 +153,26 @@ const ChildDetail = (props) => {
|
|||
</div>
|
||||
|
||||
<div className="p-profile-btn">
|
||||
<Link className="btn-default btn-yellow btn-profile btn-r8 btn-h52 h-xs-45-px"
|
||||
<Link className="btn-default btn-yellow btn-profile btn-r8 btn-h52 h-xs-60-px"
|
||||
to = {`/admin/child/edit/${props.match.params?.child_id}`}
|
||||
>
|
||||
<span className="ft-18 ft-xs-14">プロフィールを変更する</span>
|
||||
<span className="ft-18 ft-xs-16">プロフィールを変更する</span>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="p-profile-btn">
|
||||
<Link className="btn-default btn-yellow btn-password btn-r8 btn-h52 h-xs-45-px"
|
||||
<Link className="btn-default btn-yellow btn-password btn-r8 btn-h52 h-xs-60-px"
|
||||
to = {`/admin/child/edit/password/${props.match.params?.child_id}`}
|
||||
>
|
||||
<span className="ft-18 ft-xs-14">パスワードを変更する</span>
|
||||
<span className="ft-18 ft-xs-16">パスワードを変更する</span>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="p-profile-txtLink">
|
||||
<a className="btn-default btn-password btn-r8 btn-h52 h-xs-45-px"
|
||||
onClick={openModal}
|
||||
<a className="btn-default btn-password btn-r8 btn-h52 h-xs-60-px"
|
||||
onClick={()=>setShowConfirmModal(true)}
|
||||
>
|
||||
<span className="ft-xs-14">削除する</span>
|
||||
<span className="ft-xs-16">削除する</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -193,27 +185,18 @@ const ChildDetail = (props) => {
|
|||
</div>
|
||||
</div>
|
||||
<ModalConfirm
|
||||
show={open}
|
||||
show={show_confirm_modal}
|
||||
message={"本当に削除しても\nよろしいでしょうか?"}
|
||||
handleClose={closeModal}
|
||||
handleClose={()=>setShowConfirmModal(false)}
|
||||
handleAccept={handleAcceptDelete}
|
||||
loading={submit}
|
||||
/>
|
||||
{
|
||||
_400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert>
|
||||
}
|
||||
{
|
||||
_success_delete &&
|
||||
<Alert type="success"
|
||||
hide={()=>
|
||||
history.push({
|
||||
pathname: "/admin/child",
|
||||
state: {}
|
||||
})}>{_success_delete}</Alert>
|
||||
}
|
||||
{ _success_update_image &&
|
||||
<Alert type="success" hide={()=>setSuccessUpdateImage('')}>
|
||||
{_success_update_image}
|
||||
{ _success &&
|
||||
<Alert type="success" hide={()=>setSuccess('')}>
|
||||
{_success}
|
||||
</Alert>
|
||||
}
|
||||
</div>
|
||||
|
|
|
@ -50,6 +50,9 @@ const ChildEdit = (props) => {
|
|||
setCompany(child.company);
|
||||
}
|
||||
}
|
||||
else {
|
||||
set400error("失敗しました。");
|
||||
}
|
||||
})
|
||||
},[]);
|
||||
|
||||
|
@ -77,7 +80,12 @@ const ChildEdit = (props) => {
|
|||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
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: set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
|
@ -96,104 +104,95 @@ const ChildEdit = (props) => {
|
|||
</div>
|
||||
|
||||
<div className="l-content-wrap">
|
||||
<section className="profile-container position-relative">
|
||||
<section className="edit-container">
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'30%', left:'calc(50% - 22px)', color:'green', position:'absolute', zIndex:'10'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
<div className="profile-wrap">
|
||||
<div className="mx-5">
|
||||
<form onSubmit={handleSubmit} noValidate>
|
||||
{
|
||||
loaded &&
|
||||
<div className="edit-wrap">
|
||||
<div className="edit-content">
|
||||
<form onSubmit={handleSubmit} className="edit-form">
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="identity" className="control-label ft-12"> ID </label>
|
||||
<input type="text" name="identity" id="identity" className={`input-default input-nameSei input-h60 ${ _422errors.identity && "is-invalid c-input__target" }`} value={identity} onChange={e=>setIdentity(e.target.value)}/>
|
||||
{
|
||||
_422errors.identity &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.identity }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="first_name" className="control-label ft-12"> 姓 </label>
|
||||
<input type="text" name="first_name" id="first_name" className={`input-default input-nameSei input-h60 ${ _422errors.first_name && "is-invalid c-input__target" }`} value={first_name} onChange={e=>setFirstName(e.target.value)}/>
|
||||
{
|
||||
_422errors.first_name &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.first_name }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
<div className="edit-set">
|
||||
<label htmlFor="identity" className="control-label ft-12"> ID </label>
|
||||
<input type="text" name="identity" id="identity" className={`input-default input-nameSei input-h60 ${ _422errors.identity && "is-invalid c-input__target" }`} value={identity} onChange={e=>setIdentity(e.target.value)}/>
|
||||
{
|
||||
_422errors.identity &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.identity }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="first_name" className="control-label ft-12"> 姓 </label>
|
||||
<input type="text" name="first_name" id="first_name" className={`input-default input-nameSei input-h60 ${ _422errors.first_name && "is-invalid c-input__target" }`} value={first_name} onChange={e=>setFirstName(e.target.value)}/>
|
||||
{
|
||||
_422errors.first_name &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.first_name }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="last_name" className="control-label ft-12"> 名 </label>
|
||||
<input type="text" name="last_name" id="last_name" className={`input-default input-nameSei input-h60 ${ _422errors.last_name && "is-invalid c-input__target" }`} value={last_name} onChange={e=>setLastName(e.target.value)}/>
|
||||
{
|
||||
_422errors.last_name &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.last_name }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
<div className="edit-set">
|
||||
<label htmlFor="last_name" className="control-label ft-12"> 名 </label>
|
||||
<input type="text" name="last_name" id="last_name" className={`input-default input-nameSei input-h60 ${ _422errors.last_name && "is-invalid c-input__target" }`} value={last_name} onChange={e=>setLastName(e.target.value)}/>
|
||||
{
|
||||
_422errors.last_name &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.last_name }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="email" className="control-label ft-12"> メールアドレス </label>
|
||||
<input type="email" name="email" id="email" className = {`input-default input-nameSei input-h60 ${ _422errors.email && "is-invalid c-input__target" }`} value={email} onChange={e=>setEmail(e.target.value)}/>
|
||||
{
|
||||
_422errors.email &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.email }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
<div className="edit-set">
|
||||
<label htmlFor="email" className="control-label ft-12"> メールアドレス </label>
|
||||
<input type="email" name="email" id="email" className = {`input-default input-nameSei input-h60 ${ _422errors.email && "is-invalid c-input__target" }`} value={email} onChange={e=>setEmail(e.target.value)}/>
|
||||
{
|
||||
_422errors.email &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.email }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="tel" className="control-label ft-12"> 電話番号 </label>
|
||||
<input type="tel" name="tel" id="tel" className = {`input-default input-nameSei input-h60 ${ _422errors.tel && "is-invalid c-input__target" }`} value={tel} onChange={e=>setTelephone(e.target.value)}/>
|
||||
{
|
||||
_422errors.tel &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.tel }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
<div className="edit-set">
|
||||
<label htmlFor="tel" className="control-label ft-12"> 電話番号 </label>
|
||||
<input type="tel" name="tel" id="tel" className = {`input-default input-nameSei input-h60 ${ _422errors.tel && "is-invalid c-input__target" }`} value={tel} onChange={e=>setTelephone(e.target.value)}/>
|
||||
{
|
||||
_422errors.tel &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.tel }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="company" className="control-label ft-12"> 所屈している会社名を記載 </label>
|
||||
<input type="text" name="company" id="company" className = {`input-default input-nameSei input-h60 ${ _422errors.company && "is-invalid c-input__target" }`} value={company} onChange={e=>setCompany(e.target.value)}/>
|
||||
{
|
||||
_422errors.company &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.company }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="mt-5">
|
||||
<div className="edit-set">
|
||||
<label htmlFor="company" className="control-label ft-12"> 所屈している会社名を記載 </label>
|
||||
<input type="text" name="company" id="company" className = {`input-default input-nameSei input-h60 ${ _422errors.company && "is-invalid c-input__target" }`} value={company} onChange={e=>setCompany(e.target.value)}/>
|
||||
{
|
||||
_422errors.company &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.company }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<LoadingButton type="submit" fullWidth
|
||||
loading={submit}
|
||||
className="btn-edit btn-default btn-h60 bg-yellow rounded-15">
|
||||
<span className={`ft-18 font-weight-bold ${!submit && 'text-black'}`}>プロフィールを更新</span>
|
||||
className="btn-edit btn-default btn-h75 bg-yellow rounded-20">
|
||||
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>プロフィールを更新</span>
|
||||
</LoadingButton>
|
||||
</div>
|
||||
{
|
||||
_400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert>
|
||||
}
|
||||
{
|
||||
_success &&
|
||||
<Alert type="success"
|
||||
hide={()=>
|
||||
history.push({
|
||||
pathname: `/admin/child/detail/${props.match.params?.child_id}`,
|
||||
state: {}
|
||||
})}>{_success}</Alert>
|
||||
}
|
||||
</form>
|
||||
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,11 +6,12 @@ import { useHistory, 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";
|
||||
import Alert from '../../component/alert';
|
||||
|
||||
const INFINITE = 10;
|
||||
const SCROLL_DELAY_TIME = 1500;
|
||||
|
||||
const Child = () => {
|
||||
const Child = (props) => {
|
||||
|
||||
const [keyword, setKeyword] = useState('')
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
|
@ -19,6 +20,7 @@ const Child = () => {
|
|||
|
||||
const [_422errors, set422errors] = useState({keyword:''});
|
||||
const [_400error, set400error] = useState('');
|
||||
const [_success, setSuccess] = useState(props.history.location.state);
|
||||
|
||||
useEffect(() => {
|
||||
setLoaded(false);
|
||||
|
@ -32,6 +34,9 @@ const Child = () => {
|
|||
setFetchChildrenList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchChildrenList(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400error("失敗しました。");
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
|
@ -96,10 +101,10 @@ const Child = () => {
|
|||
</div>
|
||||
|
||||
<div className="search-wrap">
|
||||
<div className="search-content position-relative" style={{minHeight:'100px'}}>
|
||||
<div className="search-content position-relative">
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'20px', left:'calc(50% - 22px)', color:'green', position:'absolute'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
{
|
||||
loaded &&
|
||||
|
@ -127,7 +132,7 @@ const Child = () => {
|
|||
<img alt="name" className="avatar-img" src={ child.image } />
|
||||
</div>
|
||||
<div className="user-info">
|
||||
<p className="user-name mb-1 font-weight-bold">{ child.last_name } { child.first_name }</p>
|
||||
<p className="user-name mb-1 font-weight-bold">{`${child.first_name} ${child.last_name}`}</p>
|
||||
<p className="user-tel">{ child.tel }</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -139,6 +144,8 @@ const Child = () => {
|
|||
}
|
||||
</div>
|
||||
</div>
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -39,7 +39,12 @@ const ChildPasswordEdit = (props) => {
|
|||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
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: set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
|
@ -57,10 +62,10 @@ const ChildPasswordEdit = (props) => {
|
|||
</div>
|
||||
|
||||
<div className="l-content-wrap">
|
||||
<section className="profile-container">
|
||||
<div className="profile-wrap">
|
||||
<div className="mx-5">
|
||||
<form onSubmit={handleSubmit} noValidate>
|
||||
<section className="edit-container">
|
||||
<div className="edit-wrap">
|
||||
<div className="edit-content">
|
||||
<form onSubmit={handleSubmit} className="edit-form">
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="password" className="control-label ft-14 ft-md-12">
|
||||
|
@ -90,25 +95,13 @@ const ChildPasswordEdit = (props) => {
|
|||
}
|
||||
</div>
|
||||
|
||||
<div className="mt-5">
|
||||
<LoadingButton type="submit" fullWidth
|
||||
loading = {submit}
|
||||
className="btn-edit btn-default btn-h60 bg-yellow rounded-15">
|
||||
<span className={`ft-18 font-weight-bold ${!submit && 'text-black'}`}>パスワードを更新</span>
|
||||
</LoadingButton>
|
||||
</div>
|
||||
{
|
||||
_400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert>
|
||||
}
|
||||
{
|
||||
_success &&
|
||||
<Alert type="success"
|
||||
hide={()=>
|
||||
history.push({
|
||||
pathname: `/admin/child/detail/${props.match.params?.child_id}`,
|
||||
state: {}
|
||||
})}>{_success}</Alert>
|
||||
}
|
||||
<LoadingButton type="submit" fullWidth
|
||||
loading = {submit}
|
||||
className="btn-edit btn-default btn-h75 bg-yellow rounded-20">
|
||||
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>パスワードを更新</span>
|
||||
</LoadingButton>
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import { useHistory } from 'react-router-dom'
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useHistory, Link } from 'react-router-dom';
|
||||
import moment from 'moment';
|
||||
import axios from 'axios';
|
||||
import { CircularProgress } from '@material-ui/core';
|
||||
|
@ -13,17 +13,17 @@ import ModalConfirm from '../../component/modal_confirm';
|
|||
const MeetingDetail = (props) => {
|
||||
|
||||
const history = useHistory();
|
||||
const [open, setOpen] = useState(false);
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
const [submit, setSubmit] = useState(false);
|
||||
const [meeting, setMeeting] = useState(null);
|
||||
const [thumbnail, setThumbnail] = useState('');
|
||||
|
||||
const [_400error, set400Error] = useState('');
|
||||
const [_success, setSuccess] = useState('');
|
||||
|
||||
const [showPdf, setShowPdf] = useState(false);
|
||||
const [showMemo, setShowMemo] = useState(false);
|
||||
const [_400error, set400Error] = useState('');
|
||||
const [_success, setSuccess] = useState(props.history.location.state);
|
||||
|
||||
const [show_confirm_modal, setShowConfirmModal] = useState(false);
|
||||
const [show_pdf_modal, setShowPDFModal] = useState(false);
|
||||
const [show_memo_modal, setShowMemoModal] = useState(false);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
|
@ -43,34 +43,28 @@ const MeetingDetail = (props) => {
|
|||
}
|
||||
setMeeting({...list, denominator:total, numerator:num});
|
||||
if(list.meeting_image.length > 0) setThumbnail(list.meeting_image[0].image);
|
||||
}
|
||||
}
|
||||
else {
|
||||
set400error("失敗しました。");
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
async function openModal() {
|
||||
setOpen(true);
|
||||
};
|
||||
|
||||
async function closeModal() {
|
||||
setOpen(false);
|
||||
};
|
||||
|
||||
async function handleAcceptDelete() {
|
||||
try {
|
||||
setSubmit(true);
|
||||
axios.delete(`/api/admin/meetings/delete/${props.match.params?.meeting_id}`)
|
||||
.then(response => {
|
||||
closeModal();
|
||||
setSubmit(false);
|
||||
if(response.data.status_code == 200){
|
||||
setSuccess('削除に成功しました!');
|
||||
} else {
|
||||
set400Error("削除に失敗しました。");
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.log('error', error);
|
||||
}
|
||||
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;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
@ -85,10 +79,10 @@ const MeetingDetail = (props) => {
|
|||
|
||||
<div className="l-content-wrap">
|
||||
<div className="p-article">
|
||||
<div className="p-article-wrap position-relative" style={{ minHeight:'500px'}}>
|
||||
<div className="p-article-wrap position-relative" style={{ minHeight:'700px'}}>
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'150px', left:'calc(50% - 22px)', color:'green', position:'absolute'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
{
|
||||
loaded &&
|
||||
|
@ -124,25 +118,20 @@ const MeetingDetail = (props) => {
|
|||
</time>
|
||||
<ul className="p-article-btn-list">
|
||||
<li className="p-article__pdf__btn">
|
||||
<a
|
||||
onClick={e => {
|
||||
e.preventDefault();
|
||||
history.push({
|
||||
pathname: `/admin/meeting/edit/${props.match.params?.meeting_id}`,
|
||||
state: {}
|
||||
});
|
||||
}}
|
||||
<Link to={`/admin/meeting/edit/${props.match.params?.meeting_id}`}
|
||||
className="btn-default btn-yellow btn-pdf btn-r8 btn-h48">
|
||||
編集
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
<li className="p-article__pdf__btn mr-0">
|
||||
<a onClick={openModal} className="btn-default btn-yellow btn-pdf btn-r8 btn-h48">削除</a>
|
||||
<a className="btn-default btn-yellow btn-pdf btn-r8 btn-h48"
|
||||
onClick={()=>setShowConfirmModal(true)}>
|
||||
削除
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div className="p-article__context">
|
||||
|
||||
<div className="p-file-list">
|
||||
<div className="p-file-for">
|
||||
<figure>
|
||||
|
@ -170,7 +159,8 @@ const MeetingDetail = (props) => {
|
|||
|
||||
<div className="p-article__pdf">
|
||||
<div className="p-article__pdf__btn">
|
||||
<a data-v-ade1d018="" className="btn-default btn-yellow btn-pdf btn-r8 btn-h52" onClick={e=>setShowPdf(true)}>
|
||||
<a data-v-ade1d018="" className="btn-default btn-yellow btn-pdf btn-r8 btn-h52"
|
||||
onClick={e=>setShowPDFModal(true)}>
|
||||
<span>PDFを確認する</span>
|
||||
</a>
|
||||
</div>
|
||||
|
@ -179,51 +169,40 @@ const MeetingDetail = (props) => {
|
|||
aria-pressed="false"
|
||||
className="icon a-icon text-icon icon-text icon-starFill-wrap a-icon-size_medium"
|
||||
style={{border:'1px solid #f0de00'}}
|
||||
onClick = {()=>setShowMemo(true)} />
|
||||
onClick = {()=>setShowMemoModal(true)} />
|
||||
</div>
|
||||
|
||||
<p className="p-article__txt">{ meeting.text }</p>
|
||||
</div>
|
||||
</div>
|
||||
<ModalMemo
|
||||
show={showMemo}
|
||||
show={show_memo_modal}
|
||||
title={"メモ"}
|
||||
content={meeting?.memo}
|
||||
handleClose={()=>setShowMemo(false)}
|
||||
handleClose={()=>setShowMemoModal(false)}
|
||||
/>
|
||||
<ModalPdf
|
||||
show={showPdf}
|
||||
show={show_pdf_modal}
|
||||
pdfPath={meeting.pdf ?? '/pdf/test.pdf'}
|
||||
handleClose={()=>setShowPdf(false)}
|
||||
handleClose={()=>setShowPDFModal(false)}
|
||||
/>
|
||||
</article>
|
||||
: <p className="text-center pt-5">データが存在していません。</p>
|
||||
)
|
||||
}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ModalConfirm
|
||||
show={open}
|
||||
show={show_confirm_modal}
|
||||
message={"本当に削除しても\nよろしいでしょうか?"}
|
||||
handleClose={closeModal}
|
||||
handleClose={()=>setShowConfirmModal(false)}
|
||||
handleAccept={handleAcceptDelete}
|
||||
loading={submit}
|
||||
/>
|
||||
{
|
||||
_400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert>
|
||||
}
|
||||
{
|
||||
_success &&
|
||||
<Alert type="success"
|
||||
hide={()=>
|
||||
history.push({
|
||||
pathname: "/admin/meeting",
|
||||
state: {}
|
||||
})}>{_success}</Alert>
|
||||
}
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -77,6 +77,9 @@ const MeetingEdit = (props) => {
|
|||
}
|
||||
setChildrenTemp(arr);
|
||||
}
|
||||
else {
|
||||
set400error("失敗しました。");
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
|
@ -97,28 +100,28 @@ const MeetingEdit = (props) => {
|
|||
if(children_temp.findIndex(ele=> ele.checked && ele.child_id == approval_list[i].child_id) < 0)
|
||||
approval_deleteIndexes.push(approval_list[i].child_id);
|
||||
}
|
||||
console.log(approval_registerIndexes, approval_deleteIndexes);
|
||||
|
||||
const formdata = new FormData();
|
||||
formdata.append('children', JSON.stringify(approval_registerIndexes));
|
||||
axios.post('/api/admin/meeting/approvals/register',formdata, {params:{meeting_id: props.match.params.meeting_id}})
|
||||
axios.delete('/api/admin/meeting/approvals/delete',{params:{children: approval_deleteIndexes, meeting_id: props.match.params.meeting_id}})
|
||||
|
||||
try {
|
||||
const request = { title: title, text: text, memo: memo, pdf: pdf };
|
||||
setSubmit(true);
|
||||
axios.put(`/api/admin/meetings/update/${props.match.params?.meeting_id}`, request)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess("更新成功しました!"); break;
|
||||
case 400: set400Error("更新失敗しました。"); break;
|
||||
case 422: set422Errors(response.data.error_messages); break;
|
||||
const request = { title: title, text: text, memo: memo, pdf: pdf };
|
||||
setSubmit(true);
|
||||
axios.put(`/api/admin/meetings/update/${props.match.params?.meeting_id}`, request)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
history.push({
|
||||
pathname: `/admin/meeting/detail/${props.match.params?.meeting_id}`,
|
||||
state: "更新成功しました!"});
|
||||
break;
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.log('error', error);
|
||||
}
|
||||
case 400: set400Error("更新失敗しました。"); break;
|
||||
case 422: set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
@ -212,7 +215,7 @@ const MeetingEdit = (props) => {
|
|||
<div className="p-article-wrap position-relative" style={{ minHeight:'500px'}}>
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'150px', left:'calc(50% - 22px)', color:'green', position:'absolute'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
{
|
||||
loaded &&
|
||||
|
@ -255,6 +258,20 @@ const MeetingEdit = (props) => {
|
|||
PDFアップロード
|
||||
<input type="file" name="file_pdf" accept=".pdf" id="file_pdf" onChange={handlePDFChange} />
|
||||
</label>
|
||||
{
|
||||
pdf &&
|
||||
<IconButton
|
||||
onClick={()=>setPdf('')}
|
||||
style={{position: 'absolute',
|
||||
top: '-6px',
|
||||
right: '-6px'}}>
|
||||
<RemoveIcon
|
||||
style={{width:'22px', height:'22px',
|
||||
color: 'white',
|
||||
background: '#dd0000',
|
||||
borderRadius: '50%'}}/>
|
||||
</IconButton>
|
||||
}
|
||||
{
|
||||
_422errors.pdf &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
|
@ -263,7 +280,7 @@ const MeetingEdit = (props) => {
|
|||
}
|
||||
</div>
|
||||
<div className="edit-set edit-set-mt15">
|
||||
<label className="edit-set-file-label" htmlFor="file_image">
|
||||
<label className="edit-set-file-label" htmlFor={meeting_image.length < 10 ? 'file_image': ''}>
|
||||
画像アップロード
|
||||
<input type="file" name="file_image" accept=".png, .jpg, .jpeg" id="file_image" onChange={handleImageChange}/>
|
||||
</label>
|
||||
|
@ -328,48 +345,37 @@ const MeetingEdit = (props) => {
|
|||
</div>
|
||||
|
||||
<div className={`checkbox-wrap edit-bg ${check_radio!="true" && 'd-none'}`}>
|
||||
{
|
||||
children_list.length != 0 ?
|
||||
children_temp?.map((item, k)=>
|
||||
<div className="checkbox" key={k}>
|
||||
<label htmlFor={`user_name${k}`}>
|
||||
<input className="boolean optional"
|
||||
type="checkbox"
|
||||
id={`user_name${k}`}
|
||||
checked = {item.checked}
|
||||
onChange={e=>handleCheck(e, k)}/>
|
||||
{`${item.first_name} ${item.last_name}`}
|
||||
</label>
|
||||
</div>
|
||||
)
|
||||
: <p className="text-center">子はありません。</p>
|
||||
}
|
||||
{
|
||||
children_list.length != 0 ?
|
||||
children_temp?.map((item, k)=>
|
||||
<div className="checkbox" key={k}>
|
||||
<label htmlFor={`user_name${k}`}>
|
||||
<input className="boolean optional"
|
||||
type="checkbox"
|
||||
id={`user_name${k}`}
|
||||
checked = {item.checked}
|
||||
onChange={e=>handleCheck(e, k)}/>
|
||||
{`${item.first_name} ${item.last_name}`}
|
||||
</label>
|
||||
</div>
|
||||
)
|
||||
: <p className="text-center">子はありません。</p>
|
||||
}
|
||||
</div>
|
||||
|
||||
<LoadingButton
|
||||
type="submit" fullWidth
|
||||
loading={submit}
|
||||
className="btn-edit btn-default btn-h60 bg-yellow rounded-15">
|
||||
<span className={`ft-20 font-weight-bold ${!submit && 'text-black'}`}>ミーティングを更新</span>
|
||||
className="btn-edit btn-default btn-h75 bg-yellow rounded-20">
|
||||
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>ミーティングを更新</span>
|
||||
</LoadingButton>
|
||||
{
|
||||
_400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert>
|
||||
}
|
||||
{
|
||||
_success &&
|
||||
<Alert type="success"
|
||||
hide={()=>
|
||||
history.push({
|
||||
pathname: `/admin/meeting/detail/${props.match.params?.meeting_id}`,
|
||||
state: {}
|
||||
})}>{_success}</Alert>
|
||||
}
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,14 +11,14 @@ import Alert from '../../component/alert';
|
|||
const INFINITE = 5;
|
||||
const SCROLL_DELAY_TIME = 1500;
|
||||
|
||||
const Meeting = () => {
|
||||
const Meeting = (props) => {
|
||||
|
||||
const [keyword, setKeyword] = useState('')
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
const [meeting_list, setMeetingList ] = useState([]);
|
||||
const [fetch_meeting_list, setFetchMeetingList ] = useState([]);
|
||||
const [_422errors, set422errors] = useState({keyword:''});
|
||||
const [_success, setSuccess] = useState('');
|
||||
const [_success, setSuccess] = useState(props.history.location.state);
|
||||
|
||||
|
||||
useEffect(()=>{
|
||||
|
@ -52,6 +52,9 @@ const Meeting = () => {
|
|||
setFetchMeetingList(arr.slice(0, INFINITE));
|
||||
else setFetchMeetingList(arr.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400error("失敗しました。");
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
|
@ -128,10 +131,10 @@ const Meeting = () => {
|
|||
</form>
|
||||
</div>
|
||||
<div className="search-wrap">
|
||||
<div className="search-content position-relative" style={{minHeight:'100px'}}>
|
||||
<div className="search-content position-relative">
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'20px', left:'calc(50% - 22px)', color:'green', position:'absolute'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
{
|
||||
loaded &&
|
||||
|
@ -190,9 +193,7 @@ const Meeting = () => {
|
|||
}
|
||||
</div>
|
||||
</div>
|
||||
{
|
||||
_success && <Alert type="success">{_success}</Alert>
|
||||
}
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}>{_success}</Alert> }
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -22,15 +22,14 @@ const ParentDetail = (props) => {
|
|||
const history = useHistory();
|
||||
|
||||
const [image, setImage] = useState('');
|
||||
const [open, setOpen] = useState(false);
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
const [submit, setSubmit] = useState(false);
|
||||
const [parent, setParent] = useState(null);
|
||||
|
||||
|
||||
const [_400error, set400Error] = useState('');
|
||||
const [_422errors, set422Errors] = useState({image: ''});
|
||||
const [_success_delete, setSuccessDelete] = useState('');
|
||||
const [_success_update_image, setSuccessUpdateImage] = useState('');
|
||||
const [_success, setSuccess] = useState(props.history.location.state);
|
||||
const [show_confirm_modal, setShowConfirmModal] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
setLoaded(false);
|
||||
|
@ -41,6 +40,9 @@ const ParentDetail = (props) => {
|
|||
setParent(response.data.params);
|
||||
setImage(response.data.params.image);
|
||||
}
|
||||
else{
|
||||
set400error("失敗しました。");
|
||||
}
|
||||
})
|
||||
},[]);
|
||||
|
||||
|
@ -56,7 +58,7 @@ const ParentDetail = (props) => {
|
|||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
setImage(reader.result);
|
||||
setSuccessUpdateImage(response.data.success_messages);
|
||||
setSuccess(response.data.success_messages);
|
||||
break;
|
||||
}
|
||||
case 400: set400Error(response.data.error_messages); break;
|
||||
|
@ -66,31 +68,21 @@ const ParentDetail = (props) => {
|
|||
};
|
||||
};
|
||||
|
||||
|
||||
async function openModal() {
|
||||
setOpen(true);
|
||||
};
|
||||
|
||||
async function closeModal() {
|
||||
setOpen(false);
|
||||
};
|
||||
|
||||
async function handleAcceptDelete() {
|
||||
try {
|
||||
setSubmit(true);
|
||||
axios.delete(`/api/admin/fathers/delete/${props.match.params?.father_id}`)
|
||||
.then(response => {
|
||||
closeModal();
|
||||
setSubmit(false);
|
||||
if(response.data.status_code == 200){
|
||||
setSuccessDelete('削除に成功しました!');
|
||||
} else {
|
||||
set400Error("削除に失敗しました。");
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.log('error', error);
|
||||
}
|
||||
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("削除に失敗しました。");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
@ -109,7 +101,7 @@ const ParentDetail = (props) => {
|
|||
<div className="profile-wrap position-relative" style={{ minHeight:'500px'}}>
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'30%', left:'calc(50% - 22px)', color:'green', position:'absolute'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
{
|
||||
loaded &&
|
||||
|
@ -122,7 +114,6 @@ const ParentDetail = (props) => {
|
|||
<label htmlFor="avatar" className='avatar-label'>
|
||||
<IconButton color="primary" aria-label="upload picture" component="span" className="bg-yellow shadow-sm w-50-px h-50-px">
|
||||
<PhotoCameraOutlinedIcon style={{width:'25px', height:'25px', color:'black'}}/>
|
||||
{/* <img src="/assets/img/icon/camera.svg" width="20" height="20"/> */}
|
||||
</IconButton>
|
||||
</label>
|
||||
<img src={image} className="avatar-img" alt="avatar-img"/>
|
||||
|
@ -134,8 +125,8 @@ const ParentDetail = (props) => {
|
|||
</span>
|
||||
}
|
||||
</div>
|
||||
<p className="profile-name ft-xs-14">{parent.company}</p>
|
||||
<div className="profile-info ft-18 ft-xs-14">
|
||||
<p className="profile-name ft-18 ft-xs-16">{parent.company}</p>
|
||||
<div className="profile-info ft-18 ft-xs-16">
|
||||
<div className="profile-info__item">
|
||||
<a href={`mailto:${parent.email}`}>
|
||||
<p className="profile-info__icon">
|
||||
|
@ -158,26 +149,26 @@ const ParentDetail = (props) => {
|
|||
</div>
|
||||
|
||||
<div className="p-profile-btn">
|
||||
<Link className="btn-default btn-yellow btn-profile btn-r8 btn-h52 h-xs-45-px"
|
||||
<Link className="btn-default btn-yellow btn-profile btn-r8 btn-h52 h-xs-60-px"
|
||||
to = {`/admin/parent/edit/${props.match.params?.father_id}`}
|
||||
>
|
||||
<span className="ft-18 ft-xs-14">プロフィールを変更する</span>
|
||||
<span className="ft-18 ft-xs-16">プロフィールを変更する</span>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="p-profile-btn">
|
||||
<Link className="btn-default btn-yellow btn-password btn-r8 btn-h52 h-xs-45-px"
|
||||
<Link className="btn-default btn-yellow btn-password btn-r8 btn-h52 h-xs-60-px"
|
||||
to = {`/admin/parent/edit/password/${props.match.params?.father_id}`}
|
||||
>
|
||||
<span className="ft-18 ft-xs-14">パスワードを変更する</span>
|
||||
<span className="ft-18 ft-xs-16">パスワードを変更する</span>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="p-profile-txtLink">
|
||||
<a className="btn-default btn-password btn-r8 btn-h52 h-xs-45-px"
|
||||
onClick={openModal}
|
||||
<a className="btn-default btn-password btn-r8 btn-h52 h-xs-60-px"
|
||||
onClick={()=>setShowConfirmModal(true)}
|
||||
>
|
||||
<span className="ft-xs-14">削除する</span>
|
||||
<span className="ft-xs-16">削除する</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -190,29 +181,14 @@ const ParentDetail = (props) => {
|
|||
</div>
|
||||
</div>
|
||||
<ModalConfirm
|
||||
show={open}
|
||||
show={show_confirm_modal}
|
||||
message={"本当に削除しても\nよろしいでしょうか?"}
|
||||
handleClose={closeModal}
|
||||
handleClose={()=>setShowConfirmModal(false)}
|
||||
handleAccept={handleAcceptDelete}
|
||||
loading={submit}
|
||||
/>
|
||||
{
|
||||
_400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert>
|
||||
}
|
||||
{
|
||||
_success_delete &&
|
||||
<Alert type="success"
|
||||
hide={()=>
|
||||
history.push({
|
||||
pathname: "/admin/parent",
|
||||
state: {}
|
||||
})}>{_success_delete}</Alert>
|
||||
}
|
||||
{ _success_update_image &&
|
||||
<Alert type="success" hide={()=>setSuccessUpdateImage('')}>
|
||||
{_success_update_image}
|
||||
</Alert>
|
||||
}
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -41,6 +41,9 @@ const ParentEdit = (props) => {
|
|||
setProfile(parent.profile);
|
||||
}
|
||||
}
|
||||
else{
|
||||
set400error("失敗しました。");
|
||||
}
|
||||
})
|
||||
},[]);
|
||||
|
||||
|
@ -64,7 +67,12 @@ const ParentEdit = (props) => {
|
|||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
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: set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
|
@ -81,81 +89,72 @@ const ParentEdit = (props) => {
|
|||
</div>
|
||||
|
||||
<div className="l-content-wrap">
|
||||
<section className="profile-container position-relative">
|
||||
<section className="edit-container">
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'30%', left:'calc(50% - 22px)', color:'green', position:'absolute', zIndex:'10'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
<div className="profile-wrap">
|
||||
<div className="mx-5">
|
||||
<form onSubmit={handleSubmit} noValidate>
|
||||
<div className="edit-set">
|
||||
<label htmlFor="company" className="control-label ft-12"> 会社名</label>
|
||||
<input type="text" name="company" id="company" className = {`input-default input-nameSei input-h60 ${ _422errors.company && "is-invalid c-input__target" }`} value={company} onChange={e=>setCompany(e.target.value)}/>
|
||||
{
|
||||
_422errors.company &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.company }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="email" className="control-label ft-12"> メールアドレス </label>
|
||||
<input type="email" name="email" id="email" className = {`input-default input-nameSei input-h60 ${ _422errors.email && "is-invalid c-input__target" }`} value={email} onChange={e=>setEmail(e.target.value)}/>
|
||||
{
|
||||
_422errors.email &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.email }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
{
|
||||
loaded &&
|
||||
<div className="edit-wrap">
|
||||
<div className="edit-content">
|
||||
<form onSubmit={handleSubmit} className="edit-form">
|
||||
<div className="edit-set">
|
||||
<label htmlFor="company" className="control-label ft-12"> 会社名</label>
|
||||
<input type="text" name="company" id="company" className = {`input-default input-nameSei input-h60 ${ _422errors.company && "is-invalid c-input__target" }`} value={company} onChange={e=>setCompany(e.target.value)}/>
|
||||
{
|
||||
_422errors.company &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.company }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="email" className="control-label ft-12"> メールアドレス </label>
|
||||
<input type="email" name="email" id="email" className = {`input-default input-nameSei input-h60 ${ _422errors.email && "is-invalid c-input__target" }`} value={email} onChange={e=>setEmail(e.target.value)}/>
|
||||
{
|
||||
_422errors.email &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.email }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="tel" className="control-label ft-12"> 電話番号 </label>
|
||||
<input type="text" name="tel" id="tel" className = {`input-default input-nameSei input-h60 ${ _422errors.tel && "is-invalid c-input__target" }`} value={tel} onChange={e=>setTelephone(e.target.value)}/>
|
||||
{
|
||||
_422errors.tel &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.tel }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
<div className="edit-set">
|
||||
<label htmlFor="tel" className="control-label ft-12"> 電話番号 </label>
|
||||
<input type="text" name="tel" id="tel" className = {`input-default input-nameSei input-h60 ${ _422errors.tel && "is-invalid c-input__target" }`} value={tel} onChange={e=>setTelephone(e.target.value)}/>
|
||||
{
|
||||
_422errors.tel &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.tel }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="profile" className="control-label ft-12"> プロフィール </label>
|
||||
<textarea name="profile" id="profile" rows="8" className = {`textarea-default ${ _422errors.profile && "is-invalid c-input__target" }`} value={profile} onChange={e=>setProfile(e.target.value)}/>
|
||||
{
|
||||
_422errors.profile &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.profile }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
<div className="edit-set">
|
||||
<label htmlFor="profile" className="control-label ft-12"> プロフィール </label>
|
||||
<textarea name="profile" id="profile" rows="8" className = {`textarea-default ${ _422errors.profile && "is-invalid c-input__target" }`} value={profile} onChange={e=>setProfile(e.target.value)}/>
|
||||
{
|
||||
_422errors.profile &&
|
||||
<span className="l-alert__text--error ft-16 ft-md-14">
|
||||
{ _422errors.profile }
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className="mt-5">
|
||||
<LoadingButton type="submit" fullWidth
|
||||
className="btn-edit btn-default btn-h60 bg-yellow rounded-15"
|
||||
className="btn-edit btn-default btn-h75 bg-yellow rounded-20"
|
||||
loading={submit}>
|
||||
<span className={`ft-18 font-weight-bold ${!submit && 'text-black'}`}>プロフィールを更新</span>
|
||||
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>プロフィールを更新</span>
|
||||
</LoadingButton>
|
||||
</div>
|
||||
{
|
||||
_400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert>
|
||||
}
|
||||
{
|
||||
_success &&
|
||||
<Alert type="success"
|
||||
hide={()=>
|
||||
history.push({
|
||||
pathname: `/admin/parent/detail/${props.match.params?.father_id}`,
|
||||
state: {}
|
||||
})}>{_success}</Alert>
|
||||
}
|
||||
</form>
|
||||
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -5,12 +5,13 @@ import { useHistory, 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";
|
||||
import Alert from '../../component/alert';
|
||||
|
||||
const INFINITE = 8;
|
||||
const SCROLL_DELAY_TIME = 1500;
|
||||
|
||||
|
||||
const Parent = () => {
|
||||
const Parent = (props) => {
|
||||
|
||||
const [keyword, setKeyword] = useState('')
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
|
@ -18,6 +19,7 @@ const Parent = () => {
|
|||
const [fetch_father_list, setFetchFatherList ] = useState([]);
|
||||
const [_422errors, set422errors] = useState({keyword:''});
|
||||
const [_400error, set400error] = useState('');
|
||||
const [_success, setSuccess] = useState(props.history.location.state);
|
||||
|
||||
useEffect(() => {
|
||||
setLoaded(false);
|
||||
|
@ -31,6 +33,9 @@ const Parent = () => {
|
|||
setFetchFatherList(response.data.params.slice(0, INFINITE));
|
||||
else setFetchFatherList(response.data.params.slice(0, len));
|
||||
}
|
||||
else {
|
||||
set400error("失敗しました。");
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
|
@ -94,10 +99,10 @@ const Parent = () => {
|
|||
</div>
|
||||
|
||||
<div className="search-wrap">
|
||||
<div className="search-content position-relative" style={{minHeight:'100px'}}>
|
||||
<div className="search-content position-relative">
|
||||
{
|
||||
!loaded &&
|
||||
<CircularProgress color="secondary" style={{top:'20px', left:'calc(50% - 22px)', color:'green', position:'absolute'}}/>
|
||||
<CircularProgress className="css-loader"/>
|
||||
}
|
||||
{
|
||||
loaded &&
|
||||
|
@ -136,7 +141,9 @@ const Parent = () => {
|
|||
</InfiniteScroll>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -38,7 +38,12 @@ const ParentPasswordEdit = (props) => {
|
|||
.then(response => {
|
||||
setSubmit(false);
|
||||
switch(response.data.status_code){
|
||||
case 200: setSuccess(response.data.success_messages); break;
|
||||
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: set422Errors(response.data.error_messages); break;
|
||||
}
|
||||
|
@ -55,10 +60,10 @@ const ParentPasswordEdit = (props) => {
|
|||
</div>
|
||||
|
||||
<div className="l-content-wrap">
|
||||
<section className="profile-container">
|
||||
<div className="profile-wrap">
|
||||
<div className="mx-5">
|
||||
<form onSubmit={handleSubmit} noValidate>
|
||||
<section className="edit-container">
|
||||
<div className="edit-wrap">
|
||||
<div className="edit-content">
|
||||
<form onSubmit={handleSubmit} className="edit-form">
|
||||
|
||||
<div className="edit-set">
|
||||
<label htmlFor="password" className="control-label ft-14 ft-md-12">
|
||||
|
@ -88,25 +93,13 @@ const ParentPasswordEdit = (props) => {
|
|||
}
|
||||
</div>
|
||||
|
||||
<div className="mt-5">
|
||||
<LoadingButton type="submit" fullWidth
|
||||
loading = {submit}
|
||||
className="btn-edit btn-default btn-h60 bg-yellow rounded-15">
|
||||
<span className={`ft-18 font-weight-bold ${!submit && 'text-black'}`}>パスワードを更新</span>
|
||||
</LoadingButton>
|
||||
</div>
|
||||
{
|
||||
_400error && <Alert type="fail" hide={()=>set400Error('')}>{_400error}</Alert>
|
||||
}
|
||||
{
|
||||
_success &&
|
||||
<Alert type="success"
|
||||
hide={()=>
|
||||
history.push({
|
||||
pathname: `/admin/parent/detail/${props.match.params?.father_id}`,
|
||||
state: {}
|
||||
})}>{_success}</Alert>
|
||||
}
|
||||
<LoadingButton type="submit" fullWidth
|
||||
loading = {submit}
|
||||
className="btn-edit btn-default btn-h75 bg-yellow rounded-20">
|
||||
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>パスワードを更新</span>
|
||||
</LoadingButton>
|
||||
{ _400error && <Alert type="fail" hide={()=>set400Error('')}> {_400error} </Alert> }
|
||||
{ _success && <Alert type="success" hide={()=>setSuccess('')}> {_success} </Alert> }
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -64,9 +64,9 @@ const ParentRegister = () => {
|
|||
|
||||
<div className="mt-5">
|
||||
<LoadingButton type="submit" fullWidth
|
||||
className="btn-edit btn-default btn-h60 bg-yellow rounded-15"
|
||||
className="btn-edit btn-default btn-h75 bg-yellow rounded-20"
|
||||
loading={submit}>
|
||||
<span className={`ft-20 font-weight-bold ${!submit && 'text-black'}`}>親追加</span>
|
||||
<span className={`ft-18 ft-xs-16 font-weight-bold ${!submit && 'text-black'}`}>親追加</span>
|
||||
</LoadingButton>
|
||||
</div>
|
||||
{
|
||||
|
|
|
@ -104,14 +104,12 @@ const MeetingAdd = (props) => {
|
|||
if(children_list[i].checked) c_arr.push(children_list[i].id);
|
||||
}
|
||||
formdata.append('children', JSON.stringify(c_arr));
|
||||
console.log(c_arr);
|
||||
|
||||
setSubmit(true);
|
||||
axios.post('/api/fathers/meetings/register', formdata)
|
||||
.then(response => {
|
||||
setSubmit(false);
|
||||
setNotice(response.data.notice);
|
||||
console.log(response.data.params)
|
||||
switch(response.data.status_code){
|
||||
case 200: {
|
||||
history.push({
|
||||
|
|
|
@ -295,7 +295,7 @@ useEffect(()=>{
|
|||
}
|
||||
</div>
|
||||
<div className="edit-set edit-set-mt15">
|
||||
<label className="edit-set-file-label" htmlFor="file_image">
|
||||
<label className="edit-set-file-label" htmlFor={meeting_image.length < 10 ? 'file_image': ''}>
|
||||
画像アップロード
|
||||
<input type="file" name="file_image" accept=".png, .jpg, .jpeg" id="file_image" onChange={handleImageChange}/>
|
||||
</label>
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
|
||||
|
||||
.ft-12{ font-size: 12px; }
|
||||
.ft-13{ font-size: 13px; }
|
||||
.ft-14{ font-size: 14px; }
|
||||
.ft-15{ font-size: 15px; }
|
||||
.ft-16{ font-size: 16px; }
|
||||
.ft-17{ font-size: 17px; }
|
||||
.ft-18{ font-size: 18px; }
|
||||
.ft-19{ font-size: 19px; }
|
||||
.ft-20{ font-size: 20px; }
|
||||
.ft-22{ font-size: 22px; }
|
||||
.ft-25{ font-size: 25px; }
|
||||
.ft-30{ font-size: 30px; }
|
||||
.ft-35{ font-size: 35px; }
|
||||
.ft-40{ font-size: 40px; }
|
||||
.ft-12{ font-size: 12px !important;}
|
||||
.ft-13{ font-size: 13px !important;}
|
||||
.ft-14{ font-size: 14px !important;}
|
||||
.ft-15{ font-size: 15px !important;}
|
||||
.ft-16{ font-size: 16px !important;}
|
||||
.ft-17{ font-size: 17px !important;}
|
||||
.ft-18{ font-size: 18px !important;}
|
||||
.ft-19{ font-size: 19px !important;}
|
||||
.ft-20{ font-size: 20px !important;}
|
||||
.ft-22{ font-size: 22px !important;}
|
||||
.ft-25{ font-size: 25px !important;}
|
||||
.ft-30{ font-size: 30px !important;}
|
||||
.ft-35{ font-size: 35px !important;}
|
||||
.ft-40{ font-size: 40px !important;}
|
||||
|
||||
|
||||
.ft-md-12{ @include media-breakpoint-down(md){ font-size: 12px !important; } }
|
||||
|
|
|
@ -170,10 +170,17 @@ a{
|
|||
}
|
||||
}
|
||||
|
||||
.p-article__txt{
|
||||
.p-article__txt, .profile-info__item .txt{
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.meeting-txt{
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@media screen and (min-width: 1068px){
|
||||
|
@ -196,6 +203,10 @@ a{
|
|||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.search-item{
|
||||
&:first-child{ border-top: none !important; }
|
||||
&:last-child{ border-bottom: none !important;}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
新しいイシューから参照