diff --git a/src/_reducers/authentication/index.js b/src/_reducers/authentication/index.js
index c99ffed..f66ef61 100644
--- a/src/_reducers/authentication/index.js
+++ b/src/_reducers/authentication/index.js
@@ -6,7 +6,6 @@ const initialState = {
};
const authentication = (state = initialState, action) => {
- if(action.payload?.user?.role !=="student"||action.payload?.user?.role !=="parent"){
switch (action.type) {
case TYPE_DISPATCH.LOGIN:
return {
@@ -19,10 +18,6 @@ const authentication = (state = initialState, action) => {
default:
return state;
}
- }else{
- alert('Bạn không có quyền truy cập');
- return initialState;
- }
};
export { authentication };
diff --git a/src/_screens/criteria/criteria-manage/index.js b/src/_screens/criteria/criteria-manage/index.js
index c87b870..50594fc 100644
--- a/src/_screens/criteria/criteria-manage/index.js
+++ b/src/_screens/criteria/criteria-manage/index.js
@@ -1,4 +1,4 @@
-import { useEffect, useState } from "react";
+import { useEffect, useRef, useState } from "react";
import Header from "../../../_components/Header";
import {
renderIconSearchInput,
@@ -40,6 +40,7 @@ export default function CriteriaManage() {
const [limitOnline] = useState(10);
const [offsetOnline, setOffsetOnline] = useState(0);
const [isEndOnlineClasses, setIsEndOnlineClasses] = useState(false);
+ const listRef = useRef(null);
const dispatch = useDispatch();
const changeProvince = (item) => {
setProvinceSelect(item);
@@ -55,6 +56,15 @@ export default function CriteriaManage() {
setDistrictSelect(item);
};
+ const scrollToTop = () => {
+ if (listRef.current) {
+ listRef.current.scrollTo({
+ top: 0,
+ behavior: 'smooth',
+ });
+ }
+ };
+
const handleSelectAll = () => {
if (listData?.every((item) => listIdSelected?.includes(item?.school_id))) {
setListIdSelected((prev) =>
@@ -141,6 +151,8 @@ export default function CriteriaManage() {
) {
return;
}
+ scrollToTop()
+ setOffsetOnline(0)
setLoadMoreOnline(true)
setIsEndOnlineClasses(false)
setIsFiltered(true);
@@ -427,7 +439,7 @@ export default function CriteriaManage() {
onClick={handleSelectAll}
placement="right"
/>
-
+
{listData?.map((item, index) => {
return (
diff --git a/src/_screens/criteria/criteria-setting/criteriaSetting.style.scss b/src/_screens/criteria/criteria-setting/criteriaSetting.style.scss
index 71a5f57..cc5cb9f 100644
--- a/src/_screens/criteria/criteria-setting/criteriaSetting.style.scss
+++ b/src/_screens/criteria/criteria-setting/criteriaSetting.style.scss
@@ -94,6 +94,7 @@
display: flex;
align-items: center;
gap: 32px;
+ width: max-content;
.criteria-setting-item-detail-label {
display: flex;
@@ -120,8 +121,8 @@
border-radius: 4px;
padding: 0;
margin-right: 1px;
- height: 2.8rem;
- width: 60px;
+ height: 2.4rem;
+ width: 40px;
font-size: 1.8rem;
text-align: center;
color: var(--primary-color);
diff --git a/src/_screens/criteria/criteria-setting/index.js b/src/_screens/criteria/criteria-setting/index.js
index ba85337..f063b49 100644
--- a/src/_screens/criteria/criteria-setting/index.js
+++ b/src/_screens/criteria/criteria-setting/index.js
@@ -160,13 +160,33 @@ export default function CriteriaSetting() {
return !isRead
}
- const isSaveDisabled = () => {
- return (
- (criteriaTarget.assign.enable &&
- (!criteriaTarget.assign.target1 || !criteriaTarget.assign.target2)) ||
- (criteriaTarget.studentDone.enable &&
- (!criteriaTarget.studentDone.target1 || !criteriaTarget.studentDone.target2))
- );
+ const isValid = () => {
+ if (criteriaTarget.assign.enable) {
+ if (!criteriaTarget.studentDone.enable) {
+ return (
+ !(criteriaTarget.assign.target1 &&
+ criteriaTarget.assign.target2 &&
+ criteriaTarget.assign.target1 < criteriaTarget.assign.target2)
+ );
+ } else {
+ return (
+ !(criteriaTarget.assign.target1 &&
+ criteriaTarget.assign.target2 &&
+ criteriaTarget.assign.target1 < criteriaTarget.assign.target2 &&
+ criteriaTarget.studentDone.target1 != null &&
+ criteriaTarget.studentDone.target2 != null &&
+ criteriaTarget.studentDone.target1 < criteriaTarget.studentDone.target2)
+ );
+ }
+ } else if (criteriaTarget.studentDone.enable) {
+ return (
+ !(criteriaTarget.studentDone.target1 != null &&
+ criteriaTarget.studentDone.target2 != null &&
+ criteriaTarget.studentDone.target1 < criteriaTarget.studentDone.target2)
+ );
+ } else {
+ return true;
+ }
};
const renderRightItem = ({ title, desc, valueName, unit, key, maxLengthInput }) => {
return (
@@ -206,8 +226,7 @@ export default function CriteriaSetting() {
const value = e.target.value;
if (!/^[1-9]\d*$/.test(value) && value !== "") {
return;
- }
- if (!!maxLengthInput && value.length > maxLengthInput) {
+ }else if (!!maxLengthInput && e.target.value.length > maxLengthInput) {
return;
}
setCriteriaTarget({
@@ -240,8 +259,7 @@ export default function CriteriaSetting() {
onChange={(e) => {
if (!/^[1-9]\d*$/.test(e.target.value) && e.target.value !== "") {
return;
- }
- if (!!maxLengthInput && e.target.value.length > maxLengthInput) {
+ }else if (!!maxLengthInput && e.target.value.length > maxLengthInput) {
return;
}
setCriteriaTarget({
@@ -322,7 +340,7 @@ export default function CriteriaSetting() {
Quay lại
{authentication?.user?.role === USER_ROLE.ADMIN && (
-
Lưu
+
Lưu
)}
diff --git a/src/_screens/home/admin/adminHome.style.scss b/src/_screens/home/admin/adminHome.style.scss
index 218abf9..5d62491 100644
--- a/src/_screens/home/admin/adminHome.style.scss
+++ b/src/_screens/home/admin/adminHome.style.scss
@@ -7,7 +7,7 @@
overflow: auto;
.admin-home-left-side {
- width: 30%;
+ min-width: 340px;
border-right: 1px solid #4d4d4d;
.admin-home-form-select {
diff --git a/src/_screens/home/admin/index.js b/src/_screens/home/admin/index.js
index b36fb5a..2d3f71d 100644
--- a/src/_screens/home/admin/index.js
+++ b/src/_screens/home/admin/index.js
@@ -9,7 +9,7 @@ import PrimaryButton from "../../../_components/Button/PrimaryButton";
import RateStar from "../../../_components/RateStar";
import RootRadioGroup from "../../../_components/RootRadioGroup";
import { LIST_TYPE_FILTER_ADMIN_HOME } from "../../../_constants/common";
-import { useEffect, useState } from "react";
+import { useEffect, useRef, useState } from "react";
import InputText from "../../../_components/Auth/InputText";
import { apiCaller, history } from "../../../_helpers";
import { configConstants, PATH } from "../../../_constants";
@@ -42,6 +42,7 @@ export default function AdminHome() {
const [limitOnline] = useState(10);
const [offsetOnline, setOffsetOnline] = useState(0);
const [isEndOnlineClasses, setIsEndOnlineClasses] = useState(false);
+ const listRef = useRef(null);
const dispatch = useDispatch();
const isFilterSchool = typeFilter === LIST_TYPE_FILTER_ADMIN_HOME[0]?.value;
@@ -77,6 +78,15 @@ export default function AdminHome() {
}
};
+ const scrollToTop = () => {
+ if (listRef.current) {
+ listRef.current.scrollTo({
+ top: 0,
+ behavior: 'smooth',
+ });
+ }
+ };
+
const getDataTeacher = async () => {
try {
setIsLoading(true);
@@ -186,6 +196,8 @@ export default function AdminHome() {
const handleSubmit = () => {
if (isFilterSchool) {
+ scrollToTop()
+ setOffsetOnline(0)
setLoadMoreOnline(true)
setIsEndOnlineClasses(false)
setIsSearched(true);
@@ -366,7 +378,7 @@ export default function AdminHome() {
)}
-
+
{listSchool.map((item, index) => {
return (
{
+ if (listRef.current) {
+ listRef.current.scrollTo({
+ top: 0,
+ behavior: 'smooth',
+ });
+ }
+ };
+
const changeSemester = (item) => {
+ scrollToTop()
+ setOffsetOnline(0)
setSemester(item);
setMonth(getListMonthBySemester(item?.value)?.[0]);
};
@@ -338,7 +350,7 @@ export default function HeadmasterHome() {
) : (
-
+
{!isLoading && !listTeacher?.length && (
Không có giáo viên nào
diff --git a/src/_screens/home/teacher/index.js b/src/_screens/home/teacher/index.js
index 3163aa5..8853394 100644
--- a/src/_screens/home/teacher/index.js
+++ b/src/_screens/home/teacher/index.js
@@ -15,7 +15,7 @@ import {
listAlphabet,
PRIMARY_COLOR,
} from "../../../_constants/common";
-import { useEffect, useState } from "react";
+import { useEffect, useState,useRef } from "react";
import { apiCaller, history } from "../../../_helpers";
import { configConstants } from "../../../_constants";
import { exportExcel } from "../../../_helpers/utils";
@@ -41,12 +41,21 @@ export default function TeacherHome() {
const [isEndOnlineClasses, setIsEndOnlineClasses] = useState(false);
const [totalClass, setTotalClass] = useState(0)
const [totalAssign, settotalAssign] = useState(0)
+ const listRef = useRef(null)
const teacherName = !!teacherId
? !!teacher_name ? decodeURIComponent(teacher_name) : ''
: authentication?.user?.fullname;
const id = !!teacherId ? teacherId : authentication?.user?.id;
+ const scrollToTop = () => {
+ if (listRef.current) {
+ listRef.current.scrollTo({
+ top: 0,
+ behavior: 'smooth',
+ });
+ }
+ };
const getData = async () => {
try {
setIsLoading(true);
@@ -88,6 +97,8 @@ export default function TeacherHome() {
};
const handleFilter = () => {
+ scrollToTop()
+ setOffsetOnline(0)
setLoadMoreOnline(true)
setIsEndOnlineClasses(false)
setListClass([])
@@ -270,7 +281,7 @@ export default function TeacherHome() {
Xuất excel
)}
-
+
{listClass?.map((item) => {
return (
diff --git a/src/_screens/login/index.js b/src/_screens/login/index.js
index d1ba479..ddb214a 100644
--- a/src/_screens/login/index.js
+++ b/src/_screens/login/index.js
@@ -75,12 +75,20 @@ export default function Login() {
dataSubmit,
);
if (res?.status) {
+ if(res.data_user.role === "student"||res.data_user.role === "parent"){
+ dispatch({
+ type: TYPE_DISPATCH.RESET_AUTHENTICATION,
+ });
+ persistor.purge();
+ window.location.href = PATH.login;
+ return false
+ }
handleLoginSuccess(res);
}
} catch (err) {
dispatch(
alertActions.error({
- message: err?.toString(),
+ message: 'Bạn không có quyền truy cập',
}),
);
}