fixed:部分bug修复

master
dearLin 2026-01-17 13:51:06 +08:00
parent c969a353b9
commit ce9b37d261
8 changed files with 179 additions and 40 deletions

View File

@ -30,7 +30,7 @@
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"zy-react-library": "^1.1.26" "zy-react-library": "^1.1.28"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "^5.4.1", "@antfu/eslint-config": "^5.4.1",

View File

@ -30,6 +30,7 @@ function Add(props) {
const { data } = await props["qualificationApplyInfo"]({ id: query.id }); const { data } = await props["qualificationApplyInfo"]({ id: query.id });
// 重新提交时删除id // 重新提交时删除id
if (query.resubmit) { if (query.resubmit) {
data.resubmitId = query.id;
delete data.id; delete data.id;
} }
if (data.groupUnitUser) { if (data.groupUnitUser) {
@ -330,9 +331,11 @@ const StepTwoComponent = (props) => {
delete query.id; delete query.id;
} }
const data = { ...props.formValues, qualificationsApplyDetailList: [...specialList] }; const data = { ...props.formValues, qualificationsApplyDetailList: [...specialList] };
if (data.groupUnitUser && data.groupUnitUser.length !== 0) { if (data.groupUnitUser && Array.isArray(data.groupUnitUser)) {
data.groupUnitUser = data.groupUnitUser.join(","); data.groupUnitUser = data.groupUnitUser.join(",");
data.groupUnitUserName = data.groupUnitUserName?.join(","); }
if (data.groupUnitUserName && Array.isArray(data.groupUnitUserName)) {
data.groupUnitUserName = data.groupUnitUserName.join(",");
} }
const { success } = await props[!query.id ? "qualificationApplyAdd" : "qualificationApplyUpdate"]({ const { success } = await props[!query.id ? "qualificationApplyAdd" : "qualificationApplyUpdate"]({
...data, ...data,
@ -351,7 +354,7 @@ const StepTwoComponent = (props) => {
> >
{typeGroup.map(item => ( {typeGroup.map(item => (
<div key={item.dataType}> <div key={item.dataType}>
<Divider orientation="left">{item.dataTypeName}</Divider> <Divider orientation="left">{`${item.dataTypeName}信息`}</Divider>
<Table <Table
dataSource={specialList.filter(record => record.dataType === item.dataType)} dataSource={specialList.filter(record => record.dataType === item.dataType)}
pagination={false} pagination={false}

View File

@ -76,7 +76,7 @@ function View(props) {
</div> </div>
{typeGroup.map(item => ( {typeGroup.map(item => (
<div key={item.dataType}> <div key={item.dataType}>
<Divider orientation="left">{item.dataTypeName}</Divider> <Divider orientation="left">{`${item.dataTypeName}信息`}</Divider>
<Table <Table
dataSource={specialList.filter(detail => detail.dataType === item.dataType)} dataSource={specialList.filter(detail => detail.dataType === item.dataType)}
pagination={false} pagination={false}

View File

@ -12,7 +12,7 @@ import useTable from "zy-react-library/hooks/useTable";
import { NS_QUALIFICATION_RECORDS } from "~/enumerate/namespace"; import { NS_QUALIFICATION_RECORDS } from "~/enumerate/namespace";
function List(props) { function List(props) {
const [currentTenantId, setCurrentTenantId] = useState(""); const [currentUserId, setCurrentUserId] = useState("");
const [form] = Form.useForm(); const [form] = Form.useForm();
const { tableProps, getData } = useTable(props["qualificationRecordsList"], { const { tableProps, getData } = useTable(props["qualificationRecordsList"], {
form, form,
@ -24,7 +24,7 @@ function List(props) {
}; };
}, },
onSuccess: (data) => { onSuccess: (data) => {
setCurrentTenantId(data.extValues.currentTenantId); setCurrentUserId(data.extValues.currentUserId);
}, },
}); });
@ -60,7 +60,7 @@ function List(props) {
{ title: "资质名称", dataIndex: "qualificationsName" }, { title: "资质名称", dataIndex: "qualificationsName" },
{ title: "资质类别", dataIndex: "qualificationsTypeName" }, { title: "资质类别", dataIndex: "qualificationsTypeName" },
{ title: "资质等级", dataIndex: "stakeholderLevelName" }, { title: "资质等级", dataIndex: "stakeholderLevelName" },
{ title: "时效属性", dataIndex: "isLongTerm", render: (_, record) => record.isLongTerm ? "长期" : "短期" }, { title: "时效属性", dataIndex: "isLongTerm", render: (_, record) => record.isLongTerm === 1 ? "长期" : "短期" },
{ title: "材料数", dataIndex: "materialNum" }, { title: "材料数", dataIndex: "materialNum" },
{ {
title: "资质状态", title: "资质状态",
@ -98,19 +98,15 @@ function List(props) {
</span> </span>
</Tooltip> </Tooltip>
)} )}
{record.qualificationsStatus === 3 && "资质过期"} {(record.qualificationsStatus === 3 || record.qualificationsStatus === 4) && "资质过期"}
</div> </div>
), ),
}, },
{ {
title: "当前状态", title: "当前状态",
dataIndex: "auditProcess", dataIndex: "status",
render: (_, record) => ( render: (_, record) => (
<div> <div>
{record.auditProcess === "100" && "集团单位"}
{record.status === 100 && "待审核"}
{record.status === 200 && "审核中"}
{record.status === 300 && "已驳回"}
{record.status === 400 && "已通过"} {record.status === 400 && "已通过"}
</div> </div>
), ),
@ -121,7 +117,9 @@ function List(props) {
width: 200, width: 200,
render: (_, record) => ( render: (_, record) => (
<Space> <Space>
{(props.permission(props.cxtjbtn || "zrzz-jtgs-zrzzjl-btn-cxtj") && record.status === 400 && record.corpId === currentTenantId && (record.qualificationsStatus === 1 || record.qualificationsStatus === 2)) && ( {(props.permission(props.cxtjbtn || "zrzz-jtgs-zrzzjl-btn-cxtj")
&& record.status === 400 && record.createId === currentUserId
&& (record.isAnnualInspection === 1)) && (
<Button <Button
type="link" type="link"
onClick={() => { onClick={() => {

View File

@ -0,0 +1,140 @@
import { WarningOutlined } from "@ant-design/icons";
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space, Tooltip } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
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 { NS_QUALIFICATION_RECORDS } from "~/enumerate/namespace";
function List(props) {
const [form] = Form.useForm();
const { tableProps, getData } = useTable(props["qualificationRecordsList"], {
form,
transform: (formData) => {
const auditStatus = formData.auditStatus?.split("-") || [];
return {
auditProcess: auditStatus[0],
auditStatus: auditStatus[1],
};
},
});
return (
<Page isShowAllAction={false}>
<Search
labelCol={{ span: 8 }}
options={[
{ name: "qualificationsName", label: "资质名称" },
{
name: "qualificationsTypeId",
label: "资质类别",
render: (<DictionarySelect dictValue="qualificationsType" />),
},
{ name: "stakeholderLevel", label: "资质等级", render: (<DictionarySelect dictValue="stakeholderLevel" />) },
{
name: "auditStatus",
label: "审核状态",
render: FORM_ITEM_RENDER_ENUM.SELECT,
items: [
{ bianma: "200-200", name: "主管部门审核中" },
{ bianma: "200-300", name: "主管部门已驳回" },
{ bianma: "400", name: "已完成" },
],
},
]}
form={form}
onFinish={getData}
/>
<Table
columns={[
{ title: "相关方名称", dataIndex: "corpName" },
{ title: "资质名称", dataIndex: "qualificationsName" },
{ title: "资质类别", dataIndex: "qualificationsTypeName" },
{ title: "时效属性", dataIndex: "isLongTerm", render: (_, record) => record.isLongTerm ? "长期" : "短期" },
{ title: "资质等级", dataIndex: "stakeholderLevelName" },
{ title: "材料数", dataIndex: "materialNum" },
{
title: "资质资料状态",
dataIndex: "qualificationsStatus",
render: (_, record) => (
<div>
{record.qualificationsStatus === 0 && "正常"}
{record.qualificationsStatus === 1 && "资质待完善"}
{record.qualificationsStatus === 2 && (
<Tooltip
overlayStyle={{ width: "auto", maxWidth: "700px", whiteSpace: "normal", wordBreak: "break-word" }}
title={
record.expireList
? (
<div style={{ width: "100%" }}>
{record.expireList.map((item, index) => (
<div key={index}>
{item.dataName}
{" "}
已于
{item.qualificationsTermEnd}
{" "}
过期
</div>
))}
</div>
)
: "部分资料已过期"
}
>
<span style={{ display: "inline-flex", alignItems: "center" }}>
存在异常
{" "}
<WarningOutlined style={{ color: "#faad14", marginLeft: 4 }} />
</span>
</Tooltip>
)}
{record.qualificationsStatus === 3 && "资质过期"}
</div>
),
},
{
title: "审核状态",
dataIndex: "auditProcess",
render: (_, record) => (
<div>
{record.auditProcess === "100" && "集团单位"}
{record.status === 100 && "待审核"}
{record.status === 200 && "审核中"}
{record.status === 300 && "已驳回"}
{record.status === 400 && "已通过"}
</div>
),
},
// { title: "时效性", dataIndex: "qualificationsTermStart", render: (_, record) => record.qualificationsTermStart ? `${record.qualificationsTermStart}至${record.qualificationsTermEnd}` : "-" },
{
title: "操作",
fixed: "right",
width: 130,
render: (_, record) => (
<Space>
{props.permission("zrzz-sdgs-zrzzjl-btn-ck") && (
<Button
type="link"
onClick={() => {
props.history.push(`../ViewInfo?id=${record.id}`);
}}
>
查看
</Button>
)}
</Space>
),
},
]}
{...tableProps}
/>
</Page>
);
}
export default Connect([NS_QUALIFICATION_RECORDS], true)(Permission(List));

View File

@ -8,7 +8,7 @@ import { validatorEndTime } from "zy-react-library/utils";
import { NS_QUALIFICATION_REVIEW } from "~/enumerate/namespace"; import { NS_QUALIFICATION_REVIEW } from "~/enumerate/namespace";
import ViewInfo from "../../ViewInfo"; import ViewInfo from "../../ViewInfo";
function Review(props) { function Review() {
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const [rejectModalOpen, setRejectModalOpen] = useState(false); const [rejectModalOpen, setRejectModalOpen] = useState(false);
const [passModalOpen, setPassModalOpen] = useState(false); const [passModalOpen, setPassModalOpen] = useState(false);

View File

@ -110,7 +110,7 @@ function Add(props) {
render: ( render: (
<DepartmentSelectTree <DepartmentSelectTree
disabled={query.id} disabled={query.id}
searchType="company" searchType="inType"
params={{ inType: corpTypeList }} params={{ inType: corpTypeList }}
onGetLabel={(label) => { onGetLabel={(label) => {
form.setFieldValue("managerDeptName", label); form.setFieldValue("managerDeptName", label);
@ -153,7 +153,7 @@ function Add(props) {
render: ( render: (
<DepartmentSelectTree <DepartmentSelectTree
disabled={query.id} disabled={query.id}
searchType="company" searchType="inType"
params={{ inType: [2] }} params={{ inType: [2] }}
onGetLabel={(label) => { onGetLabel={(label) => {
form.setFieldValue("shareDeptName", label); form.setFieldValue("shareDeptName", label);

View File

@ -79,7 +79,24 @@ function ViewInfo(props) {
<Page headerTitle={props.title || "查看"} contentPadding="0 20px 20px 20px" extraActionButtons={props.extraActionButtons}> <Page headerTitle={props.title || "查看"} contentPadding="0 20px 20px 20px" extraActionButtons={props.extraActionButtons}>
<div className="qualification-view"> <div className="qualification-view">
<div> <div>
<Divider orientation="left">流程信息</Divider> <Divider orientation="left">审核信息及流程</Divider>
<Spin spinning={props.qualificationReview.qualificationReviewLoading}>
<Descriptions
column={2}
bordered
styles={{ label: { width: 200 }, content: { width: 500 } }}
items={[
{ label: "相关方名称", children: info.corpName },
{ label: "所属集团单位", children: info.groupUnitName },
{ label: "资质名称", children: info.qualificationsName },
{ label: "资质类别", children: info.qualificationsTypeName },
{ label: "资质等级", children: info.stakeholderLevelName },
{ label: "材料数", children: info.materialNum },
{ label: "备注", children: info.remarks },
]}
/>
</Spin>
<div className="flows-container"> <div className="flows-container">
<div className="flows"> <div className="flows">
{ {
@ -105,6 +122,7 @@ function ViewInfo(props) {
</div> </div>
) )
} }
<div className="info">{item.auditTime}</div>
</div> </div>
{index !== info.processFlow.length - 1 && <div className="line" />} {index !== info.processFlow.length - 1 && <div className="line" />}
</Fragment> </Fragment>
@ -113,26 +131,6 @@ function ViewInfo(props) {
</div> </div>
</div> </div>
</div> </div>
<div>
<Divider orientation="left">审核信息</Divider>
<Spin spinning={props.qualificationReview.qualificationReviewLoading}>
<Descriptions
column={2}
bordered
styles={{ label: { width: 200 }, content: { width: 500 } }}
items={[
{ label: "相关方名称", children: info.corpName },
{ label: "所属集团单位", children: info.groupUnitName },
{ label: "资质名称", children: info.qualificationsName },
{ label: "资质类别", children: info.qualificationsTypeName },
{ label: "资质等级", children: info.stakeholderLevelName },
{ label: "材料数", children: info.materialNum },
{ label: "备注", children: info.remarks },
]}
/>
</Spin>
</div>
<div> <div>
<Divider orientation="left">基础信息</Divider> <Divider orientation="left">基础信息</Divider>
<Spin spinning={props.qualificationReview.enterpriseLoading || getFileLoading}> <Spin spinning={props.qualificationReview.enterpriseLoading || getFileLoading}>
@ -172,7 +170,7 @@ function ViewInfo(props) {
</div> </div>
{typeGroup.map(item => ( {typeGroup.map(item => (
<div key={item.dataType}> <div key={item.dataType}>
<Divider orientation="left">{item.dataTypeName}</Divider> <Divider orientation="left">{`${item.dataTypeName}信息`}</Divider>
<Spin spinning={props.qualificationReview.qualificationReviewLoading}> <Spin spinning={props.qualificationReview.qualificationReviewLoading}>
<Table <Table
options={false} options={false}