Merge remote-tracking branch 'origin/dev-tmp1' into dev-tmp1

dev-tmp1
huwei 2026-08-11 18:04:27 +08:00
commit b34ea35abd
9 changed files with 37 additions and 17 deletions

View File

@ -116,6 +116,11 @@ export const qualFilingReviewGet = declareRequest(
"Get > /safetyEval/qual-filing-review/page", "Get > /safetyEval/qual-filing-review/page",
); );
export const qualFilingCheckNewQual = declareRequest(
"qualFilingLoading",
"Get > /safetyEval/qual-filing/checkNewQual",
);
export const submitQualFiling = declareRequest( export const submitQualFiling = declareRequest(
"qualFilingSubmitLoading", "qualFilingSubmitLoading",
"Post > @/safetyEval/qual-filing/aggregationSaveOrEdit", "Post > @/safetyEval/qual-filing/aggregationSaveOrEdit",

View File

@ -418,9 +418,13 @@ function EquipFormModal({
disabled={!industryCode} disabled={!industryCode}
allowClear allowClear
showSearch showSearch
onChange={(value, option)=>{
form.setFieldValue('deviceTypeName', option.label)
}}
filterOption={(input, option) => (option?.label ?? "").toLowerCase().includes(input.toLowerCase())} filterOption={(input, option) => (option?.label ?? "").toLowerCase().includes(input.toLowerCase())}
/> />
</Form.Item> </Form.Item>
<Form.Item name='deviceTypeName' />
</Col> </Col>
<Col span={12}> <Col span={12}>
<Form.Item <Form.Item

View File

@ -134,9 +134,7 @@ const RiskCenter = (props) => {
render: (sources) => ( render: (sources) => (
<div style={{ display: "flex", flexWrap: "wrap", gap: 4 }}> <div style={{ display: "flex", flexWrap: "wrap", gap: 4 }}>
{(sources || []).map((s, i) => ( {(sources || []).map((s, i) => (
<span key={i} className="source-pill"> <Tag key={i}>{s}</Tag>
{s}
</span>
))} ))}
</div> </div>
), ),

View File

@ -18,12 +18,11 @@
.stat-info { .stat-info {
.stat-label { .stat-label {
font-size: 0.82rem;
color: #64748b; color: #64748b;
} }
.stat-value { .stat-value {
font-size: 1.75rem; font-size: 28px;
font-weight: 700; font-weight: 700;
line-height: 1.15; line-height: 1.15;
margin-top: 6px; margin-top: 6px;
@ -42,7 +41,7 @@
} }
.stat-hint { .stat-hint {
font-size: 0.75rem; font-size: 12px;
color: #64748b; color: #64748b;
margin-top: 4px; margin-top: 4px;
} }
@ -55,7 +54,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 1.1rem; font-size: 18px;
flex-shrink: 0; flex-shrink: 0;
} }
} }
@ -66,7 +65,7 @@
border: 1px solid #e2e8f0; border: 1px solid #e2e8f0;
border-radius: 8px; border-radius: 8px;
padding: 8px 14px; padding: 8px 14px;
font-size: 0.82rem; font-size: 13px;
color: #64748b; color: #64748b;
margin-bottom: 10px; margin-bottom: 10px;
display: flex; display: flex;
@ -88,7 +87,7 @@
border-radius: 999px; border-radius: 999px;
background: #f1f5f9; background: #f1f5f9;
color: #475569; color: #475569;
font-size: 0.68rem; font-size: 11px;
white-space: nowrap; white-space: nowrap;
} }
@ -101,7 +100,7 @@
.risk-toolbar-left { .risk-toolbar-left {
.risk-toolbar-desc { .risk-toolbar-desc {
font-size: 0.85rem; font-size: 14px;
color: #64748b; color: #64748b;
} }
} }

View File

@ -1,4 +1,4 @@
import { Button, Form, Tag, Table, Typography, Select, Modal, Empty } from "antd"; import { Button, Form, Tag, Table, Typography, Select, Modal, Empty, message } from "antd";
import SearchForm from "@cqsjjb/jjb-react-admin-component/SearchForm"; import SearchForm from "@cqsjjb/jjb-react-admin-component/SearchForm";
import ControlWrapper from "@cqsjjb/jjb-react-admin-component/ControlWrapper"; import ControlWrapper from "@cqsjjb/jjb-react-admin-component/ControlWrapper";
import TableAction from "@cqsjjb/jjb-react-admin-component/TableAction"; import TableAction from "@cqsjjb/jjb-react-admin-component/TableAction";
@ -37,6 +37,7 @@ export default function FilingListTable({
history, history,
qualFiling, qualFiling,
qualFilingReviewGet, qualFilingReviewGet,
qualFilingCheckNewQual,
}) { }) {
const statusOptions = getFilingStatusOptions(mode); const statusOptions = getFilingStatusOptions(mode);
@ -84,6 +85,19 @@ export default function FilingListTable({
setReviewList([]); setReviewList([]);
}; };
const handleCreateCheck = async () => {
try {
const res = await qualFilingCheckNewQual();
if (res?.data === true) {
onCreate();
} else {
message.warning(res?.message || "已经申请或备案了资质,请勿重复操作");
}
} catch {
// ignore
}
};
const columns = [ const columns = [
{ {
title: "备案属地", title: "备案属地",
@ -214,7 +228,7 @@ export default function FilingListTable({
} }
extra={ extra={
onCreate && ( onCreate && (
<Button type="primary" onClick={onCreate}> <Button type="primary" loading={qualFilingLoading} onClick={handleCreateCheck}>
{createLabel} {createLabel}
</Button> </Button>
) )

View File

@ -340,7 +340,7 @@ const FilingTabs = ({
<ReadonlyField label="信息公开网址 *" value={detail.infoDisclosureUrl} /> <ReadonlyField label="信息公开网址 *" value={detail.infoDisclosureUrl} />
<div style={fieldStyle}> <div style={fieldStyle}>
<label style={labelStyle}>资质证书编号 *</label> <label style={labelStyle}>资质证书编号 *</label>
<Input readOnly value={detail.qualCertNo || "-"} style={inputStyle} /> <Input readOnly value={detail.filingNo || "-"} style={inputStyle} />
<span style={{ color: "#8b95a5", fontSize: "0.72rem" }}> <span style={{ color: "#8b95a5", fontSize: "0.72rem" }}>
初次申请无需填写已有资质备案时填写 初次申请无需填写已有资质备案时填写
</span> </span>

View File

@ -92,7 +92,7 @@ const QualConfirm = (props) => {
}, },
{ title: "机构名称", dataIndex: "filingUnitName", width: 220, ellipsis: true }, { title: "机构名称", dataIndex: "filingUnitName", width: 220, ellipsis: true },
{ title: "机构类型", dataIndex: "filingUnitTypeName", width: 100 }, { title: "机构类型", dataIndex: "filingUnitTypeName", width: 100 },
{ title: "证书编号", dataIndex: "qualCertNo", width: 140, ellipsis: true }, { title: "证书编号", dataIndex: "filingNo", width: 140, ellipsis: true },
{ {
title: "安全评价业务范围", title: "安全评价业务范围",
dataIndex: "businessScope", dataIndex: "businessScope",

View File

@ -115,7 +115,7 @@ const QualReview = (props) => {
}, },
{ title: "机构名称", dataIndex: "filingUnitName", width: 220, ellipsis: true }, { title: "机构名称", dataIndex: "filingUnitName", width: 220, ellipsis: true },
{ title: "机构类型", dataIndex: "filingUnitTypeName", width: 100 }, { title: "机构类型", dataIndex: "filingUnitTypeName", width: 100 },
{ title: "证书编号", dataIndex: "qualCertNo", width: 140, ellipsis: true }, { title: "证书编号", dataIndex: "filingNo", width: 140, ellipsis: true },
{ {
title: "安全评价业务范围", title: "安全评价业务范围",
dataIndex: "businessScope", dataIndex: "businessScope",

View File

@ -159,7 +159,7 @@ const ReviewModal = (props) => {
</div> </div>
</div> </div>
<div style={statStyle}> <div style={statStyle}>
<div style={statLabelStyle}>条件未满足</div> <div style={statLabelStyle}>风险提醒</div>
<div style={{ fontSize: "1.1rem", fontWeight: 700, color: "#d97706" }}> <div style={{ fontSize: "1.1rem", fontWeight: 700, color: "#d97706" }}>
{legalWarnCount} {legalWarnCount}
</div> </div>
@ -198,7 +198,7 @@ const ReviewModal = (props) => {
name="reviewOpinion" name="reviewOpinion"
rules={[{ required: true, message: "请输入综合审核意见" }]} rules={[{ required: true, message: "请输入综合审核意见" }]}
> >
<TextArea rows={3} placeholder="请输入综合审核意见..." /> <TextArea rows={3} placeholder="请输入综合审核意见..." maxLength={200} />
</Form.Item> </Form.Item>
</Form> </Form>
</Modal> </Modal>