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,25 +88,9 @@ function HourRightSection() {
|
||||
)
|
||||
}
|
||||
|
||||
export default function DailyReportModal(props: {
|
||||
opened: boolean
|
||||
record: Daily.DailyWorkList | null
|
||||
projectOptions: Array<{ label: string; value: string }>
|
||||
onCloseAction: (refresh?: boolean) => void
|
||||
}) {
|
||||
const { opened, record, onCloseAction, projectOptions } = props
|
||||
|
||||
const user_id = usePermissionStore((s) => s.user_id)
|
||||
const user_name = usePermissionStore((s) => s.user_name)
|
||||
const treeData = useAllUserStore((s) => s.treeData)
|
||||
|
||||
const leaderOptions = useMemo(() => {
|
||||
return flattenLeaderTree(treeData ?? [])
|
||||
}, [treeData])
|
||||
|
||||
const form = useForm({
|
||||
initialValues: {
|
||||
user_name: user_name ?? "",
|
||||
function getEmptyFormValues(currentUserName?: string) {
|
||||
return {
|
||||
user_name: currentUserName ?? "",
|
||||
date: "",
|
||||
start_time: "",
|
||||
end_time: "",
|
||||
@@ -126,49 +110,22 @@ export default function DailyReportModal(props: {
|
||||
residual_work_time: undefined as number | undefined,
|
||||
residual_pm: "",
|
||||
remarks: "",
|
||||
},
|
||||
validate: {
|
||||
date: (v) => (v ? null : "请输入日期"),
|
||||
// set_type: (v) => (v ? null : "请选择规定类型"),
|
||||
actual_type: (v) => (v ? null : "请选择出勤类型"),
|
||||
},
|
||||
validateInputOnChange: true,
|
||||
validateInputOnBlur: true,
|
||||
clearInputErrorOnChange: true,
|
||||
})
|
||||
|
||||
useEffect(() => {
|
||||
if (!opened) 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.resetDirty()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
form.setValues({
|
||||
user_name: user_name ?? "",
|
||||
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),
|
||||
@@ -207,7 +164,58 @@ export default function DailyReportModal(props: {
|
||||
? "负"
|
||||
: "",
|
||||
remarks: record.remarks ?? "",
|
||||
}
|
||||
}
|
||||
|
||||
export default function DailyReportModal(props: {
|
||||
opened: boolean
|
||||
record: Daily.DailyWorkList | null
|
||||
projectOptions: Array<{ label: string; value: string }>
|
||||
onCloseAction: (refresh?: boolean) => void
|
||||
}) {
|
||||
const { opened, record, onCloseAction, projectOptions } = props
|
||||
|
||||
const user_id = usePermissionStore((s) => s.user_id)
|
||||
const user_name = usePermissionStore((s) => s.user_name)
|
||||
const treeData = useAllUserStore((s) => s.treeData)
|
||||
|
||||
const leaderOptions = useMemo(() => {
|
||||
return flattenLeaderTree(treeData ?? [])
|
||||
}, [treeData])
|
||||
|
||||
const form = useForm({
|
||||
initialValues: getEmptyFormValues(user_name),
|
||||
validate: {
|
||||
date: (v) => (v ? null : "请输入日期"),
|
||||
set_type: (v) => (v ? null : "请选择规定类型"),
|
||||
actual_type: (v) => (v ? null : "请选择出勤类型"),
|
||||
},
|
||||
validateInputOnChange: true,
|
||||
validateInputOnBlur: true,
|
||||
clearInputErrorOnChange: true,
|
||||
})
|
||||
|
||||
const resetFormState = () => {
|
||||
form.setValues(getEmptyFormValues(user_name))
|
||||
form.clearErrors()
|
||||
form.resetDirty()
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!opened) {
|
||||
resetFormState()
|
||||
return
|
||||
}
|
||||
|
||||
if (!record) {
|
||||
form.setValues(getCreateFormValues(user_name))
|
||||
form.clearErrors()
|
||||
form.resetDirty()
|
||||
return
|
||||
}
|
||||
|
||||
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