Fix dashboard data requests, update dashboard data handling, change login field type, and redesign home button

This commit is contained in:
Ehsan
2025-06-12 21:46:27 +03:30
parent bf64271d14
commit eea8737778
8 changed files with 81 additions and 31 deletions
+13 -1
View File
@@ -5,6 +5,7 @@ import { useState } from "react";
import userData from "@/data/userData.json";
import DashboardPage from "@/components/dashboard";
import UserAccountPage from "./userAccount";
import { request } from "@/services/response";
function Content({
matchedCity,
@@ -17,6 +18,16 @@ function Content({
const [value, setValue] = useState(Number(params?.sidebar) || 0);
const [isOpenSide, setIsOpenSide] = useState(initialIsOpenSide);
const [isTurnsDetails, setIsTurnsDetails] = useState(false);
const [prevData, setPrevData] = useState(dataUser);
const updateDataUser = () => {
request
.getUserProfile(userInfo.uuid)
.then((res) => {
setPrevData(res);
})
.catch(() => {});
};
return (
<DashboardPage
@@ -32,10 +43,11 @@ function Content({
>
<UserAccountPage
value={value}
dataUser={dataUser}
dataUser={prevData}
userInfo={userInfo}
user={userData.data}
setIsOpenSide={setIsOpenSide}
updateDataUser={updateDataUser}
isTurnsDetails={isTurnsDetails}
setIsTurnsDetails={setIsTurnsDetails}
/>
@@ -11,15 +11,17 @@ import Allergies from "./allergies";
import Surgeries from "./surgeries";
import FamilyHistory from "./familyHistory";
import Relatives from "./relatives";
import { dieses } from "./information/dieses";
function DetailUser({
user,
dataUser,
userInfo,
isTurnsDetails,
updateDataUser,
setIsTurnsDetails,
}) {
const [tab, setTab] = useState(5);
const [tab, setTab] = useState(0);
const initialData = {
name: dataUser?.name,
description: dataUser?.description,
@@ -39,6 +41,18 @@ function DetailUser({
national_code: dataUser?.national_code,
};
if (!dataUser) {
initialData.other = [
{
disease: dieses,
allergies: [],
medications: [],
surgeries: [],
family_history: [],
relatives: [],
},
];
}
const [data, setData] = useState(initialData);
const [loading, setLoading] = useState(false);
@@ -57,10 +71,10 @@ function DetailUser({
setLoading(true);
request
.patchUserProfile(data, dataUser.uuid)
.then((res) => {
.then(() => {
setLoading(false);
})
.catch((err) => {
.catch(() => {
setLoading(false);
});
};
@@ -74,6 +88,8 @@ function DetailUser({
setData={setData}
userInfo={userInfo}
dataUser={dataUser}
initialData={initialData}
updateDataUser={updateDataUser}
isTurnsDetails={isTurnsDetails}
setIsTurnsDetails={setIsTurnsDetails}
/>,
@@ -11,23 +11,20 @@ import {
import AutoSelector from "@/app/component/element/AutoSelector";
function Form({ data, userInfo, insurance, changeData, prevData }) {
const findVal = (list, name, arr) =>
data &&
list &&
list.length &&
list.find((g) => g.id === (arr ? data[name][0] : data[name]));
const findVal = (list, name) =>
data && list && list.length && list.find((g) => g.id === data[name]);
return (
<div className="grid grid-cols-1 lg:grid-cols-2 gap-[24px]">
<Content title="شماره موبایل" isConfirmed={true}>
<Field
isTransparent={true}
iconGray={true}
type="number"
disable={true}
iconGray={true}
name="work_phone"
isTransparent={true}
changeData={changeData}
data={userInfo?.username}
disable={true}
name="work_phone"
/>
</Content>
<Content title="کد ملی" isConfirmed={false}>
@@ -81,9 +78,12 @@ function Form({ data, userInfo, insurance, changeData, prevData }) {
updateData={(name, val) => {
changeData([Number(val.id)], "value", name);
}}
value={findVal(insurance, "basic_insurance", true)?.name}
label="نوع بیمه"
// value={findVal(insurance, "basic_insurance", true)?.name}
value={insurance?.find(
(g) => Number(g.id) === data.basic_insurance[0]
)}
name="basic_insurance"
label="نوع بیمه"
list={insurance}
/>
</Content>
@@ -7,7 +7,7 @@ export const dieses = [
{
id: 2,
name: "دیابت",
status: "true",
status: "false",
},
{
id: 3,
@@ -17,17 +17,17 @@ export const dieses = [
{
id: 4,
name: "بیماری قلبی عروقی",
status: "true",
status: "false",
},
{
id: 5,
name: "سرطان",
status: "true",
status: "false",
},
{
id: 6,
name: "آلزایمر",
status: "true",
status: "false",
},
{
id: 7,
@@ -37,7 +37,7 @@ export const dieses = [
{
id: 8,
name: "بیماری کلیوی",
status: "true",
status: "false",
},
{
id: 9,
@@ -57,7 +57,7 @@ export const dieses = [
{
id: 12,
name: "اضطراب مزمن",
status: "true",
status: "false",
},
{
id: 13,
@@ -72,7 +72,7 @@ export const dieses = [
{
id: 15,
name: "پرکاری تیروئید",
status: "true",
status: "false",
},
{
id: 16,
@@ -87,7 +87,7 @@ export const dieses = [
{
id: 18,
name: "هپاتیت C",
status: "true",
status: "false",
},
{
id: 19,
@@ -97,17 +97,17 @@ export const dieses = [
{
id: 20,
name: "COVID-19",
status: "true",
status: "false",
},
{
id: 21,
name: "لوپوس",
status: "true",
status: "false",
},
{
id: 22,
name: "ام‌اس (MS)",
status: "true",
status: "false",
},
{
id: 23,
@@ -5,7 +5,15 @@ import ArrowLeftWhiteD from "@/components/icons/ArrowLeftWhiteD";
import { request } from "@/services/response";
import Cookies from "js-cookie";
function Information({ user, data, setData, userInfo, dataUser }) {
function Information({
user,
data,
setData,
userInfo,
dataUser,
initialData,
updateDataUser,
}) {
const [disable, setDisable] = useState(true);
const [loading, setLoading] = useState(false);
const [insurance, setInsurance] = useState();
@@ -18,7 +26,7 @@ function Information({ user, data, setData, userInfo, dataUser }) {
setInsurance(res.data);
}
})
.catch((err) => {});
// .catch((err) => {});
}, []);
const changeData = (value, type, name) => {
@@ -36,6 +44,9 @@ function Information({ user, data, setData, userInfo, dataUser }) {
dataUser ? dataUser.uuid : Cookies.get("uuid")
)
.then((res) => {
if (!dataUser) {
updateDataUser();
}
setLoading(false);
})
.catch((err) => {
@@ -26,6 +26,7 @@ function UserAccountPage({
setIsTurnsDetails,
value,
setIsOpenSide,
updateDataUser,
dataUser,
userInfo,
}) {
@@ -35,6 +36,7 @@ function UserAccountPage({
dataUser={dataUser}
userInfo={userInfo}
isTurnsDetails={isTurnsDetails}
updateDataUser={updateDataUser}
setIsTurnsDetails={setIsTurnsDetails}
/>,
<Turns user={user} loading={false} setIsTurnsDetails={setIsTurnsDetails} />,
+10 -2
View File
@@ -1,6 +1,10 @@
import Cookies from "js-cookie";
import Image from "next/image";
function Head({ user }) {
const userInfo = Cookies.get("userInfo");
const parsedInfo = JSON.parse(userInfo);
return (
<div className="w-full flex flex-row md:flex-col items-center justify-center md:justify-start gap-[12px] md:gap-[4px]">
<Image
@@ -11,8 +15,12 @@ function Head({ user }) {
width={73}
/>
<div className="flex flex-col items-start md:items-center justify-center gap-[8px] md:gap-[4px]">
<p className="text-[#3B3B3B] text-[14px] font-bold">{user.name}</p>
<p className="text-[#7E7E7E] text-[14px] font-normal">{user.phone}</p>
<p className="text-[#3B3B3B] text-[14px] font-bold">
{parsedInfo.realName}
</p>
<p className="text-[#7E7E7E] text-[14px] font-normal">
{parsedInfo.username}
</p>
</div>
</div>
);
+2 -1
View File
@@ -1,9 +1,10 @@
function OTPForm({ index, value, onChange, inputRef, isError }) {
return (
<input
ref={inputRef}
type="tel"
value={value}
maxLength={1}
ref={inputRef}
onChange={(e) => {
const val = e.target.value;
if (/^\d?$/.test(val)) {