fix bug save data in wrong key && change functionality data && clean code component

This commit is contained in:
Ehsan
2025-08-06 18:06:41 +03:30
parent 7e61867e3d
commit 8e4f182868
6 changed files with 111 additions and 73 deletions
+3 -3
View File
@@ -31,11 +31,11 @@ function AppointmentPage({ slug, matchedCity }) {
<LogInPage setIsSendMsg={false} setStep={setStep} />,
<VerificationPage setIsSendMsg={false} link={false} setStep={setStep} />,
<Detail
data={data}
setStep={setStep}
setData={setData}
isForAnother={isForAnother}
setIsForAnother={setIsForAnother}
setStep={setStep}
data={data}
setData={setData}
/>,
<Paying setStep={setStep} />,
<SuccessPay setStep={setStep} />,
+16 -70
View File
@@ -1,92 +1,38 @@
import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect";
import RadioContent from "./RadioContent";
import { FormControlLabel, Switch } from "@mui/material";
import { useRouter } from "next/navigation";
import { filterList } from "@/helper";
const gender = ["زن", "مرد", "هر دو"];
const degree = ["پزشک عمومی", "پزشک متخصص", "پزشک فوق تخصص", "همه موارد"];
import specialties from "@/data/specialties.json";
import Form from "./form";
function Content({ data, setData }) {
const router = useRouter();
const { parentList, childrenList } = filterList(data);
const changeUrl = (value) => {
const changeUrl = (value, name) => {
const current = new URLSearchParams(window.location.search);
current.set("specialties", value.id || value);
current.set(name, value.id || value);
const queryString = current.toString();
router.push(`/doctors?${queryString}`);
};
const changeData = (value, name, removeSpecialties) => {
changeUrl(value);
const changeData = (value, name, isCategory) => {
changeUrl(value, name);
const newData = data;
newData[name] = value;
if (removeSpecialties) {
const childrenList = specialties.filter((item) => item.parent);
const filteredChildrenList = childrenList.filter(
(item) => item.parent === value.id
);
if (isCategory) {
newData.specialties = "";
newData.specialties = filteredChildrenList[0];
}
setData(newData);
return newData;
};
console.log(data);
return (
<div className="mt-[50px] px-[0px] md:px-[19px] lg:px-[38px] mb-[32px]">
<AutoCompleteSelect
list={parentList}
updateData={(value) => changeData(value, "category", true)}
sendAll={true}
value={data.category?.name}
label="دسته بندی"
/>
{!!childrenList.length && (
<div className="mt-[24px]">
<AutoCompleteSelect
list={childrenList}
updateData={(value) => changeData(value, "specialties")}
sendAll={true}
value={data.specialties?.name}
label="تخصص"
/>
</div>
)}
<div className="mt-[40px] mb-[32px]">
<RadioContent
changeData={changeData}
value={data.gender}
text="جنسیت پزشک"
group={gender}
name="gender"
/>
<span className="block mt-[16px] mb-[24px] w-full h-px bg-[#EFEFEF]"></span>
<RadioContent
changeData={changeData}
value={data.degree}
text="درجه علمی"
group={degree}
name="degree"
/>
<span className="block mt-[16px] mb-[24px] w-full h-px bg-[#EFEFEF]"></span>
<div className="flex items-center justify-start gap-[12px]">
<FormControlLabel
control={
<Switch
checked={data.turn}
onChange={(event) => {
changeData(event.target.checked ? 1 : 0, "turn");
}}
/>
}
sx={{
".MuiFormControlLabel-label": {
color: "#3B3B3B",
fontSize: "16px",
fontWeight: 500,
},
marginLeft: "0 !important",
}}
label="فقط پزشکان دارای نوبت"
labelPlacement="start"
/>
</div>
</div>
<Form data={data} changeUrl={changeUrl} changeData={changeData} />
</div>
);
}
@@ -0,0 +1,30 @@
import { FormControlLabel, Switch } from "@mui/material";
function SwitchContent({ data }) {
return (
<div className="flex items-center justify-start gap-[12px]">
<FormControlLabel
control={
<Switch
checked={data.turn}
onChange={(event) => {
changeData(event.target.checked ? 1 : 0, "turn");
}}
/>
}
sx={{
".MuiFormControlLabel-label": {
color: "#3B3B3B",
fontSize: "16px",
fontWeight: 500,
},
marginLeft: "0 !important",
}}
label="فقط پزشکان دارای نوبت"
labelPlacement="start"
/>
</div>
);
}
export default SwitchContent;
+62
View File
@@ -0,0 +1,62 @@
import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect";
import SwitchContent from "./SwitchContent";
import RadioContent from "./RadioContent";
import { filterList } from "@/helper";
import { useState } from "react";
const gender = ["زن", "مرد", "هر دو"];
const degree = ["پزشک عمومی", "پزشک متخصص", "پزشک فوق تخصص", "همه موارد"];
function Form({ data, changeUrl, changeData }) {
const [list, setList] = useState({});
const { parentList, childrenList } = filterList(data);
console.log(filterList(data));
return (
<>
<AutoCompleteSelect
list={list.parentList}
sendAll={true}
label="دسته بندی"
value={data.category?.name}
updateData={(value) => {
const newData = changeData(value, "specialties", true);
setList(filterList(newData));
console.log(newData);
}}
/>
{!!childrenList.length && (
<div className="mt-[24px]">
<AutoCompleteSelect
list={list.childrenList}
updateData={(value) => changeData(value, "specialties")}
sendAll={true}
value={data.specialties?.name}
label="تخصص"
/>
</div>
)}
<div className="mt-[40px] mb-[32px]">
<RadioContent
changeData={changeData}
value={data.gender}
text="جنسیت پزشک"
group={gender}
name="gender"
/>
<span className="block mt-[16px] mb-[24px] w-full h-px bg-[#EFEFEF]"></span>
<RadioContent
changeData={changeData}
value={data.degree}
text="درجه علمی"
group={degree}
name="degree"
/>
<span className="block mt-[16px] mb-[24px] w-full h-px bg-[#EFEFEF]"></span>
<SwitchContent data={data} />
</div>
</>
);
}
export default Form;