fix
parent
7121437b4d
commit
039423bd6c
|
|
@ -21,7 +21,7 @@ export default function AttachmentUpload({ name, label, disabled = false, maxCou
|
|||
fileList: value
|
||||
? value.split(",").map((item) => ({
|
||||
url: item,
|
||||
uid: item,
|
||||
uid: item,
|
||||
status: "done",
|
||||
name: "附件",
|
||||
}))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,16 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, DatePicker, Form, Image, Input, message, Modal, Row, Col, Select, Table, Upload } from "antd";
|
||||
import { UploadOutlined } from "@ant-design/icons";
|
||||
import {
|
||||
Button,
|
||||
DatePicker,
|
||||
Form,
|
||||
Input,
|
||||
message,
|
||||
Modal,
|
||||
Row,
|
||||
Col,
|
||||
Select,
|
||||
Table,
|
||||
} from "antd";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import dayjs from "dayjs";
|
||||
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
|
||||
|
|
@ -319,14 +329,10 @@ function StaffFormModal({
|
|||
const [detailLoading, setDetailLoading] = useState(false);
|
||||
const [deptPositionOptions, setDeptPositionOptions] = useState([]);
|
||||
const [positionLoading, setPositionLoading] = useState(false);
|
||||
const [uploadFileList, setUploadFileList] = useState([]);
|
||||
const [previewImage, setPreviewImage] = useState("");
|
||||
const watchedDeptId = Form.useWatch("deptId", form);
|
||||
const wasOpenRef = useRef(false);
|
||||
const inflightDeptRef = useRef(null);
|
||||
|
||||
const isImage = (url) => /\.(png|jpe?g|gif|bmp|webp|svg)(\?.*)?$/i.test(url || "");
|
||||
|
||||
const loadPositionsByDept = async (deptId) => {
|
||||
const id = deptId;
|
||||
if (!id) {
|
||||
|
|
@ -363,8 +369,6 @@ function StaffFormModal({
|
|||
if (!currentId) {
|
||||
form.resetFields();
|
||||
setDeptPositionOptions([]);
|
||||
setUploadFileList([]);
|
||||
setPreviewImage("");
|
||||
form.setFieldsValue({
|
||||
registerEngineerFlag: 2,
|
||||
});
|
||||
|
|
@ -372,8 +376,6 @@ function StaffFormModal({
|
|||
}
|
||||
if (!open) {
|
||||
setDeptPositionOptions([]);
|
||||
setUploadFileList([]);
|
||||
setPreviewImage("");
|
||||
}
|
||||
wasOpenRef.current = open;
|
||||
}, [open, currentId, form]);
|
||||
|
|
@ -410,8 +412,6 @@ function StaffFormModal({
|
|||
const handleCancel = () => {
|
||||
form.resetFields();
|
||||
setDeptPositionOptions([]);
|
||||
setUploadFileList([]);
|
||||
setPreviewImage("");
|
||||
onCancel();
|
||||
};
|
||||
|
||||
|
|
@ -661,46 +661,6 @@ function StaffFormModal({
|
|||
label="申报专业能力证明材料"
|
||||
maxCount={5}
|
||||
/>
|
||||
<Form.Item
|
||||
name="proofMaterialUrl"
|
||||
label="申报专业能力证明材料"
|
||||
valuePropName="fileList"
|
||||
getValueFromEvent={(e) => {
|
||||
if (Array.isArray(e)) return e;
|
||||
return e?.fileList;
|
||||
}}
|
||||
>
|
||||
<Upload
|
||||
action={`${window.process.env.app.API_HOST}/safetyEval/file/upload`}
|
||||
headers={{ token: sessionStorage.getItem("token") }}
|
||||
maxCount={5}
|
||||
fileList={uploadFileList}
|
||||
onChange={(info) => {
|
||||
setUploadFileList(info.fileList);
|
||||
}}
|
||||
onPreview={(file) => {
|
||||
const src = file.url || file.response?.data?.url || file.thumbUrl;
|
||||
if (!src) return;
|
||||
if (isImage(src)) {
|
||||
setPreviewImage(src);
|
||||
} else {
|
||||
window.open(src, "_blank");
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Button icon={<UploadOutlined />}>上传文件</Button>
|
||||
</Upload>
|
||||
</Form.Item>
|
||||
<Image
|
||||
style={{ display: "none" }}
|
||||
preview={{
|
||||
visible: !!previewImage,
|
||||
src: previewImage,
|
||||
onVisibleChange: (visible) => {
|
||||
if (!visible) setPreviewImage("");
|
||||
},
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item name="currentAddress" label="现住地址">
|
||||
|
|
|
|||
|
|
@ -1,26 +1,21 @@
|
|||
import {
|
||||
Button, Descriptions, Form, Input, InputNumber, message, Modal, Row, Col, Select, Space, Tag,
|
||||
Button, DatePicker, Descriptions, Form, Input, InputNumber, message, Modal, Row, Col, Select, Space, Tag, Table,
|
||||
} from "antd";
|
||||
import TableAction from "@cqsjjb/jjb-react-admin-component/TableAction";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { useEffect, useState } from "react";
|
||||
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||
import useTable from "zy-react-library/hooks/useTable";
|
||||
import SearchForm from "@cqsjjb/jjb-react-admin-component/SearchForm";
|
||||
import ControlWrapper from "@cqsjjb/jjb-react-admin-component/ControlWrapper";
|
||||
import { isOrgAccountEnabled } from "~/api/enterpriseInfo/adapter";
|
||||
import {
|
||||
CHONGQING_DISTRICTS,
|
||||
ENTERPRISE_SCALE_OPTIONS,
|
||||
ENTERPRISE_STATUS_OPTIONS,
|
||||
ORG_ACCOUNT_STATE_OPTIONS,
|
||||
ENTERPRISE_STATUS_OPTIONS
|
||||
} from "~/enumerate/enterpriseOptions";
|
||||
import { NS_ORG_INFO } from "~/enumerate/namespace";
|
||||
import { safeListRequest, safeRequest } from "~/utils";
|
||||
import { formSelectField } from "~/utils/enterpriseForm";
|
||||
|
||||
const SEARCH_COL = { xs: 24, sm: 12, md: 8, lg: 6 };
|
||||
const SEARCH_DEFAULT_VALUES = { state: "" };
|
||||
|
||||
function OrgAccountPage(props) {
|
||||
const [searchForm] = Form.useForm();
|
||||
|
|
@ -32,8 +27,21 @@ function OrgAccountPage(props) {
|
|||
const [rawDetail, setRawDetail] = useState(null);
|
||||
const [detailLoading, setDetailLoading] = useState(false);
|
||||
const [editLoading, setEditLoading] = useState(false);
|
||||
const [dataSource, setDataSource] = useState([]);
|
||||
const [total, setTotal] = useState(0);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
const { tableProps, getData } = useTable(safeListRequest(props.orgAccountList), { form: searchForm });
|
||||
const getData = async () => {
|
||||
setLoading(true);
|
||||
try {
|
||||
const params = searchForm.getFieldsValue();
|
||||
const res = await safeListRequest(props.orgAccountList)(params);
|
||||
setDataSource(res?.data || []);
|
||||
setTotal(res?.total || 0);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
|
|
@ -162,6 +170,37 @@ function OrgAccountPage(props) {
|
|||
}
|
||||
};
|
||||
|
||||
const columns = [
|
||||
{ title: "机构名称", dataIndex: "orgName", ellipsis: true },
|
||||
{ title: "属地", dataIndex: "district", width: 100 },
|
||||
{
|
||||
title: "状态",
|
||||
width: 80,
|
||||
render: (_, record) => (
|
||||
<Tag color={isOrgAccountEnabled(record) ? "success" : "error"}>
|
||||
{isOrgAccountEnabled(record) ? "启用" : "禁用"}
|
||||
</Tag>
|
||||
),
|
||||
},
|
||||
{ title: "开户时间", dataIndex: "createTime", width: 110 },
|
||||
{
|
||||
title: "操作",
|
||||
width: 320,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<TableAction>
|
||||
<Button type="link" size="small" onClick={() => openView(record.id)}>查看</Button>
|
||||
<Button type="link" size="small" onClick={() => openEdit(record.id)}>编辑</Button>
|
||||
<Button type="link" size="small" onClick={() => onResetPassword(record)}>重置密码</Button>
|
||||
<Button type="link" size="small" danger onClick={() => onDelete(record)}>删除</Button>
|
||||
<Button type="link" size="small" onClick={() => onToggleStatus(record)}>
|
||||
{isOrgAccountEnabled(record) ? "禁用" : "启用"}
|
||||
</Button>
|
||||
</TableAction>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<PageLayout
|
||||
title={
|
||||
|
|
@ -173,60 +212,55 @@ function OrgAccountPage(props) {
|
|||
</div>
|
||||
}
|
||||
>
|
||||
<Search
|
||||
<SearchForm
|
||||
style={{ marginBottom: 24 }}
|
||||
form={searchForm}
|
||||
values={SEARCH_DEFAULT_VALUES}
|
||||
options={[
|
||||
{ name: "orgName", label: "机构名称", placeholder: "关键字搜索", colProps: SEARCH_COL },
|
||||
formSelectField("district", "属地", CHONGQING_DISTRICTS, {
|
||||
colProps: SEARCH_COL,
|
||||
placeholder: "请选择属地",
|
||||
}),
|
||||
formSelectField("state", "状态", ORG_ACCOUNT_STATE_OPTIONS, {
|
||||
colProps: SEARCH_COL,
|
||||
componentProps: { allowClear: false, showSearch: false },
|
||||
}),
|
||||
{
|
||||
name: "openTimeRange",
|
||||
label: "开户时间",
|
||||
render: FORM_ITEM_RENDER_ENUM.DATE_RANGE,
|
||||
colProps: { ...SEARCH_COL, lg: 8 },
|
||||
},
|
||||
loading={loading}
|
||||
formLine={[
|
||||
<Form.Item key="orgName" name="orgName">
|
||||
<ControlWrapper.Input label="机构名称" placeholder="关键字搜索" allowClear />
|
||||
</Form.Item>,
|
||||
<Form.Item key="district" name="district">
|
||||
<ControlWrapper.Select label="属地" placeholder="请选择属地" allowClear>
|
||||
{CHONGQING_DISTRICTS.map((opt) => (
|
||||
<Select.Option key={opt.value} value={opt.value}>{opt.label}</Select.Option>
|
||||
))}
|
||||
</ControlWrapper.Select>
|
||||
</Form.Item>,
|
||||
<Form.Item key="state" name="state">
|
||||
<ControlWrapper.Select label="状态" placeholder="请选择状态">
|
||||
{ORG_ACCOUNT_STATE_OPTIONS.map((opt) => (
|
||||
<Select.Option key={opt.value} value={opt.value}>{opt.label}</Select.Option>
|
||||
))}
|
||||
</ControlWrapper.Select>
|
||||
</Form.Item>,
|
||||
<Form.Item key="openTimeRange" name="openTimeRange">
|
||||
<ControlWrapper.DatePicker.RangePicker label="开户时间" />
|
||||
</Form.Item>,
|
||||
]}
|
||||
onFinish={getData}
|
||||
onReset={() => {
|
||||
searchForm.resetFields();
|
||||
getData();
|
||||
}}
|
||||
onFinish={() => getData()}
|
||||
/>
|
||||
<Table
|
||||
{...tableProps}
|
||||
columns={[
|
||||
{ title: "机构名称", dataIndex: "orgName", ellipsis: true },
|
||||
{ title: "属地", dataIndex: "district", width: 100 },
|
||||
{
|
||||
title: "状态",
|
||||
width: 80,
|
||||
render: (_, record) => (
|
||||
<Tag color={isOrgAccountEnabled(record) ? "success" : "error"}>
|
||||
{isOrgAccountEnabled(record) ? "启用" : "禁用"}
|
||||
</Tag>
|
||||
),
|
||||
rowKey="id"
|
||||
columns={columns}
|
||||
dataSource={dataSource}
|
||||
scroll={{ y: props.scrollY }}
|
||||
loading={loading}
|
||||
pagination={{
|
||||
total,
|
||||
showSizeChanger: true,
|
||||
showQuickJumper: true,
|
||||
showTotal: (t) => `共 ${t} 条`,
|
||||
current: 1,
|
||||
pageSize: 10,
|
||||
onChange: (page, pageSize) => {
|
||||
getData();
|
||||
},
|
||||
{ title: "开户时间", dataIndex: "createTime", width: 110 },
|
||||
{
|
||||
title: "操作",
|
||||
width: 320,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space size={0} wrap>
|
||||
<Button type="link" size="small" onClick={() => openView(record.id)}>查看</Button>
|
||||
<Button type="link" size="small" onClick={() => openEdit(record.id)}>编辑</Button>
|
||||
<Button type="link" size="small" onClick={() => onResetPassword(record)}>重置密码</Button>
|
||||
<Button type="link" size="small" danger onClick={() => onDelete(record)}>删除</Button>
|
||||
<Button type="link" size="small" onClick={() => onToggleStatus(record)}>
|
||||
{isOrgAccountEnabled(record) ? "禁用" : "启用"}
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
}}
|
||||
/>
|
||||
|
||||
<Modal
|
||||
|
|
@ -347,4 +381,4 @@ function OrgAccountPage(props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_ORG_INFO], true)(OrgAccountPage);
|
||||
export default Connect([NS_ORG_INFO], true)(OrgAccountPage);
|
||||
Loading…
Reference in New Issue