diff --git a/src/pages/Container/BranchCompany/RescueTeam/Add/index.js b/src/pages/Container/BranchCompany/RescueTeam/Add/index.js
index cc737d6..57fc3d7 100644
--- a/src/pages/Container/BranchCompany/RescueTeam/Add/index.js
+++ b/src/pages/Container/BranchCompany/RescueTeam/Add/index.js
@@ -1,6 +1,6 @@
-import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
+import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
-import { Button, Card, Col, DatePicker, Form, Input, message, Row, Space, Table } from "antd";
+import { Button, Card, Col, DatePicker, Form, Input, message, Row, Space } from "antd";
import dayjs from "dayjs";
import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page";
@@ -8,6 +8,22 @@ import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { NS_RESCUE_TEAM } from "~/enumerate/namespace";
+// 手机号验证正则
+const MOBILE_PATTERN = /^1[3-9]\d{9}$/;
+// 固话验证正则(支持区号-号码格式,如:023-12345678 或 直接号码)
+const LANDLINE_PATTERN = /^(\d{3,4}-?)?\d{7,8}$/;
+
+// 手机号或固话验证函数
+const validatePhone = (rule, value) => {
+ if (!value) {
+ return Promise.resolve();
+ }
+ if (MOBILE_PATTERN.test(value) || LANDLINE_PATTERN.test(value)) {
+ return Promise.resolve();
+ }
+ return Promise.reject(new Error("请输入正确的手机号或固话"));
+};
+
function Add(props) {
const query = useGetUrlQuery();
const [form] = Form.useForm();
@@ -15,7 +31,14 @@ function Add(props) {
const [submitting, setSubmitting] = useState(false);
// 消防队员列表
- const [rescueMembers, setRescueMembers] = useState([]);
+ const createEmptyMember = () => ({
+ key: `${Date.now()}-${Math.random()}`,
+ personName: "",
+ personPhone: "",
+ dutyDesc: "",
+ roleCode: 1,
+ });
+ const [rescueMembers, setRescueMembers] = useState([createEmptyMember()]);
// 添加状态保存字典显示名称
const [teamTypeName, setTeamTypeName] = useState("");
@@ -43,7 +66,16 @@ function Add(props) {
// 设置消防队员列表
if (data.rescueMembers && data.rescueMembers.length > 0) {
- setRescueMembers(data.rescueMembers.map((item, index) => ({ ...item, key: item.id || index })));
+ const members = data.rescueMembers.map((item, index) => ({ ...item, key: item.id || index }));
+ setRescueMembers(members);
+ // 同步设置Form的队员数据
+ form.setFieldValue('rescueMembersForm', members.map(m => ({
+ personName: m.personName,
+ personPhone: m.personPhone,
+ })));
+ }
+ else {
+ setRescueMembers([createEmptyMember()]);
}
}
catch (error) {
@@ -65,15 +97,6 @@ function Add(props) {
return;
}
- // 验证消防队员必填项
- const invalidMember = rescueMembers.find(
- item => !item.personName || !item.personPhone,
- );
- if (invalidMember) {
- message.warning("请完善消防队员信息");
- return;
- }
-
setSubmitting(true);
try {
const apiMethod = query.id ? props["rescueTeamUpdate"] : props["rescueTeamAdd"];
@@ -119,18 +142,21 @@ function Add(props) {
// 消防队员相关操作
const addMember = () => {
- const newMember = {
- key: Date.now(),
- personName: "",
- personPhone: "",
- dutyDesc: "",
- roleCode: 1,
- };
- setRescueMembers([...rescueMembers, newMember]);
+ const newMembers = [...rescueMembers, createEmptyMember()];
+ setRescueMembers(newMembers);
+ // 同步更新Form
+ const formMembers = form.getFieldValue('rescueMembersForm') || [];
+ form.setFieldValue('rescueMembersForm', [...formMembers, { personName: '', personPhone: '' }]);
};
const removeMember = (key) => {
- setRescueMembers(rescueMembers.filter(item => item.key !== key));
+ const index = rescueMembers.findIndex(item => item.key === key);
+ const newMembers = rescueMembers.filter(item => item.key !== key);
+ setRescueMembers(newMembers);
+ // 同步更新Form
+ const formMembers = form.getFieldValue('rescueMembersForm') || [];
+ formMembers.splice(index, 1);
+ form.setFieldValue('rescueMembersForm', [...formMembers]);
};
const updateMember = (key, field, value) => {
@@ -139,63 +165,20 @@ function Add(props) {
);
};
- // 消防队员表格列定义
- const memberColumns = [
- {
- title: (<>
-
*
- 队员姓名
- >),
- dataIndex: "personName",
- render: (text, record) => (
-
updateMember(record.key, "personName", e.target.value)}
- />
- ),
- },
- {
- title: (<>
-
*
- 队员电话
- >),
- dataIndex: "personPhone",
- render: (text, record) => (
-
updateMember(record.key, "personPhone", e.target.value)}
- />
- ),
- },
- {
- title: "操作",
- width: 80,
- align: "center",
- render: (_, record) => (
-
- ),
- },
- ];
return (