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, GENDER_MAP } from "~/enumerate/constant"; import AttachmentUpload from "~/components/AttachmentUpload"; import { idCardRule } from "~/utils/validators"; 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) { const params = res.data; if (params.certificate) { params.certificate = JSON.parse(params.certificate); } editForm.setFieldsValue(params); } }; const handleEditSubmit = async () => { const values = await editForm.validateFields(); setSubmiting(true); const action = editingId ? modifyExpert : saveExpert; const params = editingId ? { ...values, id: editingId } : values; if (values.certificate) { params.certificate = JSON.stringify(values.certificate); } 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({ data: 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: "genderCode", width: 70, render: (code) => GENDER_MAP[code] || "--", }, { title: "身份证号", dataIndex: "idCardNo", width: 180 }, { 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(); }} /> `共 ${total} 条`, current: router.query.current || 1, pageSize: router.query.size || 10, onChange: (page, pageSize) => { router.query = { ...router.query, current: page, size: pageSize }; getData(); }, }} /> {/* 查看详情弹窗 */} setDetailVisible(false)} footer={} width={560} > {qualExpertDetail?.userName || "--"} {qualExpertDetail?.account || "--"} {GENDER_MAP[qualExpertDetail?.genderCode] || "--"} {qualExpertDetail?.idCardNo || "--"} {(qualExpertDetail?.certificate? JSON.parse(qualExpertDetail?.certificate): [])?.map((item) => ( {item.name} ))} {/* 新增/编辑弹窗 */} setEditVisible(false)} onOk={handleEditSubmit} confirmLoading={submiting} width={520} >
); }; export default Connect( [NS_QUAL_EXPERT], true, )(AntdTableFuncControl(ExperManage));