fix(ones): bug

This commit is contained in:
zhangheng
2026-04-14 17:14:43 +08:00
parent 86a4955c38
commit 2edc1f6b73

View File

@@ -24,7 +24,6 @@ import {
import { useForm } from "@mantine/form" import { useForm } from "@mantine/form"
import { notifications } from "@mantine/notifications" import { notifications } from "@mantine/notifications"
import { useEffect, useMemo } from "react" import { useEffect, useMemo } from "react"
import classes from "./DailyReportModal.module.css"
import { import {
accountTypeOpts, accountTypeOpts,
actualTypeOpts, actualTypeOpts,
@@ -33,6 +32,7 @@ import {
setTypeOpts, setTypeOpts,
workTypeOpts, workTypeOpts,
} from "../config" } from "../config"
import classes from "./DailyReportModal.module.css"
function normalizeTimeValue(value?: string | null) { function normalizeTimeValue(value?: string | null) {
if (!value) return "" if (!value) return ""
@@ -88,6 +88,85 @@ function HourRightSection() {
) )
} }
function getEmptyFormValues(currentUserName?: string) {
return {
user_name: currentUserName ?? "",
date: "",
start_time: "",
end_time: "",
set_type: "",
actual_type: "",
project_id: "",
leader_uid: "",
work_type: "",
accounting_type: "",
performance_accounting: "",
obj_type: "",
work_time: undefined as number | undefined,
rate: undefined as number | undefined,
standard_size: undefined as number | undefined,
completed_size: undefined as number | undefined,
residual_size: undefined as number | undefined,
residual_work_time: undefined as number | undefined,
residual_pm: "",
remarks: "",
}
}
function getCreateFormValues(currentUserName?: string) {
return {
...getEmptyFormValues(currentUserName),
date: new Date().toISOString().slice(0, 10),
}
}
function getRecordFormValues(
record: Daily.DailyWorkList,
currentUserName?: string
) {
return {
user_name: currentUserName ?? "",
date: record.date ?? "",
start_time: normalizeTimeValue(record.start_time),
end_time: normalizeTimeValue(record.end_time),
set_type: record.set_type ?? "",
actual_type: record.actual_type ?? "",
project_id:
record.project_id === undefined || record.project_id === null
? ""
: String(record.project_id),
leader_uid:
record.leader_uid === undefined || record.leader_uid === null
? ""
: String(record.leader_uid),
work_type: record.work_type ?? "",
accounting_type: record.accounting_type ?? "",
performance_accounting:
record.performance_accounting === true
? "true"
: record.performance_accounting === false
? "false"
: "",
obj_type:
record.obj_type === undefined || record.obj_type === null
? ""
: String(record.obj_type),
work_time: record.work_time ?? undefined,
rate: record.rate ?? undefined,
standard_size: record.standard_size ?? undefined,
completed_size: record.completed_size ?? undefined,
residual_size: record.residual_size ?? undefined,
residual_work_time: record.residual_work_time ?? undefined,
residual_pm:
record.residual_pm === true
? "正"
: record.residual_pm === false
? "负"
: "",
remarks: record.remarks ?? "",
}
}
export default function DailyReportModal(props: { export default function DailyReportModal(props: {
opened: boolean opened: boolean
record: Daily.DailyWorkList | null record: Daily.DailyWorkList | null
@@ -105,31 +184,10 @@ export default function DailyReportModal(props: {
}, [treeData]) }, [treeData])
const form = useForm({ const form = useForm({
initialValues: { initialValues: getEmptyFormValues(user_name),
user_name: user_name ?? "",
date: "",
start_time: "",
end_time: "",
set_type: "",
actual_type: "",
project_id: "",
leader_uid: "",
work_type: "",
accounting_type: "",
performance_accounting: "",
obj_type: "",
work_time: undefined as number | undefined,
rate: undefined as number | undefined,
standard_size: undefined as number | undefined,
completed_size: undefined as number | undefined,
residual_size: undefined as number | undefined,
residual_work_time: undefined as number | undefined,
residual_pm: "",
remarks: "",
},
validate: { validate: {
date: (v) => (v ? null : "请输入日期"), date: (v) => (v ? null : "请输入日期"),
// set_type: (v) => (v ? null : "请选择规定类型"), set_type: (v) => (v ? null : "请选择规定类型"),
actual_type: (v) => (v ? null : "请选择出勤类型"), actual_type: (v) => (v ? null : "请选择出勤类型"),
}, },
validateInputOnChange: true, validateInputOnChange: true,
@@ -137,77 +195,27 @@ export default function DailyReportModal(props: {
clearInputErrorOnChange: true, clearInputErrorOnChange: true,
}) })
const resetFormState = () => {
form.setValues(getEmptyFormValues(user_name))
form.clearErrors()
form.resetDirty()
}
useEffect(() => { useEffect(() => {
if (!opened) return if (!opened) {
resetFormState()
return
}
if (!record) { if (!record) {
form.setValues({ form.setValues(getCreateFormValues(user_name))
user_name: user_name ?? "", form.clearErrors()
date: new Date().toISOString().slice(0, 10),
start_time: "",
end_time: "",
set_type: "",
actual_type: "",
project_id: "",
leader_uid: "",
work_type: "",
accounting_type: "",
performance_accounting: "",
obj_type: "",
work_time: undefined,
rate: undefined,
standard_size: undefined,
completed_size: undefined,
residual_size: undefined,
residual_work_time: undefined,
residual_pm: "",
remarks: "",
})
form.resetDirty() form.resetDirty()
return return
} }
form.setValues({ form.setValues(getRecordFormValues(record, user_name))
user_name: user_name ?? "", form.clearErrors()
date: record.date ?? "",
start_time: normalizeTimeValue(record.start_time),
end_time: normalizeTimeValue(record.end_time),
set_type: record.set_type ?? "",
actual_type: record.actual_type ?? "",
project_id:
record.project_id === undefined || record.project_id === null
? ""
: String(record.project_id),
leader_uid:
record.leader_uid === undefined || record.leader_uid === null
? ""
: String(record.leader_uid),
work_type: record.work_type ?? "",
accounting_type: record.accounting_type ?? "",
performance_accounting:
record.performance_accounting === true
? "true"
: record.performance_accounting === false
? "false"
: "",
obj_type:
record.obj_type === undefined || record.obj_type === null
? ""
: String(record.obj_type),
work_time: record.work_time ?? undefined,
rate: record.rate ?? undefined,
standard_size: record.standard_size ?? undefined,
completed_size: record.completed_size ?? undefined,
residual_size: record.residual_size ?? undefined,
residual_work_time: record.residual_work_time ?? undefined,
residual_pm:
record.residual_pm === true
? "正"
: record.residual_pm === false
? "负"
: "",
remarks: record.remarks ?? "",
})
form.resetDirty() form.resetDirty()
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [opened, record, user_name]) }, [opened, record, user_name])
@@ -313,8 +321,8 @@ export default function DailyReportModal(props: {
message: "已提交日报", message: "已提交日报",
}) })
} }
resetFormState()
onCloseAction(true) onCloseAction(true)
form.reset()
} catch (e) { } catch (e) {
notifications.show({ notifications.show({
color: "red", color: "red",
@@ -328,7 +336,7 @@ export default function DailyReportModal(props: {
<Modal <Modal
opened={opened} opened={opened}
onClose={() => { onClose={() => {
form.reset() resetFormState()
onCloseAction() onCloseAction()
}} }}
title={record ? "编辑日报" : "填写日报"} title={record ? "编辑日报" : "填写日报"}
@@ -384,6 +392,10 @@ export default function DailyReportModal(props: {
searchable searchable
clearable clearable
{...form.getInputProps("set_type")} {...form.getInputProps("set_type")}
value={form.values.set_type || null}
onChange={(value) =>
form.setFieldValue("set_type", value ?? "")
}
/> />
<Select <Select
label="出勤类型" label="出勤类型"
@@ -392,6 +404,10 @@ export default function DailyReportModal(props: {
searchable searchable
clearable clearable
{...form.getInputProps("actual_type")} {...form.getInputProps("actual_type")}
value={form.values.actual_type || null}
onChange={(value) =>
form.setFieldValue("actual_type", value ?? "")
}
/> />
<div /> <div />
@@ -401,6 +417,10 @@ export default function DailyReportModal(props: {
searchable searchable
clearable clearable
{...form.getInputProps("project_id")} {...form.getInputProps("project_id")}
value={form.values.project_id || null}
onChange={(value) =>
form.setFieldValue("project_id", value ?? "")
}
/> />
<Select <Select
label="任务组长" label="任务组长"
@@ -408,6 +428,10 @@ export default function DailyReportModal(props: {
searchable searchable
clearable clearable
{...form.getInputProps("leader_uid")} {...form.getInputProps("leader_uid")}
value={form.values.leader_uid || null}
onChange={(value) =>
form.setFieldValue("leader_uid", value ?? "")
}
/> />
<Select <Select
label="工作类别" label="工作类别"
@@ -415,6 +439,10 @@ export default function DailyReportModal(props: {
searchable searchable
clearable clearable
{...form.getInputProps("work_type")} {...form.getInputProps("work_type")}
value={form.values.work_type || null}
onChange={(value) =>
form.setFieldValue("work_type", value ?? "")
}
/> />
<Select <Select
@@ -423,6 +451,10 @@ export default function DailyReportModal(props: {
searchable searchable
clearable clearable
{...form.getInputProps("obj_type")} {...form.getInputProps("obj_type")}
value={form.values.obj_type || null}
onChange={(value) =>
form.setFieldValue("obj_type", value ?? "")
}
/> />
<Select <Select
label="绩效核算" label="绩效核算"
@@ -430,6 +462,10 @@ export default function DailyReportModal(props: {
searchable searchable
clearable clearable
{...form.getInputProps("performance_accounting")} {...form.getInputProps("performance_accounting")}
value={form.values.performance_accounting || null}
onChange={(value) =>
form.setFieldValue("performance_accounting", value ?? "")
}
/> />
<Select <Select
label="核算方式" label="核算方式"
@@ -437,6 +473,10 @@ export default function DailyReportModal(props: {
searchable searchable
clearable clearable
{...form.getInputProps("accounting_type")} {...form.getInputProps("accounting_type")}
value={form.values.accounting_type || null}
onChange={(value) =>
form.setFieldValue("accounting_type", value ?? "")
}
/> />
<NumberInput <NumberInput
@@ -500,7 +540,7 @@ export default function DailyReportModal(props: {
<Button <Button
variant="default" variant="default"
onClick={() => { onClick={() => {
form.reset() resetFormState()
onCloseAction() onCloseAction()
}}> }}>