add fields => psp devices change owner add some fileds to form

This commit is contained in:
2026-01-27 11:30:50 +03:30
parent d76c057f15
commit 01638e004d

View File

@@ -400,6 +400,34 @@ const AssignOwnerModal = ({ device, onSuccess }) => {
const [loading, setLoading] = useState(false);
const [submitting, setSubmitting] = useState(false);
const [fetchError, setFetchError] = useState("");
const [values, setValues] = useState({
receiver_number: device?.receiverNumber,
terminal_number: device?.terminalNumber,
password: device?.password,
});
const [errors, setErrors] = useState({});
const validate = () => {
const newErrors = {};
if (!values.receiver_number?.trim()) {
newErrors.receiver_number = "وارد کردن شماره پذیرنده الزامی است.";
}
if (!values.terminal_number?.trim()) {
newErrors.terminal_number = "وارد کردن شماره ترمینال الزامی است.";
}
if (!values.password?.trim()) {
newErrors.password = "وارد کردن رمز عبور الزامی است.";
} else if (!/^\d{4}$/.test(values.password)) {
newErrors.password = "رمز عبور باید دقیقاً ۴ رقم عددی باشد.";
}
setErrors(newErrors);
return Object.keys(newErrors).length === 0;
};
useEffect(() => {
let isMounted = true;
@@ -461,10 +489,19 @@ const AssignOwnerModal = ({ device, onSuccess }) => {
dispatch(CLOSE_MODAL());
};
const handleSubmit = async () => {
if (!selectedOption) {
return;
const handleChange = (event) => {
const { name, value } = event.target;
setValues((prev) => ({ ...prev, [name]: value }));
if (errors[name]) {
setErrors((prev) => ({ ...prev, [name]: "" }));
}
};
const handleSubmit = async () => {
if (!selectedOption) return;
if (!validate()) return;
if (!device?.key && !device?.id) {
openNotif({
@@ -482,6 +519,10 @@ const AssignOwnerModal = ({ device, onSuccess }) => {
key: device?.key || device?.id,
recipient_type: "owner",
recipient_key: selectedOption?.key || selectedOption?.id,
receiver_number: values.receiver_number.trim(),
terminal_number: values.terminal_number.trim(),
password: values.password.replace(/\D/g, "").slice(0, 4),
};
await axios.put("/user-pos-machine/0/", payload);
@@ -493,9 +534,7 @@ const AssignOwnerModal = ({ device, onSuccess }) => {
msg: "مالک با موفقیت ثبت شد.",
});
if (onSuccess) {
onSuccess();
}
onSuccess?.();
handleCloseModal();
} catch (error) {
openNotif({
@@ -584,6 +623,39 @@ const AssignOwnerModal = ({ device, onSuccess }) => {
)}
/>
)}
<TextField
label="شماره پذیرنده"
name="receiver_number"
value={values.receiver_number}
onChange={handleChange}
fullWidth
error={Boolean(errors.receiver_number)}
helperText={errors.receiver_number}
/>
<TextField
label="شماره ترمینال"
name="terminal_number"
value={values.terminal_number}
onChange={handleChange}
fullWidth
error={Boolean(errors.terminal_number)}
helperText={errors.terminal_number}
/>
<TextField
label="رمز عبور"
name="password"
type="password"
value={values.password}
onChange={handleChange}
fullWidth
error={Boolean(errors.password)}
helperText={errors.password}
inputProps={{
inputMode: "numeric",
pattern: "[0-9]{4}",
maxLength: 4,
}}
/>
{fetchError && (
<Typography variant="caption" color="error">
{fetchError}
@@ -594,7 +666,7 @@ const AssignOwnerModal = ({ device, onSuccess }) => {
variant="outlined"
color="primary"
onClick={handleCloseModal}
disabled={submitting}
disabled={!selectedOption || submitting || loading}
>
انصراف
</Button>