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

uat
Quy_FE 3 months ago
parent f3aff8b648
commit d9bbcd2850
  1. 5
      src/_reducers/authentication/index.js
  2. 69
      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,6 +6,7 @@ const initialState = {
}; };
const authentication = (state = initialState, action) => { const authentication = (state = initialState, action) => {
if(action.payload?.user?.role !=="student"){
switch (action.type) { switch (action.type) {
case TYPE_DISPATCH.LOGIN: case TYPE_DISPATCH.LOGIN:
return { return {
@ -18,6 +19,10 @@ const authentication = (state = initialState, action) => {
default: default:
return state; return state;
} }
}else{
alert('Bạn không có quyền truy cập');
return initialState;
}
}; };
export { authentication }; export { authentication };

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

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

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

Loading…
Cancel
Save