开始时间和结束时间增加验证

master
LiuJiaNan 2026-04-15 16:33:16 +08:00
parent c5623d3e44
commit 91451bfddf
8 changed files with 108 additions and 55 deletions

View File

@ -34,7 +34,7 @@
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-signature-canvas": "^1.1.0-alpha.2", "react-signature-canvas": "^1.1.0-alpha.2",
"zy-react-library": "^1.2.15" "zy-react-library": "^1.2.35"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "^5.4.1", "@antfu/eslint-config": "^5.4.1",

View File

@ -21,7 +21,7 @@ import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useDictionary from "zy-react-library/hooks/useDictionary"; import useDictionary from "zy-react-library/hooks/useDictionary";
import useUploadFile from "zy-react-library/hooks/useUploadFile"; import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { ID_NUMBER, LICENSE_PLATE_NUMBER, PHONE } from "zy-react-library/regular"; import { ID_NUMBER, LICENSE_PLATE_NUMBER, PHONE } from "zy-react-library/regular";
import { getLabelName, validatorEndTime } from "zy-react-library/utils"; import { getLabelName, validatorEndTime, validatorTimeGECurrentDay } from "zy-react-library/utils";
import SignatureH5 from "~/components/SignatureH5"; import SignatureH5 from "~/components/SignatureH5";
import { import {
NS_APPROVER_USER, NS_APPROVER_USER,
@ -570,43 +570,46 @@ const BasicInfoFields = () => (
); );
// 公共访问时间组件 // 公共访问时间组件
const VisitTime = ({ form }) => ( const VisitTime = ({ form }) => {
<> const visitStartTime = Form.useWatch("visitStartTime", form);
<Form.Item return (
name="visitStartTime" <>
label="访问起始时间" <Form.Item
rules={[{ required: true, message: "请选择访问起始时间" }]} name="visitStartTime"
trigger="onConfirm" label="访问起始时间"
onClick={(_, pickerRef) => { rules={[{ required: true, message: "请选择访问起始时间" }, validatorTimeGECurrentDay({ type: "date" })]}
pickerRef.current?.open(); trigger="onConfirm"
}} onClick={(_, pickerRef) => {
getValueFromEvent={value => dayjs(value).format("YYYY-MM-DD")} pickerRef.current?.open();
getValueProps={value => dayjs(value)} }}
> getValueFromEvent={value => dayjs(value).format("YYYY-MM-DD")}
<DatePicker> getValueProps={value => dayjs(value)}
{value => value ? dayjs(value).format("YYYY-MM-DD") : "请选择访问起始时间"} >
</DatePicker> <DatePicker>
</Form.Item> {value => value ? dayjs(value).format("YYYY-MM-DD") : "请选择访问起始时间"}
<Form.Item </DatePicker>
name="visitEndTime" </Form.Item>
label="访问结束时间" <Form.Item
rules={[{ name="visitEndTime"
required: true, label="访问结束时间"
message: "请选择访问结束时间", rules={[{
}, (() => validatorEndTime(form.getFieldValue("visitStartTime")))()]} required: true,
trigger="onConfirm" message: "请选择访问结束时间",
onClick={(_, pickerRef) => { }, validatorEndTime({ startTime: visitStartTime })]}
pickerRef.current?.open(); trigger="onConfirm"
}} onClick={(_, pickerRef) => {
getValueFromEvent={value => dayjs(value).format("YYYY-MM-DD")} pickerRef.current?.open();
getValueProps={value => dayjs(value)} }}
> getValueFromEvent={value => dayjs(value).format("YYYY-MM-DD")}
<DatePicker> getValueProps={value => dayjs(value)}
{value => value ? dayjs(value).format("YYYY-MM-DD") : "请选择访问结束时间"} >
</DatePicker> <DatePicker>
</Form.Item> {value => value ? dayjs(value).format("YYYY-MM-DD") : "请选择访问结束时间"}
</> </DatePicker>
); </Form.Item>
</>
);
};
// 公共地点字段组件 // 公共地点字段组件
const LocationFields = ({ const LocationFields = ({

View File

@ -11,6 +11,7 @@ import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { LICENSE_PLATE_NUMBER } from "zy-react-library/regular"; import { LICENSE_PLATE_NUMBER } from "zy-react-library/regular";
import { validatorEndTime, validatorTimeGECurrentDay } from "zy-react-library/utils";
import { NS_VEHICLE_APPLY } from "~/enumerate/namespace"; import { NS_VEHICLE_APPLY } from "~/enumerate/namespace";
function List(props) { function List(props) {
@ -155,6 +156,7 @@ const AddModalComponent = (props) => {
const { info } = props; const { info } = props;
const isEdit = !!info.id; const isEdit = !!info.id;
const [form] = FormBuilder.useForm(); const [form] = FormBuilder.useForm();
const inspectCarList = FormBuilder.useWatch("inspectCarList", form);
const onSubmit = async (values) => { const onSubmit = async (values) => {
let outsideSuccess = false; let outsideSuccess = false;
@ -189,11 +191,11 @@ const AddModalComponent = (props) => {
width={600} width={600}
onCancel={props.onCancel} onCancel={props.onCancel}
onOk={form.submit} onOk={form.submit}
confirmLoading={props.vehicleApply.vehicleApplyLoading} // confirmLoading={props.vehicleApply.vehicleApplyLoading}
> >
<FormBuilder <FormBuilder
form={form} form={form}
loading={props.vehicleApply.vehicleApplyLoading} // loading={props.vehicleApply.vehicleApplyLoading}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
span={24} span={24}
@ -217,7 +219,7 @@ const AddModalComponent = (props) => {
formListUniqueProps: { formListUniqueProps: {
showAddButton: !isEdit, showAddButton: !isEdit,
showRemoveButton: !isEdit, showRemoveButton: !isEdit,
options: field => ([ options: (field, fieldIndex) => ([
{ {
name: [field.name, "licenceType"], name: [field.name, "licenceType"],
label: "车牌类型", label: "车牌类型",
@ -236,7 +238,6 @@ const AddModalComponent = (props) => {
label: "车牌号", label: "车牌号",
rules: [{ pattern: LICENSE_PLATE_NUMBER, message: "请输入正确的车牌号" }], rules: [{ pattern: LICENSE_PLATE_NUMBER, message: "请输入正确的车牌号" }],
}, },
{ name: [field.name, "vehicleTypeName"], label: "车辆类型名称", onlyForLabel: true },
{ {
name: [field.name, "vehicleType"], name: [field.name, "vehicleType"],
label: "车辆类型", label: "车辆类型",
@ -249,6 +250,19 @@ const AddModalComponent = (props) => {
/> />
), ),
}, },
{ name: [field.name, "vehicleTypeName"], label: "车辆类型名称", onlyForLabel: true },
{
name: [field.name, "visitStartTime"],
label: "访问开始时间",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [validatorTimeGECurrentDay({ type: "date" })],
},
{
name: [field.name, "visitEndTime"],
label: "访问结束时间",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [validatorEndTime({ startTime: inspectCarList?.[fieldIndex]?.visitStartTime })],
},
]), ]),
}, },
}, },
@ -290,6 +304,8 @@ const ViewModalComponent = (props) => {
{ label: "车牌类型", children: info.licenceTypeName }, { label: "车牌类型", children: info.licenceTypeName },
{ label: "车牌号", children: info.licenceNo }, { label: "车牌号", children: info.licenceNo },
{ label: "车辆类型", children: info.vehicleTypeName }, { label: "车辆类型", children: info.vehicleTypeName },
{ label: "访问开始时间", children: info.visitStartTime },
{ label: "访问结束时间", children: info.visitEndTime },
]} ]}
/> />
</Modal> </Modal>

View File

@ -13,6 +13,7 @@ import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo"; import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
import useUploadFile from "zy-react-library/hooks/useUploadFile"; import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { LICENSE_PLATE_NUMBER } from "zy-react-library/regular"; import { LICENSE_PLATE_NUMBER } from "zy-react-library/regular";
import { validatorEndTime, validatorTimeGECurrentDay } from "zy-react-library/utils";
import { VEHICLE_TYPE_ENUM } from "~/enumerate/constant"; import { VEHICLE_TYPE_ENUM } from "~/enumerate/constant";
import { NS_APPROVER_USER, NS_VEHICLE_APPLY } from "~/enumerate/namespace"; import { NS_APPROVER_USER, NS_VEHICLE_APPLY } from "~/enumerate/namespace";
@ -20,6 +21,7 @@ function Add(props) {
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const { getUserInfo } = useGetUserInfo(); const { getUserInfo } = useGetUserInfo();
const [form] = FormBuilder.useForm(); const [form] = FormBuilder.useForm();
const visitStartTime = FormBuilder.useWatch("visitStartTime", form);
const { loading: uploadFileLoading, uploadFile } = useUploadFile(); const { loading: uploadFileLoading, uploadFile } = useUploadFile();
const { loading: deleteFileLoading, deleteFile } = useDeleteFile(); const { loading: deleteFileLoading, deleteFile } = useDeleteFile();
const { loading: getFileLoading, getFile } = useGetFile(); const { loading: getFileLoading, getFile } = useGetFile();
@ -223,8 +225,18 @@ function Add(props) {
), ),
}, },
{ name: "area", label: "访问港区", onlyForLabel: true }, { name: "area", label: "访问港区", onlyForLabel: true },
{ name: "visitStartTime", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATETIME }, {
{ name: "visitEndTime", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATETIME }, name: "visitStartTime",
label: "访问开始时间",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [validatorTimeGECurrentDay({ type: "date" })],
},
{
name: "visitEndTime",
label: "访问结束时间",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [validatorEndTime({ startTime: visitStartTime })],
},
{ {
name: "drivingLicenseFile", name: "drivingLicenseFile",
label: "行驶证照片", label: "行驶证照片",

View File

@ -9,12 +9,13 @@ import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useUploadFile from "zy-react-library/hooks/useUploadFile"; import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { ID_NUMBER, PHONE } from "zy-react-library/regular"; import { ID_NUMBER, PHONE } from "zy-react-library/regular";
import { getLabelName } from "zy-react-library/utils"; import { getLabelName, validatorEndTime, validatorTimeGECurrentDay } from "zy-react-library/utils";
import { NS_APPROVER_USER, NS_FIRST_LEVEL_DOOR_INFO, NS_TEMPORARY_PERSONNEL } from "~/enumerate/namespace"; import { NS_APPROVER_USER, NS_FIRST_LEVEL_DOOR_INFO, NS_TEMPORARY_PERSONNEL } from "~/enumerate/namespace";
function Add(props) { function Add(props) {
const [form] = FormBuilder.useForm(); const [form] = FormBuilder.useForm();
const gateLevelAuthArea = FormBuilder.useWatch("gateLevelAuthArea", form); const gateLevelAuthArea = FormBuilder.useWatch("gateLevelAuthArea", form);
const visitStartTime = FormBuilder.useWatch("visitStartTime", form);
const { loading: uploadFileLoading, uploadFile } = useUploadFile(); const { loading: uploadFileLoading, uploadFile } = useUploadFile();
const [approvalUserListAll, setApprovalUserListAll] = useState([]); const [approvalUserListAll, setApprovalUserListAll] = useState([]);
@ -72,8 +73,18 @@ function Add(props) {
{ name: "employeePersonUserName", label: "访问人姓名", span: 24 }, { name: "employeePersonUserName", label: "访问人姓名", span: 24 },
{ name: "userPhone", label: "手机号", rules: [{ pattern: PHONE, message: "请输入正确的手机号" }] }, { name: "userPhone", label: "手机号", rules: [{ pattern: PHONE, message: "请输入正确的手机号" }] },
{ name: "userCard", label: "身份证号", rules: [{ pattern: ID_NUMBER, message: "请输入正确的身份证号" }] }, { name: "userCard", label: "身份证号", rules: [{ pattern: ID_NUMBER, message: "请输入正确的身份证号" }] },
{ name: "visitStartTime", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATE }, {
{ name: "visitEndTime", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATE }, name: "visitStartTime",
label: "访问开始时间",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [validatorTimeGECurrentDay({ type: "date" })],
},
{
name: "visitEndTime",
label: "访问结束时间",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [validatorEndTime({ startTime: visitStartTime })],
},
{ {
name: "gateLevelAuthArea", name: "gateLevelAuthArea",
label: "访问港区", label: "访问港区",

View File

@ -53,8 +53,8 @@ function List(props) {
onFinish={getData} onFinish={getData}
options={[ options={[
{ name: "employeePersonUserName", label: "访问人姓名" }, { name: "employeePersonUserName", label: "访问人姓名" },
{ name: "visitStartTime", label: "访问开始时间" }, { name: "visitStartTime", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATE },
{ name: "visitEndTime", label: "访问结束时间" }, { name: "visitEndTime", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATE },
{ name: "auditFlag", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: STATUS_ENUM }, { name: "auditFlag", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: STATUS_ENUM },
{ {
name: "mkmjId", name: "mkmjId",

View File

@ -9,7 +9,7 @@ import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useUploadFile from "zy-react-library/hooks/useUploadFile"; import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { ID_NUMBER, LICENSE_PLATE_NUMBER, PHONE } from "zy-react-library/regular"; import { ID_NUMBER, LICENSE_PLATE_NUMBER, PHONE } from "zy-react-library/regular";
import { getLabelName } from "zy-react-library/utils"; import { getLabelName, validatorEndTime, validatorTimeGECurrentDay } from "zy-react-library/utils";
import { import {
NS_APPROVER_USER, NS_APPROVER_USER,
NS_FIRST_LEVEL_DOOR_INFO, NS_FIRST_LEVEL_DOOR_INFO,
@ -20,6 +20,7 @@ import {
function Add(props) { function Add(props) {
const [form] = FormBuilder.useForm(); const [form] = FormBuilder.useForm();
const gateLevelAuthArea = FormBuilder.useWatch("gateLevelAuthArea", form); const gateLevelAuthArea = FormBuilder.useWatch("gateLevelAuthArea", form);
const visitStartTime = FormBuilder.useWatch("visitStartTime", form);
const { loading: uploadFileLoading, uploadFile } = useUploadFile(); const { loading: uploadFileLoading, uploadFile } = useUploadFile();
const [approvalUserListAll, setApprovalUserListAll] = useState([]); const [approvalUserListAll, setApprovalUserListAll] = useState([]);
@ -122,8 +123,18 @@ function Add(props) {
), ),
}, },
{ name: "vehicleTypeName", label: "车辆类型", onlyForLabel: true }, { name: "vehicleTypeName", label: "车辆类型", onlyForLabel: true },
{ name: "visitStartTime", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATE }, {
{ name: "visitEndTime", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATE }, name: "visitStartTime",
label: "访问开始时间",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [validatorTimeGECurrentDay({ type: "date" })],
},
{
name: "visitEndTime",
label: "访问结束时间",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [validatorEndTime({ startTime: visitStartTime })],
},
{ {
name: "gateLevelAuthArea", name: "gateLevelAuthArea",
label: "访问港区", label: "访问港区",

View File

@ -47,8 +47,8 @@ function List(props) {
options={[ options={[
{ name: "employeeVehicleUserName", label: "访问人姓名" }, { name: "employeeVehicleUserName", label: "访问人姓名" },
{ name: "licenceNo", label: "车牌号" }, { name: "licenceNo", label: "车牌号" },
{ name: "visitStartTime", label: "访问开始时间" }, { name: "visitStartTime", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATE },
{ name: "visitEndTime", label: "访问结束时间" }, { name: "visitEndTime", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATE },
{ name: "auditStatus", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: VEHICLE_AUDIT_STATUS_ENUM }, { name: "auditStatus", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: VEHICLE_AUDIT_STATUS_ENUM },
{ {
name: "todo6", name: "todo6",