import React, { useEffect, useState } from "react";
import { Button, Descriptions, Form, Input, message, Modal, Select, Table } from "antd";
import TableAction from "@cqsjjb/jjb-react-admin-component/TableAction";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import SearchForm from "@cqsjjb/jjb-react-admin-component/SearchForm";
import ControlWrapper from "@cqsjjb/jjb-react-admin-component/ControlWrapper";
import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd";
import { tools } from "@cqsjjb/jjb-common-lib";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { NS_QUAL_EXPERT } from "~/enumerate/namespace";
import { GENDER_OPTIONS } from "~/enumerate/constant";
const { router } = tools;
const ExperManage = (props) => {
const [searchForm] = Form.useForm();
const [editForm] = Form.useForm();
const [detailVisible, setDetailVisible] = useState(false);
const [editVisible, setEditVisible] = useState(false);
const [editingId, setEditingId] = useState(null);
const [submiting, setSubmiting] = useState(false);
const { qualExpert, queryExpertPage, getExpertDetail, saveExpert, modifyExpert, deleteExpert } = props;
const { qualExpertList, qualExpertTotal, qualExpertLoading, qualExpertDetail, qualExpertDetailLoading } = qualExpert || {};
const getData = () => {
queryExpertPage({
...router.query,
current: router.query.current || 1,
size: router.query.size || 10,
});
};
const handleReset = (values) => {
router.query = {
...router.query,
...values,
current: 1,
size: 10,
};
getData();
};
useEffect(() => {
searchForm.setFieldsValue(router.query);
getData();
}, []);
// ─── 查看详情 ───
const openDetail = async (id) => {
setDetailVisible(true);
await getExpertDetail({ id });
};
// ─── 新增 / 编辑 ───
const openAdd = () => {
editForm.resetFields();
setEditingId(null);
setEditVisible(true);
};
const openEdit = async (id) => {
setEditingId(id);
setEditVisible(true);
const res = await getExpertDetail({ id });
if (res?.success !== false) {
editForm.setFieldsValue(res.data || qualExpertDetail);
}
};
const handleEditSubmit = async () => {
const values = await editForm.validateFields();
setSubmiting(true);
const action = editingId ? modifyExpert : saveExpert;
const params = editingId ? { ...values, id: editingId } : values;
const res = await action(params);
setSubmiting(false);
if (res?.success !== false) {
message.success(editingId ? "修改成功" : "新增成功");
setEditVisible(false);
getData();
}
};
// ─── 删除 ───
const handleDelete = (record) => {
Modal.confirm({
title: "确认删除",
content: `确认删除专家「${record.userName}」?此操作不可恢复。`,
okText: "确认删除",
okButtonProps: { danger: true },
cancelText: "取消",
onOk: async () => {
const res = await deleteExpert({ id: record.id });
if (res?.success !== false) {
message.success("删除成功");
getData();
}
},
});
};
// ─── 表格列 ───
const columns = [
{
title: "序号",
width: 60,
fixed: "left",
render: (_, __, index) => index + 1,
},
{ title: "姓名", dataIndex: "userName", width: 100 },
{ title: "账号", dataIndex: "account", width: 140 },
{
title: "性别",
dataIndex: "genderName",
width: 70,
render: (text) => text || "--",
},
{ title: "身份证号", dataIndex: "idCardNo", width: 180 },
{ title: "证书", dataIndex: "certificate", width: 120, ellipsis: true },
{
title: "操作",
width: 180,
fixed: "right",
render: (_, record) => (
),
},
];
return (
新增专家
}
>
,
,
{GENDER_OPTIONS.map((item) => (
{item.label}
))}
,
,
]}
onReset={handleReset}
onFinish={(values) => {
router.query = {
...router.query,
...values,
current: 1,
size: 10,
};
getData();
}}
/>