fix(ones): bug
This commit is contained in:
@@ -24,7 +24,6 @@ import {
|
||||
import { useForm } from "@mantine/form"
|
||||
import { notifications } from "@mantine/notifications"
|
||||
import { useEffect, useMemo } from "react"
|
||||
import classes from "./DailyReportModal.module.css"
|
||||
import {
|
||||
accountTypeOpts,
|
||||
actualTypeOpts,
|
||||
@@ -33,6 +32,7 @@ import {
|
||||
setTypeOpts,
|
||||
workTypeOpts,
|
||||
} from "../config"
|
||||
import classes from "./DailyReportModal.module.css"
|
||||
|
||||
function normalizeTimeValue(value?: string | null) {
|
||||
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: {
|
||||
opened: boolean
|
||||
record: Daily.DailyWorkList | null
|
||||
@@ -105,31 +184,10 @@ export default function DailyReportModal(props: {
|
||||
}, [treeData])
|
||||
|
||||
const form = useForm({
|
||||
initialValues: {
|
||||
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: "",
|
||||
},
|
||||
initialValues: getEmptyFormValues(user_name),
|
||||
validate: {
|
||||
date: (v) => (v ? null : "请输入日期"),
|
||||
// set_type: (v) => (v ? null : "请选择规定类型"),
|
||||
set_type: (v) => (v ? null : "请选择规定类型"),
|
||||
actual_type: (v) => (v ? null : "请选择出勤类型"),
|
||||
},
|
||||
validateInputOnChange: true,
|
||||
@@ -137,77 +195,27 @@ export default function DailyReportModal(props: {
|
||||
clearInputErrorOnChange: true,
|
||||
})
|
||||
|
||||
const resetFormState = () => {
|
||||
form.setValues(getEmptyFormValues(user_name))
|
||||
form.clearErrors()
|
||||
form.resetDirty()
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!opened) return
|
||||
if (!opened) {
|
||||
resetFormState()
|
||||
return
|
||||
}
|
||||
|
||||
if (!record) {
|
||||
form.setValues({
|
||||
user_name: user_name ?? "",
|
||||
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.setValues(getCreateFormValues(user_name))
|
||||
form.clearErrors()
|
||||
form.resetDirty()
|
||||
return
|
||||
}
|
||||
|
||||
form.setValues({
|
||||
user_name: user_name ?? "",
|
||||
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.setValues(getRecordFormValues(record, user_name))
|
||||
form.clearErrors()
|
||||
form.resetDirty()
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [opened, record, user_name])
|
||||
@@ -313,8 +321,8 @@ export default function DailyReportModal(props: {
|
||||
message: "已提交日报",
|
||||
})
|
||||
}
|
||||
resetFormState()
|
||||
onCloseAction(true)
|
||||
form.reset()
|
||||
} catch (e) {
|
||||
notifications.show({
|
||||
color: "red",
|
||||
@@ -328,7 +336,7 @@ export default function DailyReportModal(props: {
|
||||
<Modal
|
||||
opened={opened}
|
||||
onClose={() => {
|
||||
form.reset()
|
||||
resetFormState()
|
||||
onCloseAction()
|
||||
}}
|
||||
title={record ? "编辑日报" : "填写日报"}
|
||||
@@ -384,6 +392,10 @@ export default function DailyReportModal(props: {
|
||||
searchable
|
||||
clearable
|
||||
{...form.getInputProps("set_type")}
|
||||
value={form.values.set_type || null}
|
||||
onChange={(value) =>
|
||||
form.setFieldValue("set_type", value ?? "")
|
||||
}
|
||||
/>
|
||||
<Select
|
||||
label="出勤类型"
|
||||
@@ -392,6 +404,10 @@ export default function DailyReportModal(props: {
|
||||
searchable
|
||||
clearable
|
||||
{...form.getInputProps("actual_type")}
|
||||
value={form.values.actual_type || null}
|
||||
onChange={(value) =>
|
||||
form.setFieldValue("actual_type", value ?? "")
|
||||
}
|
||||
/>
|
||||
<div />
|
||||
|
||||
@@ -401,6 +417,10 @@ export default function DailyReportModal(props: {
|
||||
searchable
|
||||
clearable
|
||||
{...form.getInputProps("project_id")}
|
||||
value={form.values.project_id || null}
|
||||
onChange={(value) =>
|
||||
form.setFieldValue("project_id", value ?? "")
|
||||
}
|
||||
/>
|
||||
<Select
|
||||
label="任务组长"
|
||||
@@ -408,6 +428,10 @@ export default function DailyReportModal(props: {
|
||||
searchable
|
||||
clearable
|
||||
{...form.getInputProps("leader_uid")}
|
||||
value={form.values.leader_uid || null}
|
||||
onChange={(value) =>
|
||||
form.setFieldValue("leader_uid", value ?? "")
|
||||
}
|
||||
/>
|
||||
<Select
|
||||
label="工作类别"
|
||||
@@ -415,6 +439,10 @@ export default function DailyReportModal(props: {
|
||||
searchable
|
||||
clearable
|
||||
{...form.getInputProps("work_type")}
|
||||
value={form.values.work_type || null}
|
||||
onChange={(value) =>
|
||||
form.setFieldValue("work_type", value ?? "")
|
||||
}
|
||||
/>
|
||||
|
||||
<Select
|
||||
@@ -423,6 +451,10 @@ export default function DailyReportModal(props: {
|
||||
searchable
|
||||
clearable
|
||||
{...form.getInputProps("obj_type")}
|
||||
value={form.values.obj_type || null}
|
||||
onChange={(value) =>
|
||||
form.setFieldValue("obj_type", value ?? "")
|
||||
}
|
||||
/>
|
||||
<Select
|
||||
label="绩效核算"
|
||||
@@ -430,6 +462,10 @@ export default function DailyReportModal(props: {
|
||||
searchable
|
||||
clearable
|
||||
{...form.getInputProps("performance_accounting")}
|
||||
value={form.values.performance_accounting || null}
|
||||
onChange={(value) =>
|
||||
form.setFieldValue("performance_accounting", value ?? "")
|
||||
}
|
||||
/>
|
||||
<Select
|
||||
label="核算方式"
|
||||
@@ -437,6 +473,10 @@ export default function DailyReportModal(props: {
|
||||
searchable
|
||||
clearable
|
||||
{...form.getInputProps("accounting_type")}
|
||||
value={form.values.accounting_type || null}
|
||||
onChange={(value) =>
|
||||
form.setFieldValue("accounting_type", value ?? "")
|
||||
}
|
||||
/>
|
||||
|
||||
<NumberInput
|
||||
@@ -500,7 +540,7 @@ export default function DailyReportModal(props: {
|
||||
<Button
|
||||
variant="default"
|
||||
onClick={() => {
|
||||
form.reset()
|
||||
resetFormState()
|
||||
onCloseAction()
|
||||
}}>
|
||||
取消
|
||||
|
||||
Reference in New Issue
Block a user