add mobile (#1)

* add mobile

* formatting
This commit is contained in:
Amirhossein Mahmoodi
2025-09-06 10:05:46 +03:30
committed by GitHub
parent 28af206696
commit 5ac43b6c3b
4 changed files with 59 additions and 4 deletions

View File

@@ -3,16 +3,19 @@ import StyledForm from "@/core/components/StyledForm";
import validateNationalCode from "@/core/utils/nationalCodeValidation";
import { yupResolver } from "@hookform/resolvers/yup";
import { Beenhere, ExitToApp } from "@mui/icons-material";
import { Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material";
import { Button, DialogActions, DialogContent, Grid, Stack, TextField } from "@mui/material";
import { Controller, useForm } from "react-hook-form";
import { object, string } from "yup";
const validationSchema = object({
name: string().required("وارد کردن نام فارسی الزامیست!"),
name: string().required("وارد کردن نام و نام خانوادگی الزامیست!"),
code: string()
.required("لطفا کد ملی را وارد کنید!!!")
.test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
.test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value)),
phone_number: string()
.matches(/^09\d{9}$/, "شماره موبایل باید با 09 شروع شده و 11 رقم باشد")
.required("لطفا تلفن همراه را وارد کنید!!!"),
});
const CreateFormContent = ({ setOpen, defaultValues, onSubmitBase }) => {
@@ -44,10 +47,10 @@ const CreateFormContent = ({ setOpen, defaultValues, onSubmitBase }) => {
<PersianTextField
fullWidth
size="small"
label="نام فارسی"
label="نام و نام خانوادگی"
value={value}
onChange={onChange}
placeholder="نام فارسی را وارد کنید"
placeholder="نام و نام خانوادگی را وارد کنید"
error={!!error}
helperText={error ? error.message : null}
variant="outlined"
@@ -82,6 +85,43 @@ const CreateFormContent = ({ setOpen, defaultValues, onSubmitBase }) => {
</Grid>
</Grid>
</Stack>
<Stack>
<Grid spacing={2}>
<Grid item xs={12} sm={6}>
<Controller
name="phone_number"
control={control}
render={({ field, fieldState: { error } }) => (
<TextField
value={field.value}
variant="outlined"
name="phone_number"
type={"tel"}
inputProps={{
inputMode: "number",
min: 0,
pattern: "[0-9]*",
}}
onChange={(event) => {
const inputValue = event.target.value;
if (isNaN(Number(inputValue))) {
return;
}
field.onChange(inputValue);
}}
label="شماره همراه"
placeholder={"شماره همراه را وارد کنید"}
fullWidth
size="small"
error={error}
helperText={error?.message}
InputLabelProps={{ shrink: true }}
/>
)}
/>
</Grid>
</Grid>
</Stack>
</Stack>
</DialogContent>
<DialogActions>

View File

@@ -10,11 +10,13 @@ const CreateForm = ({ open, setOpen, mutate }) => {
const defaultValues = {
name: "",
code: "",
phone_number: "",
};
const onSubmit = async (result) => {
const formData = new FormData();
formData.append("name", result.name);
formData.append("code", result.code);
formData.append("mobile", result.phone_number);
await requestServer(CREATE_RAHDARAN_ITEM, "post", {
data: formData,

View File

@@ -10,11 +10,13 @@ const EditController = ({ rowId, mutate, setOpen, row }) => {
const defaultData = {
name: row.original?.name || "",
code: row.original?.code || "",
phone_number: row.original?.mobile || "",
};
const handleSubmit = async (result) => {
const formData = new FormData();
formData.append("name", result.name);
formData.append("code", result.code);
formData.append("mobile", result.phone_number);
await requestServer(`${UPDATE_RAHDARAN_ITEM}/${rowId}`, "post", {
data: formData,

View File

@@ -43,6 +43,17 @@ const RahdaranList = () => {
grow: false,
size: 100,
},
{
accessorKey: "mobile",
header: "شماره همراه",
id: "mobile",
enableColumnFilter: true,
datatype: "text",
filterMode: "equals",
columnFilterModeOptions: ["equals", "contains"],
grow: false,
size: 100,
},
],
[]
);