修改 企业用户中台

dev
853931625@qq.com 2026-06-22 17:25:57 +08:00
parent 306e8193f9
commit 04beb13b51
6 changed files with 244 additions and 160 deletions

View File

@ -40,6 +40,11 @@ export const corpUserMiddlePage = declareRequest(
"enterpriseLoading", "enterpriseLoading",
"Post > @/basicInfo/corpInfo/corpUserMiddlePage", "Post > @/basicInfo/corpInfo/corpUserMiddlePage",
); );
export const userChangeRecordList = declareRequest(
"enterpriseLoading",
"Post > @/basicInfo/userChangeRecord/userCorpInfoList",
);
// 获取当前登录人信息 // 获取当前登录人信息
export const userGetInfo = declareRequest( export const userGetInfo = declareRequest(

View File

@ -90,3 +90,19 @@ export const getChangerRecordInfoById = declareRequest(
"userLoading", "userLoading",
"Post > @/basicInfo/userCorpRecord/getUserCorpRecordById", "Post > @/basicInfo/userCorpRecord/getUserCorpRecordById",
); );
export const pageByNopermission = declareRequest(
"enterpriseLoading",
"Post > @/basicInfo/user/pageByNopermission",
);
export const userChangeRecordList = declareRequest(
"enterpriseLoading",
"Post > @/basicInfo/userChangeRecord/list",
);
export const userChangeRecordgGtRecordInfoById = declareRequest(
"enterpriseLoading",
"Post > @/basicInfo/userChangeRecord/getChangerRecordInfoById",
);
export const workChangeHandle = declareRequest(
"enterpriseLoading",
"Post > @/basicInfo/userChangeRecord/workChangeHandle",
);

View File

@ -2,88 +2,60 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; 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 useTable from "zy-react-library/hooks/useTable";
import { NS_USER } from "~/enumerate/namespace"; import { NS_USER } from "~/enumerate/namespace";
const ENTERPRISE_TYPE = [
{
bianma: 0,
name: "普通企业",
},
{
bianma: 1,
name: "集团单位",
},
{
bianma: 6,
name: "物资中心",
},
];
function List(props) { function List(props) {
const [form] = Form.useForm(); const [form] = Form.useForm();
const { tableProps, getData } = useTable(props["userEmploymentLogAll"], { const queryParams = useGetUrlQuery();
const { tableProps } = useTable(props["userChangeRecordList"], {
form, form,
usePermission: false, usePermission: false,
transform: (formData) => { params: { eqUserId: queryParams.id },
return {
...formData,
};
},
}); });
return ( return (
<div> <div>
<Page <Page
headerTitle="变更记录列表" headerTitle="变更列表"
isShowFooter={false} isShowFooter={false}
> >
<Search
form={form}
options={[
{
name: "name",
label: "公司名称",
},
{
name: "eqtype",
label: "企业类型",
render: FORM_ITEM_RENDER_ENUM.SELECT,
items: ENTERPRISE_TYPE,
},
]}
onFinish={getData}
/>
<Table <Table
options={false}
columns={[ columns={[
{
title: "姓名",
dataIndex: "userName",
},
{ {
title: "变更时间", title: "变更时间",
dataIndex: "updateTime", dataIndex: "changeTime",
}, },
{ {
title: "企业名称", title: "企业名称",
dataIndex: "corpinfoName", dataIndex: "corpinfoNameAfter",
}, },
{ {
title: "部门名称", title: "部门名称",
dataIndex: "departmentName", dataIndex: "departmentNameAfter",
}, },
{ {
title: "岗位名称", title: "岗位名称",
dataIndex: "postName", dataIndex: "postIdAfter",
}, },
{ {
title: "员工", title: "员工状态",
dataIndex: "name", dataIndex: "status",
render: (_, record) => ( render: (_, record) => (
<div> <div>
{record.employmentFlag === 1 {record.status === 1
? "在职" ? "待审批"
: record.employmentFlag === 1 : record.status === 2
? "离职" ? "通过"
: ""} : ""}
</div> </div>
), ),
@ -97,7 +69,7 @@ function List(props) {
<Button <Button
type="link" type="link"
onClick={() => onClick={() =>
props.history.push(`./ChangeView?id=${record.id}&type=record`)} props.history.push(`./ChangeView?id=${record.userChangeRecordId}&userId=${record.userId}`)}
> >
查看 查看
</Button> </Button>

View File

@ -1,7 +1,9 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Divider, message, Modal } from "antd"; import { Button, Descriptions, Divider, Form, message, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
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 Table from "zy-react-library/components/Table";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
@ -9,57 +11,61 @@ import { NS_ENTERPRISE, NS_USER } from "~/enumerate/namespace";
function ChangeView(props) { function ChangeView(props) {
const queryParams = useGetUrlQuery(); const queryParams = useGetUrlQuery();
const [form] = Form.useForm();
const [info, setInfo] = useState({}); const [info, setInfo] = useState({});
const [handoverModalOpen, setHandoverModalOpen] = useState(false);
const [departmentId, setDepartmentId] = useState();
const [currentHandoverRecord, setCurrentHandoverRecord] = useState({});
const [handoverUserInfo, setHandoverUserInfo] = useState({});
useEffect(() => { const getRecordInfo = () => {
props["getChangerRecordInfoById"]({ corpinfoId: queryParams["corpinfoId"], userId: queryParams["id"] }).then((res) => { props["userChangeRecordgGtRecordInfoById"]({ userChangeRecordId: queryParams["id"], userId: queryParams["userId"] }).then((res) => {
if (res.data) { if (res.data) {
setInfo(res.data); setInfo(res.data);
} }
}); });
};
useEffect(() => {
getRecordInfo();
}, []); }, []);
const onSubmit = async () => { const onOpenHandoverModal = (record) => {
Modal.confirm({ form.resetFields();
title: "提示", setDepartmentId();
content: "确认后,该名员工的信息将处于离职状态,涉及的待完成相关工作,可能会受到异常。", setCurrentHandoverRecord(record || {});
onOk: () => { setHandoverUserInfo({});
props["reviewStatus"]({ setHandoverModalOpen(true);
corpinfoId: queryParams["corpinfoId"],
employmentFlag: queryParams["employmentFlag"],
reviewStatus: 2,
userId: queryParams["id"],
}).then((res) => {
if (res.success) {
message.success("审核成功");
window.history.back();
}
});
},
});
};
const handleReject = () => {
Modal.confirm({
title: "提示",
content: "确定驳回吗?",
onOk: () => {
props["reviewStatus"]({
corpinfoId: queryParams["corpinfoId"],
employmentFlag: queryParams["employmentFlag"],
reviewStatus: 3,
userId: queryParams["id"],
}).then((res) => {
if (res.success) {
message.success("驳回成功");
window.history.back();
}
});
},
});
}; };
const onGoBack = () => { const onCloseHandoverModal = () => {
window.history.back(); form.resetFields();
setDepartmentId();
setCurrentHandoverRecord({});
setHandoverUserInfo({});
setHandoverModalOpen(false);
};
const onSubmitHandover = (values) => {
const params = {
handoverCompanyId: handoverUserInfo.corpinfoId || handoverUserInfo.corpInfoId,
handoverCompanyName: handoverUserInfo.corpinfoName || handoverUserInfo.corpInfoName,
handoverDepartmentId: handoverUserInfo.departmentId,
handoverDepartmentName: handoverUserInfo.departmentName,
handoverPostId: handoverUserInfo.postId,
handoverPostName: handoverUserInfo.postName,
handoverUserId: handoverUserInfo.id || values.userId,
handoverUserName: handoverUserInfo.name,
id: currentHandoverRecord.id,
};
props["workChangeHandle"](params).then((res) => {
if (res.success) {
message.success("交接成功");
onCloseHandoverModal();
getRecordInfo();
}
});
}; };
return ( return (
@ -90,7 +96,15 @@ function ChangeView(props) {
}, },
{ {
label: "员工状态", label: "员工状态",
children: info.userStatusBefore, children: (
<div>
{info.userStatusBefore === 1
? "待审批"
: info.userStatusBefore === 2
? "通过"
: ""}
</div>
),
}, },
]} ]}
@ -98,6 +112,7 @@ function ChangeView(props) {
labelStyle={{ labelStyle={{
width: 200, width: 200,
}} }}
contentStyle={{ width: 500 }}
/> />
<Divider orientation="left">变更后信息</Divider> <Divider orientation="left">变更后信息</Divider>
<Descriptions <Descriptions
@ -121,67 +136,123 @@ function ChangeView(props) {
}, },
{ {
label: "员工状态", label: "员工状态",
children: info.userStatusAfter, children: (
<div>
{info.userStatusAfter === 1
? "待审批"
: info.userStatusAfter === 2
? "通过"
: ""}
</div>
),
}, },
{ {
label: "变更时间", label: "变更时间",
children: info.changeTime, children: info.changeTime,
contentStyle: { display: queryParams["type"] === "disposal" ? "none" : "" },
labelStyle: { display: queryParams["type"] === "disposal" ? "none" : "" },
}, },
]} ]}
column={2} column={2}
labelStyle={{ labelStyle={{
width: 200, width: 200,
}} }}
contentStyle={{ width: 500 }}
/> />
<Divider orientation="left">{queryParams["type"] === "disposal" ? "未完成工作" : "工作交接"}</Divider> <Divider orientation="left">{queryParams["type"] === "disposal" ? "工作交接情况" : "交接信息"}</Divider>
<Table <Table
pagination={false} pagination={false}
options={false}
columns={[ columns={[
{ {
title: "工作项目", title: "工作类别",
dataIndex: "corpName", dataIndex: "workProject",
}, },
{ {
title: "工作内容", title: "待办事项",
dataIndex: "type", dataIndex: "workContent",
}, },
{ {
title: "处理人", title: "处理人",
dataIndex: "departMentCount", dataIndex: "handoverUserName",
hidden: queryParams["type"] === "disposal", },
{
title: "操作",
width: 200,
hidden: queryParams["type"] !== "disposal",
render: (_, record) => (
<Space>
<Button
type="link"
disabled={record.handoverStatus === 1}
onClick={() => onOpenHandoverModal(record)}
>
交接
</Button>
</Space>
),
}, },
]} ]}
dataSource={info.userJobHandoverCOList} dataSource={info.userJobHandoverCOList}
/> />
</Page> </Page>
{ <Modal
queryParams["type"] === "disposal" maskClosable={false}
open={handoverModalOpen}
title="交接"
width={900}
confirmLoading={props.user?.enterpriseLoading}
onOk={() => form.submit()}
onCancel={onCloseHandoverModal}
>
<Form
form={form}
labelCol={{ span: 4 }}
wrapperCol={{ span: 18 }}
onFinish={onSubmitHandover}
>
<Form.Item
name="departmentId"
label="选择部门"
rules={[{ required: true, message: "请选择部门" }]}
>
<DepartmentSelectTree
placeholder="当前登录账号公司组织机构"
onChange={(value) => {
setDepartmentId(value);
setHandoverUserInfo({});
form.setFieldValue("userId", undefined);
}}
/>
</Form.Item>
<Form.Item
name="userId"
label="选择人员"
rules={[{ required: true, message: "请选择人员" }]}
>
<PersonnelSelect
&& ( onGetOption={(value) => {
<div style={{ textAlign: "center", height: 50, marginTop: 20 }} className="no-print"> // 在这里 公司 部门 岗位 人员 取value里的这些字段
// {
<Button style={{ marginRight: 20 }} onClick={onGoBack}> // "id":"2008787570160480256"
取消 // "name": "股份_王雯仲",
</Button> // "corpinfoId": "1976974388809424896",
// "corpinfoName": "秦皇岛港股份有限公司",
<Button key="reject" onClick={handleReject} style={{ marginRight: 20 }}> // "departmentId": "2008786394509651968",
驳回 // "departmentName": "总经办",
</Button> // "postId": "2008786566382211074",
// "postName": "董事长助理",
<Button // }
type="primary" setHandoverUserInfo(value || {});
}}
onClick={onSubmit} params={{ departmentId }}
placeholder="选择部门下人员、单选"
> />
通过 </Form.Item>
</Button> </Form>
</div> </Modal>
)
}
</div> </div>

View File

@ -19,6 +19,22 @@ const ENTERPRISE_TYPE = [
bianma: 1, bianma: 1,
name: "集团单位", name: "集团单位",
}, },
{
bianma: 2,
name: "股份单位",
},
{
bianma: 3,
name: "普通企业",
},
{
bianma: 4,
name: "货主单位",
},
{
bianma: 5,
name: "驻港单位",
},
{ {
bianma: 6, bianma: 6,
name: "物资中心", name: "物资中心",
@ -26,12 +42,11 @@ const ENTERPRISE_TYPE = [
]; ];
function List(props) { function List(props) {
const [form] = Form.useForm(); const [form] = Form.useForm();
const { tableProps, getData } = useTable(props["corpUserMiddlePage"], { const { tableProps, getData } = useTable(props["userChangeRecordList"], {
form, form,
transform: (formData) => { transform: (formData) => {
return { return {
...formData, ...formData,
enterpriseType: 2,
}; };
}, },
}); });
@ -45,12 +60,7 @@ function List(props) {
name: "name", name: "name",
label: "公司名称", label: "公司名称",
}, },
{
name: "eqType",
label: "企业类型",
render: FORM_ITEM_RENDER_ENUM.SELECT,
items: ENTERPRISE_TYPE,
},
]} ]}
onFinish={getData} onFinish={getData}
/> />
@ -74,27 +84,27 @@ function List(props) {
}, },
{ {
title: "部门数", title: "部门数",
dataIndex: "departMentCount", dataIndex: "departmentCount",
}, },
{ {
title: "岗位数", title: "岗位数",
dataIndex: "postCount", dataIndex: "postCount",
}, },
{ {
title: "用户数", title: "人员总数",
dataIndex: "userCount", dataIndex: "userCount",
}, },
{ {
title: "中台人员存在数", title: "人资存在数",
dataIndex: "middleUserCount", dataIndex: "rzUserCount",
render: (_, record) => ( render: (_, record) => (
<div>{record.middleUserCount ?? 0}</div> <div>{record.rzUserCount ?? 0}</div>
), ),
}, },
{ {
title: "操作", title: "操作",
width: 200, width: 200,
// hidden: !(props.permission("qyyhzt-info")), hidden: !(props.permission("qyyhzt-info")),
render: (_, record) => ( render: (_, record) => (
<Space> <Space>

View File

@ -18,13 +18,17 @@ import { UseDecodeIdCard } from "~/utils";
const USER_TYPE = [ const USER_TYPE = [
{ {
bianma: 1, bianma: "1",
name: "在职", name: "在职",
}, },
{ {
bianma: 2, bianma: "0",
name: "离职", name: "离职",
}, },
{
bianma: "2",
name: "信息变更中",
},
]; ];
function List(props) { function List(props) {
const [selectedNodeId, setSelectedNodeId] = useState(); const [selectedNodeId, setSelectedNodeId] = useState();
@ -32,14 +36,14 @@ function List(props) {
const [currentId, setCurrentId] = useState(""); const [currentId, setCurrentId] = useState("");
const queryParams = useGetUrlQuery(); const queryParams = useGetUrlQuery();
const [form] = Form.useForm(); const [form] = Form.useForm();
const { tableProps, getData } = useTable(props["userList"], { const { tableProps, getData } = useTable(props["pageByNopermission"], {
form, form,
usePermission: false, usePermission: false,
transform: (formData) => { transform: (formData) => {
return { return {
...formData, ...formData,
eqDepartmentId: selectedNodeId, eqDepartmentId: selectedNodeId,
corpinfoId: queryParams["id"], eqCorpinfoId: queryParams["id"],
noMain: 1, noMain: 1,
}; };
@ -68,7 +72,7 @@ function List(props) {
return ( return (
<div> <div>
<Page <Page
headerTitle="列表" headerTitle="人员列表"
isShowFooter={false} isShowFooter={false}
> >
<div <div
@ -91,7 +95,7 @@ function List(props) {
label: "姓名", label: "姓名",
}, },
{ {
name: "eqtype", name: "eqEmploymentFlag",
label: "人员状态", label: "人员状态",
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
items: USER_TYPE, items: USER_TYPE,
@ -125,22 +129,29 @@ function List(props) {
dataIndex: "phone", dataIndex: "phone",
}, },
{ {
title: "中台是否存在", title: "人资系统是否存在",
dataIndex: "name", dataIndex: "rzFlag",
},
{
title: "状态",
dataIndex: "name",
render: (_, record) => ( render: (_, record) => (
<div> <div>
{record.employmentFlag === 1 {record.rzFlag === 1
? "在职" ? "是"
: record.employmentFlag === 1 : record.rzFlag === 0
? "离职" ? ""
: ""} : ""}
</div> </div>
), ),
}, },
{
title: "人员状态",
dataIndex: "employmentFlag",
render: (_, record) => (
<div>
{
getLabelName({ list: USER_TYPE, status: record.employmentFlag })
}
</div>
),
},
{ {
title: "操作", title: "操作",
width: 180, width: 180,
@ -169,13 +180,12 @@ function List(props) {
) )
} }
{ {
props.permission("qyyuzt-info-disposal") props.permission("qyyuzt-info-disposal") && record.employmentFlag === 2 && (
&& (
<Button <Button
type="link" type="link"
danger danger
onClick={() => onClick={() =>
props.history.push(`./ChangeView?id=${record.id}&type=disposal`)} props.history.push(`./ChangeView?userId=${record.id}&type=disposal`)}
> >
变更处置 变更处置
</Button> </Button>