fix(ones): bug
This commit is contained in:
@@ -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()
|
||||||
}}>
|
}}>
|
||||||
取消
|
取消
|
||||||
|
|||||||
Reference in New Issue
Block a user