Feat : fix lỗi quyền truy cập,mh admin, Lọc

uat
Quy_FE 3 months ago
parent f3aff8b648
commit d9bbcd2850
  1. 25
      src/_reducers/authentication/index.js
  2. 71
      src/_screens/criteria/criteria-manage/index.js
  3. 1
      src/_screens/home/admin/adminHome.style.scss
  4. 32
      src/_screens/home/admin/index.js

@ -6,17 +6,22 @@ const initialState = {
};
const authentication = (state = initialState, action) => {
switch (action.type) {
case TYPE_DISPATCH.LOGIN:
return {
...state,
user: action.payload.user,
jwt_token: action.payload.jwt_token,
};
case TYPE_DISPATCH.RESET_AUTHENTICATION:
if(action.payload?.user?.role !=="student"){
switch (action.type) {
case TYPE_DISPATCH.LOGIN:
return {
...state,
user: action.payload.user,
jwt_token: action.payload.jwt_token,
};
case TYPE_DISPATCH.RESET_AUTHENTICATION:
return initialState;
default:
return state;
}
}else{
alert('Bạn không có quyền truy cập');
return initialState;
default:
return state;
}
};

@ -13,13 +13,13 @@ import { history } from "../../../_helpers/history";
import { PATH } from "../../../_constants/path";
import { apiCaller } from "../../../_helpers";
import { configConstants } from "../../../_constants";
import { listStatusCriteria } from "../../../_constants/common";
import { listStatusCriteria, TYPE_DISPATCH } from "../../../_constants/common";
import moment from "moment";
import { useDispatch } from "react-redux";
import { useDispatch, useSelector } from "react-redux";
import { alertActions } from "../../../_actions";
export default function CriteriaManage() {
const [searchText, setSearchText] = useState();
const [searchText, setSearchText] = useState('');
const [listIdSelected, setListIdSelected] = useState([]);
const [listData, setListData] = useState([]);
const [listProvince, setListProvince] = useState([
@ -32,13 +32,10 @@ export default function CriteriaManage() {
]);
const [districtSelect, setDistrictSelect] = useState(listDistrict[0]);
const [isLoadingDistrict, setIsLoadingDistrict] = useState(false);
const [statusCriteriaSelected, setStatusCriteriaSelected] = useState(
listStatusCriteria[0],
);
const [statusCriteriaSelected, setStatusCriteriaSelected] = useState(listStatusCriteria[0]);
const [isLoading, setIsLoading] = useState(false);
const [isFiltered, setIsFiltered] = useState(false);
const dispatch = useDispatch();
const changeProvince = (item) => {
setProvinceSelect(item);
setDistrictSelect({ value: "", label: "Lọc theo huyện" });
@ -117,9 +114,9 @@ export default function CriteriaManage() {
}),
);
setListIdSelected([]);
await setSearchText("");
await changeProvince(listProvince[0]);
await setStatusCriteriaSelected(listStatusCriteria[0]);
// await setSearchText("");
// await changeProvince(listProvince[0]);
// await setStatusCriteriaSelected(listStatusCriteria[0]);
getDataCriteria();
}
} catch (err) {
@ -147,20 +144,38 @@ export default function CriteriaManage() {
const getDataCriteria = async (isFilter = false) => {
try {
setIsLoading(true);
const endPoint =
`/report/api_report/getOrganizationAndCriteria` +
(isFilter
? `?province_id=${
!!provinceSelect?.value ? provinceSelect?.value : ""
}
${!!districtSelect?.value ? `&district_id=${districtSelect?.value}` : ""}
${
!!statusCriteriaSelected?.value
? `&status=${statusCriteriaSelected?.value}`
: ""
const queryParams = [];
const addParam = (key, value) => {
if (value !== undefined && value !== null && value !== '') {
queryParams.push(`${key}=${value}`);
}
};
addParam('province_id', provinceSelect?.value);
addParam('district_id', districtSelect?.value);
if (statusCriteriaSelected?.value !== undefined && statusCriteriaSelected?.value !== null) {
const statusValue = statusCriteriaSelected.value === '0'
? JSON.stringify(statusCriteriaSelected.value)
: statusCriteriaSelected.value;
addParam('status', statusValue);
}
${!!searchText ? `&school_name=${searchText}` : ""}`
: "");
addParam('school_name', searchText);
const obj = queryParams.reduce((acc, curr) => {
const [key, value] = curr.split('=');
acc[key] = value;
return acc;
}, {});
dispatch({
type: TYPE_DISPATCH.SET_FILTER_CRITERIA,
payload: obj,
});
const endPoint = `/report/api_report/getOrganizationAndCriteria${
isFilter && queryParams.length ? `?${queryParams.join("&")}` : ""
}`;
const res = await apiCaller(endPoint, "GET");
if (res?.status) {
setListData(res?.data);
@ -235,6 +250,14 @@ export default function CriteriaManage() {
// getDataCriteria();
}, []);
const isDisabled = () =>
!(
searchText ||
provinceSelect.value ||
districtSelect.value ||
statusCriteriaSelected.value
);
return (
<div className="flex-1">
<Header
@ -274,7 +297,7 @@ export default function CriteriaManage() {
className={"criteria-manage-item"}
/>
<div className="criteria-manage-filter-action">
<PrimaryButton onClick={handleFilter}>Áp dụng</PrimaryButton>
<PrimaryButton isDisabled={isDisabled()} onClick={handleFilter}>Áp dụng</PrimaryButton>
</div>
</div>
<div className="criteria-manage-list-container">

@ -25,6 +25,7 @@
.admin-home-search-input {
border-radius: 40px;
height: 46px;
min-width: 340px;
@include screen_pc_sm {
height: 34px;

@ -40,15 +40,26 @@ export default function AdminHome() {
const dispatch = useDispatch();
const isFilterSchool = typeFilter === LIST_TYPE_FILTER_ADMIN_HOME[0]?.value;
const getSearchText = () => (isFilterSchool ? searchTextSchool : searchTextTeacher);
const setSearchText = isFilterSchool ? setSearchTextSchool : setSearchTextTeacher;
const getData = async () => {
try {
setIsLoading(true);
const endPoint = `/api_organization/get_organization?province_id=${
provinceSelect?.value
}${
!!districtSelect?.value ? `&district_id=${districtSelect?.value}` : ""
}${!!searchTextSchool ? `&name_school_find=${searchTextSchool}` : ""}`;
let queryParams = []
if(provinceSelect?.value){
queryParams.push(`province_id=${provinceSelect?.value}`)
}
if(districtSelect?.value){
queryParams.push(`district_id=${districtSelect?.value}`)
}
if(!!searchTextSchool){
queryParams.push(`name_school_find=${searchTextSchool}`)
}
const endPoint = `/api_organization/get_organization${
queryParams.length ? `?${queryParams.join("&")}` : ""
}`;
const res = await apiCaller(endPoint, "GET");
setIsLoading(false);
if (res?.status) {
@ -187,10 +198,7 @@ export default function AdminHome() {
};
const validateParam = () => {
if (isFilterSchool) {
return !!provinceSelect.value || !!searchTextSchool;
}
return true;
return !!provinceSelect.value || !!getSearchText();
};
useEffect(() => {
@ -217,10 +225,8 @@ export default function AdminHome() {
</div>
<InputText
className="admin-home-search-input"
value={isFilterSchool ? searchTextSchool : searchTextTeacher}
setValue={
isFilterSchool ? setSearchTextSchool : setSearchTextTeacher
}
value={getSearchText()}
setValue={setSearchText}
type="text"
name="searchText"
placeholder={

Loading…
Cancel
Save