修复eslint错误

master
LiuJiaNan 2025-12-01 16:28:30 +08:00
parent 87319b6499
commit 8cd5d14ed5
1 changed files with 0 additions and 587 deletions

View File

@ -1,587 +0,0 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Col, Divider, Form, Input, message, Modal, Row, Select, Space } from "antd";
import dayjs from "dayjs";
import { cloneDeep } from "lodash-es";
import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack";
import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable";
import { getLabelName } from "zy-react-library/utils";
import { NS_COMMITMENT } from "~/enumerate/namespace";
const typeList = [{ name: "承诺书", bianma: 0 }, { name: "责任书", bianma: 1 }];
const getTypeName = (value) => {
return typeList.find(item => item.bianma === value)?.name || "";
};
function Add(props) {
const query = useGetUrlQuery();
const [form] = Form.useForm();
const promisePeoples = Form.useWatch("promisePeoples", form);
const promisePersons = Form.useWatch("promisePersons", form);
const promiseType = Form.useWatch("promiseType", form);
const [basicInfo, setBasicInfo] = useState([]);
const [choiceTemplateModalOpen, setchoiceTemplateModalOpen] = useState(false);
const getPostList = async (departmentId, corpId, index) => {
// 请求后台岗位接口
const { data } = await props["jobInfo"]({ departmentId, corpinfoId: corpId, corpFlag: 1 });
// 将岗位列表写入 map
setBasicInfo((prevBasicInfo) => {
const newBasicInfo = cloneDeep(prevBasicInfo);
newBasicInfo[index] = data;
return newBasicInfo;
});
};
const getData = async () => {
if (query.id) {
const { data } = await props["busPromiseView"]({ id: query.id });
const promisePeopleBack = data.promisePeopleBack.map(item => ({
...item,
userName: item.userName.split(","),
userId: item.userId.split(","),
}));
const values = {
...data,
promisePeoples: [data.promisePeople],
promiseTypeName: getTypeName(data.promiseType),
promisePersons: promisePeopleBack,
};
form.setFieldsValue({
...values,
});
for (let i = 0; i < values.promisePersons.length; i++) {
await getPostList(values.promisePersons[i].departmentId, values.promisePersons[i].corpId, i);
}
}
};
useEffect(() => {
getData();
}, []);
const onSubmit = async (values) => {
const peoples = promisePeoples.map(item => ({
...item,
isPromisePeople: 1,
}));
const persons = promisePersons.map(item => ({
...item,
userName: item.userName.join(","),
userId: item.userId.join(","),
isPromisePeople: 0,
}));
const promiseAll = [...peoples, ...persons];
const { success } = await props[!query.id ? "busPromiseAdd" : "busPromiseEdit"]({
...values,
id: query.id,
promiseId: query.promiseId,
promisePeoples: promiseAll,
});
if (success) {
message.success("操作成功");
props.history.goBack();
}
};
return (
<div>
<HeaderBack title={query.id ? "编辑" : "新增"} />
<div style={{ paddingBottom: 10 }}>
<FormBuilder
form={form}
values={{
promisePeoples: [{}], // 被承诺人
promisePersons: [{}], // 承诺人
promiseDetails: [{}], // 模板
}}
onFinish={onSubmit}
options={[
{ name: "promiseName", label: "承诺书名称" },
{
name: "level",
label: "承诺书级别",
render: (
<DictionarySelect
dictValue="PROMISE_LEVEL"
onGetLabel={label => form.setFieldValue("levelName", label)}
/>
),
},
{ name: "levelName", label: "承诺书级别名称", onlyForLabel: true },
{ name: "promiseTermStart", label: "适用期限开始", render: FORM_ITEM_RENDER_ENUM.DATE },
{
name: "promiseTermEnd",
label: "适用期限结束",
render: FORM_ITEM_RENDER_ENUM.DATE,
rules: [{
validator: (_, value) => {
const timeStart = form.getFieldValue("promiseTermStart");
if (value && timeStart && value < timeStart) {
return Promise.reject("结束时间不能早于开始时间");
}
else {
return Promise.resolve();
}
},
}, {
validator: (_, value) => {
const timeStart = form.getFieldValue("promiseTermStart");
if (value && timeStart) {
const startYear = dayjs(timeStart).year();
const endYear = dayjs(value).year();
if (startYear !== endYear) {
return Promise.reject("开始时间和结束时间不能跨年");
}
}
return Promise.resolve();
},
}],
},
{
key: "promiseDetails",
span: 24,
customizeRender: true,
render: (
<>
<Divider orientation="left">承诺书内容</Divider>
<div style={{ textAlign: "right", marginBottom: "20px" }}>
<Button
type="primary"
onClick={() => {
setchoiceTemplateModalOpen(true);
}}
>
选择模板
</Button>
</div>
<div>
<Row>
<Col span={24}>
<Form.Item
label="类型"
rules={
[
{ required: true, message: "请输入类型" },
]
}
name="promiseTypeName"
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
>
<Input disabled />
</Form.Item>
<Form.Item label="类型" noStyle name="promiseType">
<input type="hidden" />
</Form.Item>
</Col>
<Col span={24}>
<Form.Item
label="正文"
rules={
[
{ required: true, message: "请输入正文" },
]
}
name="promiseText"
labelCol={{ span: 2 }}
wrapperCol={{ span: 22 }}
>
<Input placeholder="请输入正文" />
</Form.Item>
</Col>
</Row>
<Form.List name="promiseDetails">
{(fields, { add, remove }) => (
<>
{fields.map((field, index) => (
<Row gutter={24} key={field.key}>
<Col span={24}>
<Form.Item label="副文" required labelCol={{ span: 2 }} wrapperCol={{ span: 22 }}>
<div style={{ display: "flex", gap: 10 }}>
<Form.Item
noStyle
rules={
[
{ required: true, message: "请输入副文" },
]
}
name={[field.name, "collateral"]}
>
<Input.TextArea placeholder="请输入副文" rows={4} maxLength={500} />
</Form.Item>
{
index >= 1
? <Button type="primary" danger onClick={() => remove(field.name)}>删除</Button>
: (
<Button
type="primary"
onClick={() => add({
deptId: undefined,
deptName: undefined,
userId: undefined,
userName: undefined,
type: 300,
})}
>
新增
</Button>
)
}
</div>
</Form.Item>
</Col>
</Row>
))}
</>
)}
</Form.List>
</div>
{choiceTemplateModalOpen && (
<ChoiceTemplateModal
parentForm={form}
onCancel={() => setchoiceTemplateModalOpen(false)}
data={{ id: query.id, hiddenId: query.hiddenId }}
/>
)}
</>
),
},
{
key: "promisePersons",
span: 24,
customizeRender: true,
render: (
<>
<Divider orientation="left">
{promiseType === 1 || promiseType === "责任书"
? "受状人"
: "承诺人"}
</Divider>
<Form.List name="promisePersons">
{(fields, { add, remove }) => (
<>
{fields.map((field, index) => (
<Row gutter={[24, 10]} key={field.key} style={{ marginBottom: 10 }}>
<Col span={8}>
<Form.Item
label={`部门${index + 1}`}
rules={
[
{ required: true, message: "请选择部门" },
]
}
name={[field.name, "departmentId"]}
>
<DepartmentSelectTree
onChange={async (departmentId) => {
form.setFieldValue(["promisePersons", field.name, "postId"], "");
form.setFieldValue(["promisePersons", field.name, "postName"], "");
form.setFieldValue(["promisePersons", field.name, "userName"], "");
form.setFieldValue(["promisePersons", field.name, "userId"], []);
if (!departmentId)
return;
getPostList(departmentId, promisePersons?.[field.name]?.corpId, index);
}}
onGetLabel={(label) => {
form.setFieldValue(["promisePersons", field.name, "departmentName"], label);
}}
/>
</Form.Item>
<Form.Item label="部门" noStyle name={[field.name, "departmentName"]}>
<input type="hidden" />
</Form.Item>
</Col>
<Col span={8}>
<Form.Item
label={`岗位${index + 1}`}
rules={
[
{ required: true, message: "请选择岗位" },
]
}
name={[field.name, "postId"]}
>
<Select
onChange={(value) => {
const label = basicInfo[index].find(item => item.id === value)?.postName;
form.setFieldValue(["promisePersons", field.name, "postName"], label);
form.setFieldValue(["promisePersons", field.name, "userName"], "");
form.setFieldValue(["promisePersons", field.name, "userId"], []);
}}
placeholder="请选择岗位"
showSearch
allowClear
optionFilterProp="children"
>
{(basicInfo[index] || []).map((item) => {
const value = item.id;
const label = item.postName;
return (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
);
})}
</Select>
</Form.Item>
<Form.Item label="岗位" noStyle name={[field.name, "postName"]}>
<input type="hidden" />
</Form.Item>
</Col>
<Col span={6}>
<Form.Item
label={`人员${index + 1}`}
rules={
[
{ required: true, message: "请选择人员" },
]
}
name={[field.name, "userId"]}
>
<PersonnelSelect
params={{
postId: promisePersons?.[field.name]?.postId || "",
departmentId: promisePersons?.[field.name]?.departmentId || "",
}}
isNeedPostId={true}
onGetLabel={(label) => {
form.setFieldValue(["promisePersons", field.name, "userName"], label);
}}
mode={(promiseType === 1 || promiseType === "责任书") ? "tags" : "multiple"}
/>
</Form.Item>
<Form.Item label="人员" noStyle name={[field.name, "userName"]}>
<input type="hidden" />
</Form.Item>
</Col>
{
promiseType === 1 || promiseType === "责任书"
? ""
: (index >= 1
? <Button type="primary" danger onClick={() => remove(field.name)}>删除</Button>
: <Button type="primary" onClick={() => add()}>新增</Button>)
}
</Row>
))}
</>
)}
</Form.List>
</>
),
},
{
key: "promisePeoples",
span: 24,
customizeRender: true,
render: (
<>
<Divider orientation="left">
{promiseType === 1 || promiseType === "责任书"
? "发状人"
: "被承诺人"}
</Divider>
<Form.List name="promisePeoples">
{fields => (
<>
{fields.map((field, index) => (
<Row gutter={[24, 10]} key={field.key} style={{ marginBottom: 10 }}>
<Col span={8}>
<Form.Item
label="部门"
wrapperCol={{ span: 22 }}
rules={
[
{ required: true, message: "请选择部门" },
]
}
name={[field.name, "departmentId"]}
>
<DepartmentSelectTree
onChange={async () => {
// 清空人员
form.setFieldValue(["promisePeoples", field.name, "userName"], "");
form.setFieldValue(["promisePeoples", field.name, "userId"], []);
}}
onGetLabel={(label) => {
form.setFieldValue(["promisePeoples", field.name, "departmentName"], label);
}}
/>
</Form.Item>
<Form.Item label="部门" noStyle name={[field.name, "departmentName"]}>
<input type="hidden" />
</Form.Item>
</Col>
<Col span={8}>
<Form.Item
label="岗位"
rules={
[
{ required: true, message: "请选择岗位" },
]
}
name={[field.name, "postId"]}
>
<Select
onChange={(value) => {
const label = basicInfo[index].find(item => item.id === value)?.postName;
form.setFieldValue(["promisePeoples", field.name, "postName"], label);
form.setFieldValue(["promisePeoples", field.name, "userName"], "");
form.setFieldValue(["promisePeoples", field.name, "userId"], []);
}}
placeholder="请选择岗位"
showSearch
allowClear
optionFilterProp="children"
>
{(basicInfo[index] || []).map((item) => {
const value = item.id;
const label = item.postName;
return (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
);
})}
</Select>
</Form.Item>
<Form.Item label="岗位" noStyle name={[field.name, "postName"]}>
<input type="hidden" />
</Form.Item>
</Col>
<Col span={8}>
<Form.Item
label="人员"
rules={
[
{ required: true, message: "请选择人员" },
]
}
name={[field.name, "userId"]}
>
<PersonnelSelect
params={{ departmentId: promisePeoples?.[field.name]?.departmentId || "" }}
onGetLabel={(label) => {
form.setFieldValue(["promisePeoples", field.name, "userName"], label);
}}
onChange={(value) => {
form.setFieldValue(["promisePeoples", field.name, "userId"], value);
}}
// mode="multiple"
/>
</Form.Item>
<Form.Item label="人员" noStyle name={[field.name, "userName"]}>
<input type="hidden" />
</Form.Item>
</Col>
</Row>
))}
</>
)}
</Form.List>
</>
),
},
]}
/>
</div>
</div>
);
}
const ChoiceTemplateModalComponent = (props) => {
const parentForm = props.parentForm; // 使用外层表单
const [form] = Form.useForm(); // ← 只给搜索用,不影响主页面
const { tableProps, getData } = useTable(props["busPromiseTemplateList"], {
form,
});
return (
<Modal
open
width={800}
footer={[
<Button key="close" onClick={() => props.onCancel()}>关闭</Button>,
]}
onCancel={props.onCancel}
>
<div style={{ padding: 20 }}>
<Search
labelCol={{ span: 8 }}
form={form}
options={[
{ name: "hiddenDesc", label: "承诺书名称" },
]}
onFinish={getData}
/>
<Table
columns={[
{ title: "承诺书名称", dataIndex: "promiseName" },
{
title: "类型",
dataIndex: "promiseType",
render: (_, record) => getLabelName({ list: typeList, status: record.promiseType }),
},
{
title: "操作",
width: 200,
fixed: "right",
render: (_, record) => (
<Space>
<Button
type="link"
onClick={() => {
// 更新外层 Form主页面
parentForm.setFieldValue("promiseType", record.promiseType);
parentForm.setFieldValue("promiseTypeName", getTypeName(record.promiseType));
parentForm.setFieldValue("promiseText", record.promiseText);
parentForm.setFieldValue(
"promiseDetails",
record.templateDetails?.length
? record.templateDetails
: [{}],
);
const promisePersonsList = parentForm.getFieldValue("promisePersons");
promisePersonsList.forEach((item, index) => {
parentForm.setFieldValue(["promisePersons", index], "");
});
const promisePeoplesList = parentForm.getFieldValue("promisePeoples");
promisePeoplesList.forEach((item, index) => {
parentForm.setFieldValue(["promisePeoples", index], "");
});
props.onCancel();
}}
>
选择
</Button>
</Space>
),
},
]}
{...tableProps}
/>
</div>
</Modal>
);
};
const ChoiceTemplateModal = Connect([NS_COMMITMENT], true)(ChoiceTemplateModalComponent);
export default Connect([NS_COMMITMENT], true)(Add);