6.5需求变更

dev
853931625@qq.com 2026-06-10 10:09:20 +08:00
parent 81f785ad5c
commit 592a6a1992
10 changed files with 151 additions and 32 deletions

View File

@ -20,7 +20,7 @@ module.exports = {
// 应用后端分支名称,部署上线需要 // 应用后端分支名称,部署上线需要
javaGitBranch: "<branch-name>", javaGitBranch: "<branch-name>",
// 接口服务地址 // 接口服务地址
API_HOST: "https://gbs-gateway.qhdsafety.com", API_HOST: "",
}, },
}, },
// 应用唯一标识符 // 应用唯一标识符
@ -29,8 +29,9 @@ module.exports = {
contextInject: { contextInject: {
// 应用Key // 应用Key
appKey: "", appKey: "",
fileUrl: "https://jpfz.qhdsafety.com/gbsFileTest/", // fileUrl: "https://jpfz.qhdsafety.com/gbsFileTest/",
// fileUrl: "http://192.168.20.240:9787/mnt/", // fileUrl: "http://192.168.20.240:9787/mnt/",
fileUrl: "https://skqhdg.porthebei.com:9004/file/uploadFiles2/",
}, },
// public/index.html注入全局变量 // public/index.html注入全局变量
windowInject: { windowInject: {

View File

@ -19,6 +19,19 @@ import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { getLabelName, validatorEndTime, validatorTimeGECurrentDay } from "zy-react-library/utils"; import { getLabelName, validatorEndTime, validatorTimeGECurrentDay } from "zy-react-library/utils";
import { NS_QUALIFICATION_APPLY, NS_QUALIFICATION_MAINTENANCE } from "~/enumerate/namespace"; import { NS_QUALIFICATION_APPLY, NS_QUALIFICATION_MAINTENANCE } from "~/enumerate/namespace";
const hasSelectedValue = value => Array.isArray(value) ? value.length > 0 : !!value;
const validateQualificationBusiness = (values) => {
if (values.qualificationsTypeId !== "sbl")
return true;
if ([values.maintain, values.detection, values.otherHighRiskName].some(hasSelectedValue))
return true;
message.error("“维修、保养”“检测”“其它高风险业务”,至少选择一项。");
return false;
};
function Add(props) { function Add(props) {
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const [form] = Form.useForm(); const [form] = Form.useForm();
@ -33,6 +46,11 @@ function Add(props) {
const getData = async () => { const getData = async () => {
const { data } = await props["qualificationApplyInfo"]({ id: query.id }); const { data } = await props["qualificationApplyInfo"]({ id: query.id });
console.log(data);
data.maintain = data.maintain && data.maintain.split(",")
data.detection = data.detection && data.detection.split(",")
data.otherHighRisk = data.otherHighRisk && data.otherHighRisk.split(",")
// 重新提交时删除id // 重新提交时删除id
if (query.resubmit) { if (query.resubmit) {
delete data.id; delete data.id;
@ -122,6 +140,8 @@ const StepOneComponent = (props) => {
const getQualificationsListAll = async () => { const getQualificationsListAll = async () => {
const { data } = await props["qualificationsListAll"]({ qualificationsTypeId, stakeholderLevel, status: 0 }); const { data } = await props["qualificationsListAll"]({ qualificationsTypeId, stakeholderLevel, status: 0 });
setQualificationsListAll(data); setQualificationsListAll(data);
}; };
@ -161,6 +181,9 @@ const StepOneComponent = (props) => {
form={form} form={form}
loading={props.qualificationApply.qualificationApplyLoading} loading={props.qualificationApply.qualificationApplyLoading}
onFinish={(values) => { onFinish={(values) => {
if (!validateQualificationBusiness(values))
return;
props.setCurrentStep(2); props.setCurrentStep(2);
props.setFormValues(values); props.setFormValues(values);
}} }}
@ -278,10 +301,12 @@ const StepOneComponent = (props) => {
items: qualificationsListAll, items: qualificationsListAll,
itemsField: { labelKey: "qualificationsName", valueKey: "id" }, itemsField: { labelKey: "qualificationsName", valueKey: "id" },
}, },
{ {
name: "maintain", name: "maintain",
label: "维修、保养", label: "维修、保养",
hidden:qualificationsTypeId !=="sbl", hidden:qualificationsTypeId !=="sbl",
required:false,
render: ( render: (
<DictionarySelect <DictionarySelect
dictValue="maintain" dictValue="maintain"
@ -298,6 +323,7 @@ const StepOneComponent = (props) => {
name: "detection", name: "detection",
label: "检测", label: "检测",
hidden:qualificationsTypeId !=="sbl", hidden:qualificationsTypeId !=="sbl",
required:false,
render: ( render: (
<DictionarySelect <DictionarySelect
dictValue="detection" dictValue="detection"
@ -312,6 +338,7 @@ const StepOneComponent = (props) => {
{ {
name: "otherHighRisk", name: "otherHighRisk",
label: "其它高风险业务", label: "其它高风险业务",
required:false,
hidden:qualificationsTypeId !=="sbl", hidden:qualificationsTypeId !=="sbl",
render: ( render: (
<DictionarySelect <DictionarySelect
@ -429,6 +456,9 @@ const StepTwoComponent = forwardRef((props, ref) => {
}; };
const onSubmit = async () => { const onSubmit = async () => {
if (!validateQualificationBusiness(props.formValues))
return;
if (!validateFileList(specialList)) if (!validateFileList(specialList))
return; return;
for (let i = 0; i < specialList.length; i++) { for (let i = 0; i < specialList.length; i++) {

View File

@ -73,9 +73,9 @@ function View(props) {
...( ...(
info.qualificationsTypeId === "sbl" ? [ info.qualificationsTypeId === "sbl" ? [
{label: "维修、保养", children: info.maintainName && info.maintainName.join(" , ")}, {label: "维修、保养", children: info.maintainName && info.maintainName},
{label: "检测", children: info.detectionName && info.detectionName.join(" , ")}, {label: "检测", children: info.detectionName && info.detectionName},
{label: "其它高风险业务", children: info.otherHighRiskName && info.otherHighRiskName.join(" , "), span: 2}, {label: "其它高风险业务", children: info.otherHighRiskName && info.otherHighRiskName, span: 2},
] : [] ] : []
), ),
{ label: "备注", children: info.remarks }, { label: "备注", children: info.remarks },

View File

@ -1,16 +1,19 @@
import { WarningOutlined } from "@ant-design/icons"; import { WarningOutlined } from "@ant-design/icons";
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space, Tooltip } from "antd"; import {Button, Descriptions, Form, Modal, Space, Tooltip} 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 Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { NS_QUALIFICATION_RECORDS } from "~/enumerate/namespace"; import {NS_QUALIFICATION_APPLY, NS_QUALIFICATION_RECORDS} from "~/enumerate/namespace";
import {useState} from "react";
function List(props) { function List(props) {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [rejectReasonModalOpen, setRejectReasonModalOpen] = useState(false);
const [rejectReason, setRejectReason] = useState(false);
const { tableProps, getData } = useTable(props["qualificationRecordsList"], { const { tableProps, getData } = useTable(props["qualificationRecordsList"], {
form, form,
transform: (formData) => { transform: (formData) => {
@ -21,7 +24,11 @@ function List(props) {
}; };
}, },
}); });
const onViewRejectReason = async (id) => {
const { data } = await props["qualificationApplyRejectReason"]({ id });
setRejectReason(data);
setRejectReasonModalOpen(true);
};
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
@ -113,26 +120,63 @@ function List(props) {
{ {
title: "操作", title: "操作",
fixed: "right", fixed: "right",
width: 130, width: 160,
hidden: !props.permission("fgs-bwtshjl-ck"),
render: (_, record) => ( render: (_, record) => (
<Space> <Space>
<Button {
type="link" props.permission("fgs-bwtshjl-ck") &&
onClick={() => { (
props.history.push(`../ViewInfo?id=${record.id}`); <Button
}} type="link"
> onClick={() => {
查看 props.history.push(`../ViewInfo?id=${record.id}`);
</Button> }}
>
查看
</Button>
)
}
<Button
type="link"
danger
disabled={record.status !== 300}
onClick={() => {
onViewRejectReason(record.id);
}}
>
查看驳回原因
</Button>
</Space> </Space>
), ),
}, },
]} ]}
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</Page> </Page>
); );
} }
const RejectReason = (props) => {
export default Connect([NS_QUALIFICATION_RECORDS], true)(Permission(List)); return (
<Modal
title="查看驳回原因"
width={600}
open
maskClosable={false}
onCancel={props.onCancel}
footer={[
<Button key="cancel" onClick={props.onCancel}>关闭</Button>,
]}
>
<Descriptions
bordered
column={1}
styles={{ label: { width: 200 } }}
items={[
{ label: "驳回原因", children: props.rejectReason },
]}
/>
</Modal>
);
};
export default Connect([NS_QUALIFICATION_RECORDS,NS_QUALIFICATION_APPLY], true)(Permission(List));

View File

@ -21,6 +21,7 @@ function List(props) {
return { return {
auditProcess: auditStatus[0], auditProcess: auditStatus[0],
auditStatus: 400, auditStatus: 400,
status: 400
}; };
}, },
onSuccess: (data) => { onSuccess: (data) => {
@ -140,6 +141,7 @@ function List(props) {
查看 查看
</Button> </Button>
)} )}
</Space> </Space>
), ),
}, },

View File

@ -123,7 +123,7 @@ const PassModalComponent = (props) => {
options={[ options={[
{ {
name: "isLongTerm", name: "isLongTerm",
label: "供应商时效属性", label: "相关方时效属性",
span: 24, span: 24,
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [{ bianma: 1, name: "长期" }, { bianma: 0, name: "短期" }], items: [{ bianma: 1, name: "长期" }, { bianma: 0, name: "短期" }],

View File

@ -322,7 +322,7 @@ function Review(props) {
{ label: "注册资金(万元)", children: info.corpInfo?.regcapital }, { label: "注册资金(万元)", children: info.corpInfo?.regcapital },
{ label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) }, { label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) },
{ label: "营业执照", children: <PreviewImg files={info.corpInfo?.qiyefile || []} /> }, { label: "营业执照", children: <PreviewImg files={info.corpInfo?.qiyefile || []} /> },
{ label: "营业执照有效期", children: info.corpInfo?.licenseStart ? `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` : "-" }, // { label: "营业执照有效期", children: info.corpInfo?.licenseStart ? `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` : "-" },
]} ]}
/> />
</div> </div>

View File

@ -1,16 +1,19 @@
import { WarningOutlined } from "@ant-design/icons"; import { WarningOutlined } from "@ant-design/icons";
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space, Tooltip } from "antd"; import {Button, Descriptions, Form, Modal, Space, Tooltip} 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 Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { NS_QUALIFICATION_RECORDS } from "~/enumerate/namespace"; import {NS_QUALIFICATION_APPLY, NS_QUALIFICATION_RECORDS} from "~/enumerate/namespace";
import {useState} from "react";
function List(props) { function List(props) {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [rejectReasonModalOpen, setRejectReasonModalOpen] = useState(false);
const [rejectReason, setRejectReason] = useState(false);
const { tableProps, getData } = useTable(props["qualificationRecordsList"], { const { tableProps, getData } = useTable(props["qualificationRecordsList"], {
form, form,
transform: (formData) => { transform: (formData) => {
@ -21,7 +24,11 @@ function List(props) {
}; };
}, },
}); });
const onViewRejectReason = async (id) => {
const { data } = await props["qualificationApplyRejectReason"]({ id });
setRejectReason(data);
setRejectReasonModalOpen(true);
};
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
@ -113,7 +120,7 @@ function List(props) {
{ {
title: "操作", title: "操作",
fixed: "right", fixed: "right",
width: 130, width: 180,
render: (_, record) => ( render: (_, record) => (
<Space> <Space>
{props.permission("zrzz-jgd-zrzzjl-btn-ck") && ( {props.permission("zrzz-jgd-zrzzjl-btn-ck") && (
@ -126,14 +133,49 @@ function List(props) {
查看 查看
</Button> </Button>
)} )}
<Button
type="link"
danger
disabled={record.status !== 300}
onClick={() => {
onViewRejectReason(record.id);
}}
>
查看驳回原因
</Button>
</Space> </Space>
), ),
}, },
]} ]}
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</Page> </Page>
); );
} }
const RejectReason = (props) => {
return (
<Modal
title="查看驳回原因"
width={600}
open
maskClosable={false}
onCancel={props.onCancel}
footer={[
<Button key="cancel" onClick={props.onCancel}>关闭</Button>,
]}
>
<Descriptions
bordered
column={1}
styles={{ label: { width: 200 } }}
items={[
{ label: "驳回原因", children: props.rejectReason },
]}
/>
</Modal>
);
};
export default Connect([NS_QUALIFICATION_RECORDS], true)(Permission(List)); export default Connect([NS_QUALIFICATION_RECORDS,NS_QUALIFICATION_APPLY], true)(Permission(List));

View File

@ -137,7 +137,7 @@ const PassModalComponent = (props) => {
options={[ options={[
{ {
name: "isLongTerm", name: "isLongTerm",
label: "供应商时效属性", label: "相关方时效属性",
span: 24, span: 24,
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [{ bianma: 1, name: "长期" }, { bianma: 0, name: "短期" }], items: [{ bianma: 1, name: "长期" }, { bianma: 0, name: "短期" }],

View File

@ -95,9 +95,9 @@ function ViewInfo(props) {
...( ...(
info.qualificationsTypeId === "sbl" ? [ info.qualificationsTypeId === "sbl" ? [
{label: "维修、保养", children: info.maintainName && info.maintainName.join(" , ")}, {label: "维修、保养", children: info.maintainName && info.maintainName},
{label: "检测", children: info.detectionName && info.detectionName.join(" , ")}, {label: "检测", children: info.detectionName && info.detectionName},
{label: "其它高风险业务", children: info.otherHighRiskName && info.otherHighRiskName.join(" , "), span: 2}, {label: "其它高风险业务", children: info.otherHighRiskName && info.otherHighRiskName, span: 2},
] : [] ] : []
), ),
@ -175,7 +175,7 @@ function ViewInfo(props) {
children: getLabelName({ status: corpInfoData.type, list: ENTERPRISE_TYPE }), children: getLabelName({ status: corpInfoData.type, list: ENTERPRISE_TYPE }),
}, },
{ label: "营业执照", children: <PreviewImg files={corpInfoData.licenseFile} /> }, { label: "营业执照", children: <PreviewImg files={corpInfoData.licenseFile} /> },
{ label: "营业执照有效期", children: corpInfoData.licenseStart ? `${corpInfoData.licenseStart}${corpInfoData.licenseEnd}` : "" }, // { label: "营业执照有效期", children: corpInfoData.licenseStart ? `${corpInfoData.licenseStart} 至 ${corpInfoData.licenseEnd}` : "" },
]} ]}
/> />
</Spin> </Spin>