master
amir hosein gorji 3 years ago
parent 98221e85ae
commit de02a9aa00
  1. BIN
      public/logo.png
  2. 4
      public/offline.html
  3. 40
      src/AppRouter.js
  4. 5
      src/Redux/actions/activation.js
  5. 3
      src/Redux/actions/transport.js
  6. 7
      src/Redux/proxy.js
  7. 9
      src/Redux/reducers/activation.js
  8. 5
      src/Redux/reducers/blog.js
  9. 5
      src/Redux/reducers/book.js
  10. 3
      src/Redux/reducers/comment.js
  11. 2
      src/Redux/reducers/file.js
  12. 4
      src/Redux/reducers/public.js
  13. 4
      src/Redux/reducers/qr.js
  14. 3
      src/Redux/reducers/transport.js
  15. 4
      src/Redux/reducers/user.js
  16. 4
      src/Redux/reducers/userFactor.js
  17. 5
      src/Redux/reducers/userProduct.js
  18. BIN
      src/assets/images/about-lg.png
  19. BIN
      src/assets/images/pic.png
  20. 9
      src/views/AR/Item/index.js
  21. 4
      src/views/AR/index.js
  22. 71
      src/views/About/index.js
  23. 39
      src/views/About/index.scss
  24. 34
      src/views/Activation/index.js
  25. 6
      src/views/Cart/DeliveryMethod/index.js
  26. 12
      src/views/Cart/Factor/index.js
  27. 20
      src/views/Cart/Table/index.js
  28. 64
      src/views/Cart/index.js
  29. 13
      src/views/Contact/index.js
  30. 2
      src/views/Faq/index.js
  31. 8
      src/views/Home/Footer/index.js
  32. 2
      src/views/Home/HomeSearch/index.js
  33. 6
      src/views/Home/HomeSlider/Simple/index.scss
  34. 20
      src/views/Home/HomeSlider/index.js
  35. 3
      src/views/Home/Navbar/Laptop/index.js
  36. 2
      src/views/Home/SingleBlog/index.js
  37. 4
      src/views/MyBooks/index.js
  38. 12
      src/views/Products/Product/index.js
  39. 4
      src/views/QR/VideoBox/index.js
  40. 4
      src/views/Support/index.js

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@ -5,7 +5,7 @@
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>دعوت</title>
<title>دانوین</title>
<style type="text/css">
* {
box-sizing: border-box !important;
@ -75,7 +75,7 @@
<body>
<div class="splash">
<img src="assets/icons/logo.png" alt="لوگو" />
<img src="logo.png" alt="لوگو" />
<span>دسترسی شما به اینترنت قطع میباشد.</span>
</div>
</body>

@ -9,7 +9,6 @@ import {
import { connect } from "react-redux";
import { user } from "~/Redux/actions";
import { userProduct } from "~/Redux/actions";
import proxy from "./Redux/proxy";
import Home from "./views/Home/index";
import Faq from "./views/Faq/index";
@ -61,7 +60,8 @@ class AppRouter extends Component {
}
componentDidMount() {
if (proxy.status()) this.props.getUserProductList();
// if (proxy.status() && this.props.userProductList == null)
// this.props.getUserProductList();
}
render() {
@ -242,42 +242,12 @@ class AppRouter extends Component {
)}
</Route>
<Route exact path={"/cart"}>
{mobile ? (
status ? (
this.props.userProductList.length > 0 ||
!this.state.cartControll ? (
<Cart />
) : (
<Redirect
to={{
pathname: "/products",
search: "cart",
}}
/>
)
) : (
<Redirect
to={{
pathname: "/",
}}
/>
)
) : status ? (
!this.state.cartControll ||
this.props.userProductList.length > 0 ? (
<Cart />
) : (
<Redirect
to={{
pathname: "/products",
search: "cart",
}}
/>
)
{status ? (
<Cart />
) : (
<Redirect
to={{
pathname: "/auth",
pathname: "/",
}}
/>
)}

@ -10,6 +10,11 @@ const activation = {
await proxy.put("activation/update", data);
await proxy.get("activation/list", data2, { dispatch });
},
updateStatus:
(data = {}) =>
async (dispatch) => {
await proxy.put("activation/updateStatus", data, { dispatch });
},
add:
(data = {}) =>
async (dispatch) => {

@ -24,8 +24,7 @@ const transport = {
(data = {}, data2 = {}, data3 = {}) =>
async (dispatch) => {
await proxy.post("transport/setTransport", data);
await proxy.get("userFactor/info", data3, { dispatch });
await proxy.get("transport/list", data2, { dispatch });
await proxy.get("userFactor/info", data2, { dispatch });
},
del:
(data = {}, data2 = {}) =>

@ -59,7 +59,11 @@ class Proxy {
}
break;
default:
dispatch({ type: "error", data: response.data, params });
dispatch({
type: url.split("/")[0] + "/" + "error",
data: response.data,
params,
});
}
return false;
};
@ -68,6 +72,7 @@ class Proxy {
let refresh = localStorage.getItem("refresh");
if (!refresh) window.location.href = "/";
let login = await this.login(
"user/login",
{},
{ headers: { Authorization: `Bearer ${refresh}` } }
);

@ -4,6 +4,7 @@ const initialState = {
loading: false,
error: null,
list: [],
updateStatus: false,
};
export default function activation(state = initialState, action) {
let { type, data } = action;
@ -12,14 +13,18 @@ export default function activation(state = initialState, action) {
return { ...state, loading: false, list: data, error: null };
case "activation/update":
return { ...state, loading: false, error: null };
case "activation/updateStatus":
toast.success("کتاب شما با موفقیت فعال گردید.");
return { ...state, loading: false, error: null, updateStatus: true };
case "activation/add":
toast.sucess("کتاب شما با موفقیت فعال گردید.");
toast.success("کتاب شما با موفقیت فعال گردید.");
return { ...state, loading: false, error: null };
case "activation/delete":
return { ...state, loading: false, error: null };
case "loading":
return { ...state, loading: true };
case "error":
case "activation/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

@ -1,3 +1,5 @@
import { toast } from "react-toastify";
const initialState = {
loading: false,
error: null,
@ -17,7 +19,8 @@ export default function blog(state = initialState, action) {
/////////////
case "loading":
return { ...state, loading: true };
case "error":
case "blog/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

@ -1,3 +1,5 @@
import { toast } from "react-toastify";
const initialState = {
loading: false,
error: null,
@ -113,7 +115,8 @@ export default function book(state = initialState, action) {
};
case "loading":
return { ...state, loading: true };
case "error":
case "book/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

@ -26,7 +26,8 @@ export default function comment(state = initialState, action) {
};
case "loading":
return { ...state, loading: true };
case "error":
case "comment/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

@ -18,7 +18,7 @@ export default function file(state = initialState, action) {
};
case "loading":
return { ...state, loading: true };
case "error":
case "file/error":
return { ...state, loading: false, error: data.message };
default:
return state;

@ -1,3 +1,4 @@
import { toast } from "react-toastify";
const initialState = {
homeData: [],
newProducts: [],
@ -168,7 +169,8 @@ export default function publicApi(state = initialState, action) {
return { ...state, loading: false, error: null, blog: data };
case "loading":
return { ...state, loading: true };
case "error":
case "public/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:

@ -1,3 +1,4 @@
import { toast } from "react-toastify";
const initialState = {
loading: false,
error: null,
@ -24,7 +25,8 @@ export default function qr(state = initialState, action) {
/////////////
case "loading":
return { ...state, loading: true };
case "error":
case "qr/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

@ -23,7 +23,8 @@ export default function transport(state = initialState, action) {
return { ...state, loading: false, error: null };
case "loading":
return { ...state, loading: true };
case "error":
case "transport/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

@ -50,8 +50,8 @@ export default function user(state = initialState, action) {
return { ...state, loading: false, error: null, setDone: true };
case "loading":
return { ...state, loading: true };
case "error":
// toast.error(data.message);
case "user/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

@ -39,8 +39,8 @@ export default function userFactor(state = initialState, action) {
return { ...state, loading: false, error: null, isVerified: true };
case "loading":
return { ...state, loading: true };
case "error":
// toast.error(data.message);
case "userFactor/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

@ -3,7 +3,7 @@ import { toast } from "react-toastify";
const initialState = {
loading: false,
error: null,
list: [],
list: null,
info: null,
sum: null,
checkEmpty: false,
@ -44,7 +44,8 @@ export default function userProduct(state = initialState, action) {
return { ...state, loading: false, error: null };
case "loading":
return { ...state, loading: true };
case "error":
case "userProduct/error":
toast.error(data.message);
return { ...state, loading: false, error: data.message };
default:
return state;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 KiB

After

Width:  |  Height:  |  Size: 901 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 487 KiB

After

Width:  |  Height:  |  Size: 1.0 MiB

@ -38,18 +38,19 @@ export default class Item extends Component {
<>
{window.innerWidth < 1000 ? (
<a
href={`https://ar.dnvn.ir/lunch?id=${data.id}`}
href={`https://ar.dnvn.ir/lunch?id=${data.product?.ARId}`}
target="_blank"
rel="noreferrer"
className="mobile-products-product d-flex flex-column"
>
<img
src={`https://dnvn.ir/api/v1/file/${data["product.book.fileIds"]}`}
src={`https://dnvn.ir/api/v1/file/${data.product?.book?.fileIds}`}
alt={data.title}
/>
<div className="mobile-products-product__info d-flex flex-column">
<h1 style={{ fontSize: fontSize.mobile.h1 }}>
{data["product.book.name"]}{" "}
{grades[+data["product.book.gradeId"]]}
{data.product?.book?.name}{" "}
{grades[+data.product?.book?.gradeId]}
</h1>
</div>
</a>

@ -95,7 +95,9 @@ class AR extends Component {
export default connect(
(state) => ({
arList: state.userProduct.myList || [],
arList:
state.userProduct.myList.filter((product) => product.productType == 3) ||
[],
loading: state.loading,
}),
{

@ -30,40 +30,60 @@ const fontSize = {
export default class About extends Component {
state = {
first: {
title: "درباره ما",
text: "ما در دانوین با هدف ایجاد زیرساخت تعاملی و آموزشی با تولید محتوایی جذاب بصورت کتاب با کمک پلتفرم دانوین، قصد تغییراتی بنیادین در نظام آموزش و پرورش کشور داریم. دانوین پلتفرمی شامل کتاب، محتوای الکترونیکی، رویه های آموزشی، پشتیبانی علمی و نرم افزار ارائه خدمات با رویکرد مخاطب محور است.",
},
fury: {
title: "ماموریت ما در دانوین",
text: "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت",
title: " ماموریت ما در دانوین چیست ؟",
text: "ارتقای سطح کیفیت و جذابیت آموزش در مدارس بصورت سازگار با نظام رسمی و کنونی آ.پ در راستای نیل به اهداف سند تحول",
},
keywords: {
title: "کلمات کلیدی ماموریت",
title: "کیفیت آموزش را بالا میبریم",
list: [
"شایستگی در ایجاد فهم علمی در موضوع هدف و در موضوعات وابسته به آن",
"شایستگی در ایجاد زمینه ی معرفتی- ارزشی موثر برای محتواهای آموزشی",
],
},
keywords2: {
title: "جذابیت کلید بهبود یادگیری",
list: [
"کیفیت آموزش",
"جذابیت",
"سازگار با نظام آموزش و پرورش",
"در راستای نیل به سند تحول",
"بکارگیری عوامل متنوع سازگار با ارزشها برای علاقمندی دانش آموز و معلم به استفاده از محتوای دانوین",
"سازگار با نظام آ.پ : بطوریکه بتواند در مدارس فعلی مورد استفاده قرار گرفته و با نظام رسمی فعلی در تضاد نباشد",
"در راستای نیل به سند تحول : تلاش برای نزدیکی گام به گام به آرمانها و اهداف سند تحول",
],
},
advantages: {
title: "مزیت رقابت اصلی",
title: " مزیت رقابتی دانوین",
list: [
"بکارگیری بروزترین تکنولوژی های تولید و مدیریت محتوای آموزشی-تربیتی (مانند واقعیت افزوده)",
"دارای رویکرد آموزش سرگرم کننده",
"بستر تعاملی و اشتراک گذاری فیلم و محتوای آموزشی",
"رویکرد معرفتی - ارزشی",
"ویدیوهای منحصر بفرد",
"متن گفتگو محور - روایی- قابل فهم - جذاب و سرگرم کننده",
"بکارگیری بروز ترین تکنولوژی های تولید و مدیریت محتوای آموزشی-تربیتی (مانند واقعیت افزوده)",
"دارای رویکرد آموزش سرگرم کننده ",
"بستر تعاملی و اشتراک گذاری فیلم و محتوای آموزشی",
"رویکرد معرفتی-ارزشی",
"• ویدئو های منحصر بفرد",
"• متن گفتگو محور ، روایی ، قابل فهم ،جذاب و سرگرم کننده",
],
},
};
render() {
const { fury, advantages, keywords } = this.state;
const { fury, advantages, keywords, keywords2, first } = this.state;
return (
<>
{window.innerWidth > 1000 ? (
<>
<div className="about d-flex flex-column align-items-center">
<Navbar page={"about"} />
<div className="about__first d-flex">
<div className="top align-self-start">
<h1 style={{ fontSize: fontSize.desktop.h1 }}>
{first.title}
</h1>
<p style={{ fontSize: fontSize.desktop.p + 2 }}>
{first.text}
</p>
</div>
</div>
<div className="about__fury d-flex">
<div className="about__fury--right d-flex flex-column justify-content-center">
<div className="right-top align-self-start">
@ -72,7 +92,7 @@ export default class About extends Component {
</h1>
<p style={{ fontSize: fontSize.desktop.p }}>{fury.text}</p>
</div>
<div className="right-bottom align-self-end">
<div className="right-bottom ">
<h2 style={{ fontSize: fontSize.desktop.h2 }}>
{keywords.title}
</h2>
@ -87,6 +107,21 @@ export default class About extends Component {
))}
</ul>
</div>
<div className="right-bottom align-self-end">
<h2 style={{ fontSize: fontSize.desktop.h2 }}>
{keywords2.title}
</h2>
<ul>
{keywords2.list.map((item, i) => (
<Fragment key={i}>
<li style={{ fontSize: fontSize.desktop.li }}>
{item}
</li>
<br />
</Fragment>
))}
</ul>
</div>
</div>
<div className="about__fury--left d-flex align-items-center">
<img
@ -94,9 +129,9 @@ export default class About extends Component {
src={aboutLg}
alt="عکس"
/>
{this.props.absoluteImages.map((item, i) => (
{/* {this.props.absoluteImages.map((item, i) => (
<img src={item.imageUrl} className={item.class} alt="عکس" />
))}
))} */}
</div>
</div>
<div className="about__advantages d-flex">

@ -6,14 +6,35 @@
direction: rtl;
min-height: calc(100vh - 288px);
padding-top: 60px;
&__first {
margin-top: 30px;
width: 70%;
.top {
h1 {
display: inline;
letter-spacing: -2px;
font-family: numeralMedium;
background-color: #00cc69;
color: white;
text-align: center;
}
p {
margin-top: 10px;
text-align: justify;
font-family: numeralLight;
color: #6d6d6d;
letter-spacing: -1px;
}
}
}
&__fury {
margin-top: 30px;
width: 100%;
height: 650px;
margin-bottom: 30px;
justify-content: space-between;
&--right {
align-items: center;
width: 35%;
width: 45%;
.right-top {
h1 {
display: inline;
@ -31,7 +52,7 @@
}
}
.right-bottom {
margin-top: 20px;
margin: 20px 60px 20px 0px;
h2 {
display: inline;
font-family: numeralMedium;
@ -53,18 +74,18 @@
}
}
&--left {
width: 60%;
width: 50%;
height: 100%;
position: relative;
& img {
position: absolute;
}
&__1 {
top: 0px;
left: 100px;
top: 100px;
left: 00px;
z-index: 100;
height: 470px;
width: 470px;
// height: 470px;
width: 100%;
}
&__2 {
left: 430px;
@ -93,7 +114,7 @@
width: 100%;
height: 300px;
margin-top: 50px;
margin-bottom: 50px;
margin-bottom: 10px;
justify-content: space-around;
&--right {
width: 48%;

@ -35,9 +35,7 @@ class Activation extends Component {
value: null,
};
componentDidMount() {
this.props.add({});
}
submitAdd() {}
render() {
const { data } = this.props;
@ -60,25 +58,29 @@ class Activation extends Component {
وارد تا کتاب الکترونیک آن فعالسازی شود
</p>
</div>
<form
<div
className="activation__form d-flex"
// onSubmit={() => console.log()}
>
<input
id="code"
type="text"
maxLength={9}
maxLength={30}
autoComplete="off"
onChange={(e) => this.setState({ code: e.target.value })}
style={{ fontSize: fontSize.desktop.form }}
/>
<button
style={{ fontSize: fontSize.desktop.form }}
type="submit"
onClick={() => {
this.props.updateStatus({
activationCode: this.state.code,
});
}}
>
ثبت کد فعال سازی
</button>
</form>
</div>
{/* <div className="activation__support d-flex align-center">
<span>
<img src={danger} />
@ -137,7 +139,7 @@ class Activation extends Component {
<Scanner parent={this} />
)}
</div> */}
<form
<div
className="mobile-activation__form d-flex flex-column"
// onSubmit={() => console.log()}
>
@ -148,17 +150,23 @@ class Activation extends Component {
<input
id="code"
type="text"
maxLength={9}
maxLength={30}
autoComplete="off"
onChange={(e) => this.setState({ code: e.target.value })}
placeholder={"FC5DFD : مثال"}
style={{ fontSize: fontSize.mobile.form }}
/>
</div>
<button style={{ fontSize: fontSize.mobile.form }} type="submit">
<button
style={{ fontSize: fontSize.mobile.form }}
// type="submit"
onClick={() => {
this.props.updateStatus({ activationCode: this.state.code });
}}
>
ثبت کد فعال سازی
</button>
</form>
</div>
{/* <div className="mobile-activation__support d-flex align-center">
<span>
<img src={danger} />
@ -181,4 +189,6 @@ class Activation extends Component {
}
}
export default connect((state) => ({}), { add: activation.add })(Activation);
export default connect((state) => ({}), {
updateStatus: activation.updateStatus,
})(Activation);

@ -43,8 +43,7 @@ class DeliveryMethod extends Component {
factorId: factorInfo.id,
transportId: data.id,
},
{},
{ id: list[0].factorId }
{}
)
}
>
@ -69,8 +68,7 @@ class DeliveryMethod extends Component {
factorId: factorInfo.id,
transportId: data.id,
},
{},
{ id: list[0].factorId }
{}
)
}
>

@ -54,6 +54,10 @@ const Factor = (props) => {
<strong>میزان تخفیف</strong>
<span>{factorInfo.offPrice} تومان</span>
</div>
<div className="d-flex justify-content-between">
<strong>مالیات بر ارزش افزوده</strong>
<span>{factorInfo.vatPrice} تومان</span>
</div>
</div>
) : null}
{window.innerWidth > 1000 ? (
@ -83,6 +87,14 @@ const Factor = (props) => {
{factorInfo.offPrice} تومان
</span>
</div>
<div className="d-flex justify-content-between">
<strong style={{ fontSize: fontSize.desktop.strong }}>
مالیات بر ارزش افزوده
</strong>
<span style={{ fontSize: fontSize.desktop.span }}>
{factorInfo.vatPrice} تومان
</span>
</div>
</div>
) : null}
</>

@ -195,7 +195,12 @@ const Item = (props) => {
{route !== "callback" ? (
<div className="mobile-cart-table-product__info--delete d-flex align-items-center align-self-end">
<DeleteOutlineOutlinedIcon
style={{ color: "#FC120A", fontSize: 25, marginLeft: 0 }}
style={{
color: "#FC120A",
fontSize: 25,
marginLeft: 0,
cursor: "pointer",
}}
onClick={() =>
pushToCart({
productId: data.productId,
@ -215,6 +220,7 @@ const Item = (props) => {
style={{
fontSize: fontSize.mobile.delete.span,
color: "#FC120A",
cursor: "pointer",
}}
>
حذف
@ -369,7 +375,12 @@ const Item = (props) => {
<TableCell>
<div className="cart-item__delete d-flex align-items-center justify-content-center">
<DeleteOutlineOutlinedIcon
style={{ color: "#FC120A", fontSize: 30, marginLeft: 5 }}
style={{
color: "#FC120A",
fontSize: 30,
marginLeft: 5,
cursor: "pointer",
}}
// onClick={() => handleDelete(data.id)}
onClick={() =>
pushToCart({
@ -388,7 +399,10 @@ const Item = (props) => {
count: -data.count,
})
}
style={{ fontSize: fontSize.desktop.delete.span }}
style={{
fontSize: fontSize.desktop.delete.span,
cursor: "pointer",
}}
>
حذف
</span>

@ -1,6 +1,6 @@
import React, { Component } from "react";
import { connect } from "react-redux";
import { userProduct, transport, userFactor } from "~/Redux/actions";
import { transport, userFactor } from "~/Redux/actions";
import Navbar from "../Home/Navbar/index";
import Footer from "../Home/Footer/index";
@ -58,31 +58,30 @@ class Cart extends Component {
window.location.hash = "verified";
}
if (this.props.factorInfo === null && this.state.controlFactorInfoRepeat) {
this.props.getFactorInfo({});
this.setState({
controlFactorInfoRepeat: false,
});
}
if (this.props.list.length > 0) {
let wantedId; //should be zero
for (let item of this.props.list) {
if (item.condition == 2) {
wantedId = item.id;
break;
}
}
if (this.props.list.length !== 1) {
this.props.getInfo({ id: wantedId });
}
} else {
this.props.getFactorInfo({});
}
// if (this.props.factorInfo === null && !this.controlFactorInfoRepeat) {
// this.props.getFactorInfo({});
// this.controlFactorInfoRepeat = true;
// }
// if (this.props.list.length > 0) {
// let wantedId; //should be zero
// for (let item of this.props.list) {
// if (item.condition == 2) {
// wantedId = item.id;
// break;
// }
// }
// if (this.props.list.length !== 1) {
// // this.props.getInfo({ id: wantedId });
// }
// } else {
// // this.props.getFactorInfo({});
// }
}
componentDidMount() {
window.scrollTo(0, 0);
this.props.getTransportList();
this.props.getFactorInfo({});
}
handleCounter = (type, id) => {
@ -119,7 +118,7 @@ class Cart extends Component {
render() {
const { list, payPrice, payMethods, factorInfo, userId, hasPhysical } =
this.props;
if (!this.props.factorInfo)
if (!factorInfo || list.length == 0)
return (
<div
align="center"
@ -177,7 +176,7 @@ class Cart extends Component {
/>
</section>
<section className="cart__left d-flex flex-column p-3">
{hasPhysical ? (
{factorInfo.transportId ? (
<header className="cart__left--header d-flex flex-column">
<h2 style={{ fontSize: fontSize.desktop.h2 }}>
روشهای ارسال
@ -207,9 +206,7 @@ class Cart extends Component {
</h3>
<div className="d-flex align-items-center">
<strong style={{ fontSize: fontSize.mobile.h1 }}>
{factorInfo.sumPrice +
factorInfo.transportPrice -
factorInfo.offPrice}
{factorInfo.payPrice}
</strong>
<span style={{ fontSize: fontSize.mobile.h3 }}>
تومان
@ -297,9 +294,8 @@ class Cart extends Component {
{factorInfo ? (
<div className="d-flex align-items-center">
<strong style={{ fontSize: fontSize.mobile.h1 }}>
{factorInfo.sumPrice +
factorInfo.transportPrice -
factorInfo.offPrice}
{factorInfo.payPrice}
{/* // factorInfo.transportPrice - // factorInfo.offPrice} */}
</strong>
<span style={{ fontSize: fontSize.mobile.h3 }}>تومان</span>
</div>
@ -340,17 +336,19 @@ class Cart extends Component {
export default connect(
(state) => ({
list: state.userProduct.list,
list:
state.userFactor.info?.products?.filter((item) => +item.condition < 2) ||
[],
payPrice: state.userProduct.sum,
payMethods: state.transport.list,
factorInfo: state.userFactor.info,
userId: state.user.status.id,
hasPhysical: state.userProduct.hasPhysical,
isVerified: state.userFactor.isVerified,
}),
{
getList: userProduct.list,
getInfo: userProduct.info,
// getList: userProduct.list,
// getInfo: userProduct.info,
getTransportList: transport.list,
getFactorInfo: userFactor.info,
payFactor: userFactor.payment,

@ -41,7 +41,7 @@ class Contact extends Component {
};
componentDidMount() {
this.props.getList();
// this.props.getList();
this.props.getContactData();
}
@ -64,7 +64,10 @@ class Contact extends Component {
</p>
<Input label={"نام و نام خانوادگی"} name={"name"} />
<Input label={"شماره تماس"} name={"mobile"} />
<Select options={["واحد فروش", "واحد محتوا", "واحد فنی"]} />
<Select
parent={this}
options={["واحد فروش", "واحد محتوا", "واحد فنی"]}
/>
<Input label={"موضوع پیام"} name={"subject"} />
<textarea
placeholder="متن پیام"
@ -206,8 +209,8 @@ export default connect(
(state) => ({
loading: state.publicApi.loading,
contactData: state.publicApi.contactData,
list: state.userProduct.list,
loading: state.publicApi.loading,
list: state.userProduct.mylist,
//loading: state.publicApi.loading,
}),
{ getContactData: publicApi.getContactData, getList: userProduct.list }
{ getContactData: publicApi.getContactData, getList: userProduct.mylist }
)(Contact);

@ -89,7 +89,7 @@ class Faq extends Component {
return (
<>
{window.innerWidth > 1000 ? (
faqList.length > 0 ? (
faqList && faqList.length > 0 ? (
<>
<div className="faq d-flex flex-column align-items-center">
<Navbar page={"faq"} />

@ -46,8 +46,8 @@ export default class Footer extends Component {
<div className="footer-container__content--box second d-flex flex-column">
<h1>دسترسی سریع</h1>
<ul>
{fastAccess.map((item) => (
<li>
{fastAccess.map((item, i) => (
<li key={i}>
<Link to={item.link}>{item.name}</Link>
</li>
))}
@ -56,8 +56,8 @@ export default class Footer extends Component {
<div className="footer-container__content--box second d-flex flex-column">
<h1>لینک های کاربردی</h1>
<ul>
{fastAccess.map((item) => (
<li>
{fastAccess.map((item, i) => (
<li key={i}>
<Link to={item.link}>{item.name}</Link>
</li>
))}

@ -31,7 +31,7 @@ class HomeSearch extends Component {
placeholder="جستجو در عناوین کتاب ..."
className="home-search__input d-flex"
type="text"
name="search"
name="searchBox"
onChange={(e) =>
this.setState({
filters: { ...this.state.filters, search: e.target.value },

@ -24,7 +24,7 @@
}
}
&__notAvailabe {
font-family: numeralMedium;
font-family: numeralLight;
width: 100%;
text-align: center;
color: #6f7074;
@ -35,7 +35,7 @@
margin-top: 15px;
text-align: center;
&--old {
font-family: numeralMedium;
font-family: numeralLight;
color: #6f7074;
position: relative;
margin-left: 10px;
@ -51,7 +51,7 @@
}
&--price {
color: #02733c;
font-family: numeralMedium;
font-family: numeralLight;
font-size: calc(100vw / 80);
}
}

@ -27,13 +27,15 @@ const SimpleHeader = (props) => {
<h1 style={{ fontSize: fontSize.desktop.h1 }}>{props.title}</h1>
<span></span>
</div>
<Link
to={props.link}
className="home-scroll__header--more d-flex align-items-center"
>
<span style={{ fontSize: fontSize.desktop.h1 }}>بیشتر</span>
<img src={dropdown} alt="فلش" />
</Link>
{props.more ? (
<Link
to={props.link}
className="home-scroll__header--more d-flex align-items-center"
>
<span style={{ fontSize: fontSize.desktop.h1 }}>بیشتر</span>
<img src={dropdown} alt="فلش" />
</Link>
) : null}
</div>
) : null}
{window.innerWidth < 1000 ? (
@ -95,7 +97,9 @@ export default class HomeSlider extends Component {
let header;
if (title) {
if (designType === "simple" || designType === "blog") {
header = <SimpleHeader title={title} link={link} />;
header = (
<SimpleHeader title={title} link={link} more={data.length > number} />
);
} else if (designType === "tab") {
header = <TabHeader title={title} link={link} />;
}

@ -77,7 +77,8 @@ export default class LaptopNavbar extends Component {
localStorage.removeItem("refresh");
localStorage.removeItem("access");
localStorage.removeItem("userData");
this.setState({ navigatePath: "/auth" });
window.location.reload();
// this.setState({ navigatePath: "/auth" });
}}
>
خروج

@ -32,7 +32,7 @@ export default class SingleBlog extends Component {
style={{ fontSize: fontSize.desktop.a }}
to={"/blogs/" + data.id}
>
بیشتر
ادامه
</Link>
</div>
<div className="single-blog__left d-flex justify-content-center align-items-center">

@ -109,11 +109,11 @@ class MyBooks extends React.Component {
export default connect(
(state) => ({
list: state.userProduct.list,
list: state.userProduct.mylist,
checkEmpty: state.userProduct.checkEmpty,
// status: state.user.status,
}),
{ getList: userProduct.list }
{ getList: userProduct.mylist }
)(MyBooks);
const Item = (props) => {

@ -1,3 +1,4 @@
/* eslint-disable jsx-a11y/anchor-is-valid */
import React, { Component } from "react";
import { Link } from "react-router-dom";
@ -28,8 +29,8 @@ export default class Product extends Component {
return (
<>
{window.innerWidth < 1000 ? (
<Link
to={`/products/physical/${product.id}`}
<div
// to={`/products/physical/${product.id}`}
className="mobile-products-product d-flex flex-column"
>
<img
@ -50,7 +51,8 @@ export default class Product extends Component {
{product.product[1].price} تومان
</span>
</Link>
<Link
<a
href="#"
// to={`/products/digital/${product.id}`}
style={{ fontSize: fontSize.mobile.a, opacity: 0.3 }}
className="mobile-products-product__links--ar d-flex justify-content-between align-items-center"
@ -59,9 +61,9 @@ export default class Product extends Component {
<span style={{ fontSize: fontSize.mobile.h2 }}>
{product.product[0].price} تومان
</span>
</Link>
</a>
</div>
</Link>
</div>
) : null}
{window.innerWidth > 1000 ? (
<article className="products-product d-flex flex-column align-items-center">

@ -24,8 +24,8 @@ export default function VideoBox(props) {
{window.innerWidth > 1000 ? (
<div className="d-flex flex-column">
<h3 style={{ fontSize: fontSize.desktop.h3 }}>
<PlayCircleFilledRoundedIcon style={{ fontSize: 35 }} />
فیلمها
{/* <PlayCircleFilledRoundedIcon style={{ fontSize: 35 }} /> */}
{/* فیلمها */}
</h3>
<div className="video-box d-flex flex-column" id="video">
<ReactVideoJsPlayer fileId={data.fileIds} />

@ -79,7 +79,7 @@ class Support extends Component {
export default connect(
(state) => ({
list: state.userProduct.list,
list: state.userProduct.mylist,
}),
{ getList: userProduct.list }
{ getList: userProduct.mylist }
)(Support);

Loading…
Cancel
Save