reza fixed qr

master
RezaAshrafi77 3 years ago
parent f5325128b4
commit 250ab86004
  1. 14
      src/AppRouter.js
  2. 2
      src/Redux/reducers/qr.js
  3. 22
      src/components/Loader/index.js
  4. 3
      src/views/Auth/Profile/Input/index.js
  5. 633
      src/views/Auth/Profile/index.js
  6. 4
      src/views/Home/index.js
  7. 55
      src/views/QR/index.js
  8. 11
      src/views/QR/index.scss

@ -31,13 +31,13 @@ class AppRouter extends Component {
let home = (
<Route exact path={"/"}>
{proxy.status() ? (
// this.props.profile.username ? (
// <Home />
// ) : (
// <Auth page={"profile"} />
// )
<Home />
this.props.profile.username ? (
<Home />
) : (
<Auth page={"profile"} />
)
) : (
// <Home />
<Auth />
)}
</Route>
@ -102,7 +102,7 @@ class AppRouter extends Component {
export default connect(
(state) => ({
profile: state.user.status.profile || {},
profile: state.user.status || state.user.status.profile || {},
// status: state.user.status,
}),
{}

@ -18,7 +18,7 @@ export default function qr(state = initialState, action) {
return {
...state,
loading: false,
list: data.content,
list: data,
error: null,
};
/////////////

@ -0,0 +1,22 @@
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import CircularProgress from "@material-ui/core/CircularProgress";
const useStyles = makeStyles((theme) => ({
root: {
display: "flex",
"& > * + *": {
marginLeft: theme.spacing(2),
},
},
}));
export default function CircularIndeterminate() {
const classes = useStyles();
return (
<div className={classes.root}>
<CircularProgress />
</div>
);
}

@ -19,6 +19,7 @@ export default function FormPropsTextFields(props) {
const classes = useStyles();
const { parent, defaultValue } = props;
console.log(defaultValue[props.name]);
return (
<form className={classes.root} noValidate autoComplete="off">
<div>
@ -28,7 +29,7 @@ export default function FormPropsTextFields(props) {
label={props.label}
variant="outlined"
onChange={(e) => parent.onChange(e.target.name, e.target.value)}
defaultValue={defaultValue}
defaultValue={defaultValue[props.name]}
/>
</div>
</form>

@ -9,6 +9,7 @@ import Upload from "./Upload/index";
import Gender from "./GenderSwitch/index";
import Birthdate from "./Birthdate/index";
import MultipleSelector from "./MultipleSelector/index";
import Loader from "~/components/Loader/index";
import logo from "../../../assets/icons/logo.png";
import pic from "../../../assets/images/pic.png";
@ -30,6 +31,7 @@ const fontSize = {
};
class Profile extends Component {
state = {
render: false,
file: null,
firstName: "",
lastName: "",
@ -66,9 +68,17 @@ class Profile extends Component {
}
};
componentDidMount() {
async componentDidMount() {
const { getProfile, profile } = this.props;
// getProfile();
getProfile();
}
componentDidUpdate(prevProps) {
if (prevProps.profile !== this.props.profile) {
this.setState({
render: true,
});
}
}
onSubmit = async (e) => {
@ -103,340 +113,366 @@ class Profile extends Component {
return (
<>
{window.innerWidth > 1000 ? (
<div className="auth-profile d-flex justify-content-center">
<div className="auth-profile__box d-flex flex-column p-4">
<h1 style={{ fontSize: fontSize.desktop.h1 }}>حساب کاربری</h1>
<p style={{ fontSize: fontSize.desktop.p }}>
لطفا مشخصات خود را به صورت کامل نمایید.
</p>
<form
className="auth-profile__box--form d-flex"
onSubmit={(e) => this.onSubmit(e)}
>
<div style={{ width: "48%" }}>
<div className="mb-2 d-flex justify-content-center">
<Upload name="file" parent={this} />
</div>
<div className="mb-2">
<Input
name="firstName"
label="نام"
parent={this}
defaultValue={profile.firstName}
/>
</div>
<div className="mb-2">
<Input
name="lastName"
label="نام خانوادگی"
parent={this}
defaultValue={profile.lastName}
/>
</div>
<div className="mb-2">
<Input
name="username"
label="نام کاربری"
parent={this}
defaultValue={profile.username}
align="left"
/>
</div>
!this.props.loading ? (
<div className="auth-profile d-flex justify-content-center">
<div className="auth-profile__box d-flex flex-column p-4">
<h1 style={{ fontSize: fontSize.desktop.h1 }}>حساب کاربری</h1>
<p style={{ fontSize: fontSize.desktop.p }}>
لطفا مشخصات خود را به صورت کامل نمایید.
</p>
<form
className="auth-profile__box--form d-flex"
onSubmit={(e) => this.onSubmit(e)}
>
<div style={{ width: "48%" }}>
<div className="mb-2 d-flex justify-content-center">
<Upload name="file" parent={this} />
</div>
<div className="mb-2">
<Input
name="firstName"
label="نام"
parent={this}
defaultValue={profile.firstName}
/>
</div>
<div className="mb-2">
<Input
name="lastName"
label="نام خانوادگی"
parent={this}
defaultValue={profile.lastName}
/>
</div>
<div className="mb-2">
<Input
name="username"
label="نام کاربری"
parent={this}
defaultValue={profile.username}
align="left"
/>
</div>
<div className="mb-2">
<Gender
options={["دختر", "پسر"]}
parent={this}
name="gender"
selectedOption={this.state.gender}
/>
</div>
<div className="mb-2">
<Input
name="nationalId"
label="کد ملی"
parent={this}
align="left"
/>
</div>
<div className="mb-2">
<Birthdate />
</div>
{/* <div className="mb-2">
<div className="mb-2">
<Gender
options={["دختر", "پسر"]}
parent={this}
name="gender"
selectedOption={this.state.gender}
/>
</div>
<div className="mb-2">
<Input
name="nationalId"
label="کد ملی"
parent={this}
align="left"
/>
</div>
<div className="mb-2">
<Birthdate />
</div>
{/* <div className="mb-2">
<Input name="password" label="رمز عبور" parent={this} />
</div> */}
</div>
<div style={{ width: "48%" }}>
<div className="mb-2" style={{ minWidth: "100%" }}>
<Gender
parent={this}
options={["معلم", "دانش آموز"]}
name="userRoleId"
label={"عنوان"}
selectedOption={this.state.userRoleId}
/>
</div>
{this.state.userRoleId === "دانش آموز" ? (
<div className="mb-2">
<div style={{ width: "48%" }}>
<div className="mb-2" style={{ minWidth: "100%" }}>
<Gender
parent={this}
options={["معلم", "دانش آموز"]}
name="userRoleId"
label={"عنوان"}
selectedOption={this.state.userRoleId}
/>
</div>
{this.state.userRoleId === "دانش آموز" ? (
<div className="mb-2">
<Select
parent={this}
options={[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
]}
name="gradeId"
label={"پایه تحصیلی"}
/>
</div>
) : null}
{this.state.userRoleId === "معلم" ? (
<div className="mb-2">
<MultipleSelector
parent={this}
options={[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]}
name="gradeId"
label={"پایه تحصیلی"}
selectedOptions={this.state.gradeId}
/>
</div>
) : null}
{this.state.userRoleId === "دانش آموز" &&
this.state.gradeId > 9 ? (
<div className="mb-2">
<Select
parent={this}
options={[
"ریاضی",
"تجربی",
"انسانی",
"فنی حرفهای",
"کاردانش",
"معارف",
]}
name="field"
label={"رشته تحصیلی"}
selectedOptions={this.state.gradeId}
/>
</div>
) : null}
<div className="mb-2" style={{ minWidth: "100%" }}>
<Select
parent={this}
options={[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
]}
name="gradeId"
label={"پایه تحصیلی"}
options={["karaj", "tehran"]}
name="province"
label={"استان"}
/>
</div>
) : null}
{this.state.userRoleId === "معلم" ? (
<div className="mb-2">
<MultipleSelector
<Select
parent={this}
options={[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]}
name="gradeId"
label={"پایه تحصیلی"}
selectedOptions={this.state.gradeId}
options={["karaj", "tehran"]}
name="city"
label={"شهرستان"}
/>
</div>
) : null}
{this.state.userRoleId === "دانش آموز" &&
this.state.gradeId > 9 ? (
<div className="mb-2">
<Select
parent={this}
options={[
"ریاضی",
"تجربی",
"انسانی",
"فنی حرفهای",
"کاردانش",
"معارف",
]}
name="field"
label={"رشته تحصیلی"}
selectedOptions={this.state.gradeId}
options={["chaharbagh", "mahalat"]}
name="zoneId"
label={"شهر/روستا"}
/>
</div>
) : null}
<div className="mb-2" style={{ minWidth: "100%" }}>
<Select
parent={this}
options={["karaj", "tehran"]}
name="province"
label={"استان"}
/>
</div>
<div className="mb-2">
<Select
parent={this}
options={["karaj", "tehran"]}
name="city"
label={"شهرستان"}
/>
</div>
<div className="mb-2">
<Select
parent={this}
options={["chaharbagh", "mahalat"]}
name="zoneId"
label={"شهر/روستا"}
/>
</div>
{this.state.userRoleId === "دانش آموز" ? (
{this.state.userRoleId === "دانش آموز" ? (
<div className="mb-2">
<Input
parent={this}
name="schoolId"
label={"نام مدرسه"}
/>
</div>
) : null}
{this.state.userRoleId === "معلم" ? (
<div className="mb-2">
<Input
parent={this}
name="schoolId"
label={"محل تدریس"}
/>
</div>
) : null}
<div className="mb-2">
<Input
parent={this}
name="schoolId"
label={"نام مدرسه"}
name="postalCode"
label={"کد پستی"}
align="left"
/>
</div>
) : null}
{this.state.userRoleId === "معلم" ? (
<div className="mb-2">
<Input
<TextArea
parent={this}
name="schoolId"
label={"محل تدریس"}
label={"آدرس محل سکونت"}
name="address"
/>
</div>
) : null}
<div className="mb-2">
<Input
parent={this}
name="postalCode"
label={"کد پستی"}
align="left"
/>
</div>
<div className="mb-2">
<TextArea
parent={this}
label={"آدرس محل سکونت"}
name="address"
/>
</div>
<div className="auth-profile__box--form__footer d-flex justify-content-center">
<button>ذخیره</button>
<div className="auth-profile__box--form__footer d-flex justify-content-center">
<button>ذخیره</button>
</div>
</div>
</div>
</form>
</form>
</div>
</div>
</div>
) : (
<Loader />
)
) : null}
{window.innerWidth < 1000 ? (
<div className="mobile-auth-profile d-flex flex-column">
<img src={logo} alt="دانوین" />
<h1 style={{ fontSize: fontSize.mobile.h1 }}>حساب کاربری</h1>
<p style={{ fontSize: fontSize.mobile.p }}>
لطفا مشحصات خود را به صورت کامل وارد نمایید
</p>
<Upload name="file" parent={this} />
<Input
name="firstName"
label="نام"
parent={this}
defaultValue={profile.firstName}
/>
<Input
name="lastName"
label="نام خانوادگی"
parent={this}
defaultValue={profile.lastName}
/>
<Input
name="username"
label="نام کاربری"
parent={this}
align="left"
/>
<Gender
options={["دختر", "پسر"]}
parent={this}
name="gender"
selectedOption={this.state.gender}
/>
<Input
name="nationalId"
label="کد ملی"
parent={this}
align="left"
/>
<Birthdate />
<Gender
parent={this}
options={["معلم", "دانش آموز"]}
name="userRoleId"
selectedOption={this.state.userRoleId}
/>
{this.state.userRoleId === "دانش آموز" ? (
!this.props.loading ? (
<div className="mobile-auth-profile d-flex flex-column">
<img src={logo} alt="دانوین" />
<h1 style={{ fontSize: fontSize.mobile.h1 }}>حساب کاربری</h1>
<p style={{ fontSize: fontSize.mobile.p }}>
لطفا مشحصات خود را به صورت کامل وارد نمایید
</p>
<Upload name="file" parent={this} />
<Input
name="firstName"
label="نام"
parent={this}
defaultValue={profile}
/>
<Input
name="lastName"
label="نام خانوادگی"
parent={this}
defaultValue={profile}
/>
<Input
name="username"
label="نام کاربری"
parent={this}
align="left"
defaultValue={profile}
/>
<Gender
options={["دختر", "پسر"]}
parent={this}
name="gender"
selectedOption={this.state.gender}
/>
<Input
name="nationalId"
label="کد ملی"
parent={this}
align="left"
defaultValue={profile}
/>
<Birthdate />
<Gender
parent={this}
options={["معلم", "دانش آموز"]}
name="userRoleId"
selectedOption={this.state.userRoleId}
/>
{this.state.userRoleId === "دانش آموز" ? (
<Select
parent={this}
options={[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
]}
name="gradeId"
label={"پایه تحصیلی"}
/>
) : null}
{this.state.userRoleId === "معلم" ? (
<MultipleSelector
parent={this}
options={[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
]}
name="gradeId"
label={"پایه تحصیلی"}
selectedOptions={this.state.gradeId}
/>
) : null}
{this.state.userRoleId === "دانش آموز" &&
this.state.gradeId.length > 0 ? (
<Select
parent={this}
options={[
"ریاضی",
"تجربی",
"انسانی",
"فنی حرفهای",
"کاردانش",
"معارف",
]}
name="field"
label={"رشته تحصیلی"}
selectedOptions={this.state.gradeId}
/>
) : null}
<Select
parent={this}
options={[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
]}
name="gradeId"
label={"پایه تحصیلی"}
options={["karaj", "tehran"]}
name="provinceId"
label={"استان"}
/>
) : null}
{this.state.userRoleId === "معلم" ? (
<MultipleSelector
<Select
parent={this}
options={[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
]}
name="gradeId"
label={"پایه تحصیلی"}
selectedOptions={this.state.gradeId}
options={["karaj", "tehran"]}
name="cityId"
label={"شهرستان"}
/>
) : null}
{this.state.userRoleId === "دانش آموز" &&
this.state.gradeId.length > 0 ? (
<Select
parent={this}
options={[
"ریاضی",
"تجربی",
"انسانی",
"فنی حرفهای",
"کاردانش",
"معارف",
]}
name="field"
label={"رشته تحصیلی"}
selectedOptions={this.state.gradeId}
options={["chaharbagh", "mahalat"]}
name="zoneId"
label={"شهر/روستا"}
/>
) : null}
<Select
parent={this}
options={["karaj", "tehran"]}
name="provinceId"
label={"استان"}
/>
<Select
parent={this}
options={["karaj", "tehran"]}
name="cityId"
label={"شهرستان"}
/>
<Select
parent={this}
options={["chaharbagh", "mahalat"]}
name="zoneId"
label={"شهر/روستا"}
/>
{this.state.userRoleId === "دانش آموز" ? (
<Input parent={this} name="schoolId" label={"نام مدرسه"} />
) : null}
{this.state.userRoleId === "معلم" ? (
<Input parent={this} name="schoolId" label={"محل تدریس"} />
) : null}
<Input
parent={this}
name="postalCode"
label={"کد پستی"}
align="left"
/>
<TextArea parent={this} label={"آدرس محل سکونت"} name="address" />
<div className="mobile-auth-profile__footer d-flex justify-content-center">
<button onClick={() => this.onSubmit()}>ذخیره</button>
{this.state.userRoleId === "دانش آموز" ? (
<Input
parent={this}
name="schoolId"
label={"نام مدرسه"}
defaultValue={profile}
/>
) : null}
{this.state.userRoleId === "معلم" ? (
<Input
parent={this}
name="schoolId"
label={"محل تدریس"}
defaultValue={profile}
/>
) : null}
<Input
parent={this}
name="postalCode"
label={"کد پستی"}
align="left"
defaultValue={profile}
/>
<TextArea parent={this} label={"آدرس محل سکونت"} name="address" />
<div className="mobile-auth-profile__footer d-flex justify-content-center">
<button onClick={() => this.onSubmit()}>ذخیره</button>
</div>
</div>
) : (
<div
className="d-flex justify-content-center align-items-center"
style={{ height: "100vh", width: "100vw" }}
>
<Loader />
</div>
</div>
)
) : null}
</>
);
@ -445,7 +481,8 @@ class Profile extends Component {
export default connect(
(state) => ({
profile: state.user.status.profile || {},
profile: state.user.status || {},
loading: state.user.loading,
}),
{ getProfile: user.getProfile, setProfile: user.setProfile }
)(Profile);

@ -196,7 +196,7 @@ Home.defaultProps = {
design: "flex",
title: "واقعیت افزوده",
subTitle: "توضیحات مختصر در این رابطه",
link: "/ar-scan",
link: "/ar",
badge: "",
flex: 1,
fontSize: "large",
@ -319,7 +319,7 @@ Home.defaultProps = {
subTitle: "",
justifyContent: "center",
alignItems: "center",
link: "/chatroom",
link: "/contact",
badge: "",
flex: 1,
fontSize: "normal",

@ -152,40 +152,51 @@ class QR extends Component {
<>
<div className="mobile-qr d-flex flex-column">
<Navbar />
<div className="d-flex p-3">
{this.state.menu ? (
<div className="mobile-qr__buttons d-flex flex-column align-items-center">
<div>
<img
src={exit}
alt="خروج"
{this.props.qrList ? (
<div className="d-flex p-3">
{this.state.menu ? (
<div className="mobile-qr__buttons d-flex flex-column align-items-center">
<div>
<img
src={exit}
alt="خروج"
onClick={() =>
this.setState({ menu: !this.state.menu })
}
/>
</div>
<button>نمایش تمامی محتواها</button>
{qrList.content.map((item, i) => (
<MenuIdentifier data={item} key={i} />
))}
</div>
) : (
<div className="mobile-qr__buttons d-flex flex-column align-items-center">
<MoreVertIcon
style={{ fontSize: 40, color: "grey" }}
onClick={() =>
this.setState({ menu: !this.state.menu })
}
/>
</div>
<button>نمایش تمامی محتواها</button>
)}
<div className="mobile-qr__content d-flex flex-column">
<div className="mobile-qr-scan__back d-flex mb-2">
<Link to="/">بازگشت</Link>
</div>
{qrList.map((item, i) => (
<MenuIdentifier data={item} key={i} />
<Identifier data={item} key={i} />
))}
</div>
) : (
<div className="mobile-qr__buttons d-flex flex-column align-items-center">
<MoreVertIcon
style={{ fontSize: 40, color: "grey" }}
onClick={() => this.setState({ menu: !this.state.menu })}
/>
</div>
)}
<div className="mobile-qr__content d-flex flex-column">
</div>
) : (
<div className="mobile-qr__notAccess d-flex flex-column p-3">
<div className="mobile-qr-scan__back d-flex mb-2">
<Link to="/">بازگشت</Link>
</div>
{qrList.map((item, i) => (
<Identifier data={item} key={i} />
))}
<h1>محتوایی برای این صفحه در دسترس نیست.!</h1>
</div>
</div>
)}
</div>
</>
) : null}

@ -6,6 +6,17 @@
direction: rtl;
padding-top: 70px;
overflow-x: hidden;
&__notAccess {
justify-content: center;
h1 {
font-size: calc(100vw / 28);
color: #6f7074;
text-align: center;
font-family: numeralLight;
margin-top: calc(100vh / 2 - 150px);
letter-spacing: -1px;
}
}
&__header {
padding: 0px 10px;
width: 100%;

Loading…
Cancel
Save