fix
parent
68182377e0
commit
c94f43e877
|
|
@ -10,7 +10,7 @@ module.exports = {
|
|||
javaGitBranch: "dev",
|
||||
// 本地联调 safetyEval-service(context-path: /safetyEval,默认端口 8095)
|
||||
// 可通过环境变量覆盖: SAFETY_EVAL_API_HOST=http://192.168.x.x:8095
|
||||
API_HOST: "https://gbs-gateway.qhdsafety.com",
|
||||
API_HOST: "http://192.168.0.149",
|
||||
},
|
||||
production: {
|
||||
// 应用后端分支名称,部署上线需要
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ function PersonnelInfoPage(props) {
|
|||
<Table
|
||||
rowKey="id"
|
||||
columns={[
|
||||
{ title: "用户名称", dataIndex: "userName" },
|
||||
{ title: "用户名称", dataIndex: "userName", ellipsis: true },
|
||||
{ title: "账号", dataIndex: "account" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{ title: "岗位", dataIndex: "postName" },
|
||||
|
|
@ -216,7 +216,7 @@ function PersonnelInfoPage(props) {
|
|||
},
|
||||
{
|
||||
title: "操作",
|
||||
width: 320,
|
||||
width: 200,
|
||||
render: (_, record) => (
|
||||
<TableAction>
|
||||
<Button
|
||||
|
|
@ -397,6 +397,7 @@ function StaffFormModal({
|
|||
...data,
|
||||
};
|
||||
if (data.birthDate) setFields.birthDate = dayjs(data.birthDate);
|
||||
if (data.joinWorkDate) setFields.joinWorkDate = dayjs(data.joinWorkDate);
|
||||
|
||||
if (setFields.proofMaterialUrl) {
|
||||
setFields.proofMaterialUrl = JSON.parse(setFields.proofMaterialUrl);
|
||||
|
|
@ -442,14 +443,6 @@ function StaffFormModal({
|
|||
: values.genderCode === 2
|
||||
? "女"
|
||||
: undefined,
|
||||
personTypeCode: values.personTypeName,
|
||||
personTypeName: values.personTypeName,
|
||||
professionalLevelCode: values.professionalLevelName,
|
||||
professionalLevelName: values.professionalLevelName,
|
||||
educationTypeCode: values.educationTypeName,
|
||||
educationTypeName: values.educationTypeName,
|
||||
educationLevelCode: values.educationLevelName,
|
||||
educationLevelName: values.educationLevelName,
|
||||
proofMaterialUrl: Array.isArray(values.proofMaterialUrl)
|
||||
? JSON.stringify(values.proofMaterialUrl)
|
||||
: undefined,
|
||||
|
|
@ -457,6 +450,9 @@ function StaffFormModal({
|
|||
if (payload.birthDate && typeof payload.birthDate !== "string") {
|
||||
payload.birthDate = payload.birthDate.format("YYYY-MM-DD");
|
||||
}
|
||||
if (payload.joinWorkDate && typeof payload.joinWorkDate !== "string") {
|
||||
payload.joinWorkDate = payload.joinWorkDate.format("YYYY-MM-DD");
|
||||
}
|
||||
if (currentId) payload.id = currentId;
|
||||
delete payload.proofMaterials;
|
||||
|
||||
|
|
@ -524,6 +520,11 @@ function StaffFormModal({
|
|||
<DatePicker style={{ width: "100%" }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item name="joinWorkDate" label="参加工作时间" rules={[{ required: true, message: "请选择参加工作时间" }]}>
|
||||
<DatePicker style={{ width: "100%" }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
name="account"
|
||||
|
|
@ -586,12 +587,16 @@ function StaffFormModal({
|
|||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item name="personTypeName" label="人员类型">
|
||||
<Form.Item name="personTypeCode" label="人员类型">
|
||||
<Select
|
||||
placeholder="请选择人员类型"
|
||||
options={PERSON_TYPE_OPTIONS}
|
||||
onChange={(_val, option) => {
|
||||
form.setFieldValue("personTypeName", option?.label || undefined);
|
||||
}}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item name="personTypeName" noStyle />
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item name="qualScope" label="资质范围">
|
||||
|
|
@ -603,13 +608,17 @@ function StaffFormModal({
|
|||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item name="professionalLevelName" label="职业等级">
|
||||
<Form.Item name="professionalLevelCode" label="职业等级">
|
||||
<Select
|
||||
placeholder="请选择职业等级"
|
||||
allowClear
|
||||
options={PROFESSIONAL_LEVEL_OPTIONS}
|
||||
onChange={(_val, option) => {
|
||||
form.setFieldValue("professionalLevelName", option?.label || undefined);
|
||||
}}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item name="professionalLevelName" noStyle />
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
|
|
@ -621,22 +630,33 @@ function StaffFormModal({
|
|||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item name="educationTypeName" label="学历类型">
|
||||
<Form.Item name="educationTypeCode" label="学历类型">
|
||||
<Select
|
||||
placeholder="请选择学历类型"
|
||||
allowClear
|
||||
options={EDUCATION_TYPE_OPTIONS}
|
||||
onChange={(_val, option) => {
|
||||
form.setFieldValue("educationTypeName", option?.label || undefined);
|
||||
}}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item name="educationTypeName" noStyle />
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item name="educationLevelName" label="学历层次">
|
||||
<Form.Item name="educationLevelCode" label="学历层次">
|
||||
<Select
|
||||
placeholder="请选择学历层次"
|
||||
allowClear
|
||||
options={EDUCATION_LEVEL_OPTIONS}
|
||||
onChange={(val , option) => {
|
||||
form.setFieldValue(
|
||||
"educationLevelName",
|
||||
option?.label || undefined,
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item name="educationLevelName" noStyle/>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ export default function EquipmentStep({
|
|||
dataSource={equipmentList || []}
|
||||
columns={[
|
||||
{ title: "序号", width: 60, render: (_, __, index) => index + 1 },
|
||||
{ title: "装备名称", dataIndex: "deviceName" },
|
||||
{ title: "规格型号", dataIndex: "deviceModel" },
|
||||
{ title: "装备名称", dataIndex: "deviceName", ellipsis: true },
|
||||
{ title: "规格型号", dataIndex: "deviceModel",ellipsis: true },
|
||||
{ title: "生产厂家", dataIndex: "manufacturer" },
|
||||
{
|
||||
title: "计量检定情况",
|
||||
|
|
|
|||
|
|
@ -94,8 +94,8 @@ function OrgEquipmentSelectModalInner(props) {
|
|||
onChange: (page, pageSize) => getData(page, pageSize),
|
||||
}}
|
||||
columns={[
|
||||
{ title: "装备名称", dataIndex: "deviceName" },
|
||||
{ title: "规格型号", dataIndex: "deviceModel" },
|
||||
{ title: "装备名称", dataIndex: "deviceName", ellipsis: true },
|
||||
{ title: "规格型号", dataIndex: "deviceModel",ellipsis: true },
|
||||
{ title: "生产厂家", dataIndex: "manufacturer" },
|
||||
]}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -94,10 +94,10 @@ function OrgPersonnelSelectModalInner(props) {
|
|||
}}
|
||||
scroll={ { y: 400 }}
|
||||
columns={[
|
||||
{ title: "人员姓名", dataIndex: "userName" },
|
||||
{ title: "人员姓名", dataIndex: "userName", ellipsis: true },
|
||||
{ title: "类型", dataIndex: "personTypeName" },
|
||||
|
||||
{ title: "职称", dataIndex: "titleName" },
|
||||
{ title: "职称", dataIndex: "titleName", ellipsis: true },
|
||||
{
|
||||
title: "操作",
|
||||
width: 80,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/** 资质申请前置条件核验(提交前展示,对齐原型) */
|
||||
|
||||
/** 人员相关三项暂不校验(机构库数据不足),恢复时改为 false */
|
||||
const SKIP_PERSONNEL_VERIFY = true;
|
||||
const SKIP_PERSONNEL_VERIFY = false;
|
||||
|
||||
const KEY_POSITIONS = ["负责人", "技术负责人", "质量负责人"];
|
||||
|
||||
|
|
@ -45,6 +45,7 @@ export function verifyFilingPrerequisites(detail = {}) {
|
|||
});
|
||||
|
||||
const personnel = detail.personnelList || [];
|
||||
|
||||
const total = personnel.length;
|
||||
const regEngineerCount = personnel.filter(isRegisterEngineer).length;
|
||||
const midTitleCount = personnel.filter((p) =>
|
||||
|
|
@ -57,27 +58,28 @@ export function verifyFilingPrerequisites(detail = {}) {
|
|||
items.push({
|
||||
key: "personnelStructure",
|
||||
label: "人员数量与结构",
|
||||
desc: "专职技术人员≥25人,中级注安师≥30%,中级职称≥50%,高级职称≥30%",
|
||||
desc: "专职技术人员≥25人",
|
||||
passed:
|
||||
SKIP_PERSONNEL_VERIFY ||
|
||||
(total >= 25 &&
|
||||
ratio(regEngineerCount, total) >= 0.3 &&
|
||||
ratio(midTitleCount, total) >= 0.5 &&
|
||||
ratio(seniorTitleCount, total) >= 0.3),
|
||||
total >= 25 ,
|
||||
});
|
||||
|
||||
const twoYearsAgo = new Date();
|
||||
twoYearsAgo.setFullYear(twoYearsAgo.getFullYear() - 2);
|
||||
const withExperience = personnel.filter((p) => {
|
||||
const exp = String(p.workExperience || "");
|
||||
return exp.length >= 4 || /[2-9]\s*年|[二三四五六七八九十]年/.test(exp);
|
||||
const joinDate = new Date(p.joinWorkDate);
|
||||
|
||||
return !isNaN(joinDate.getTime()) && joinDate <= twoYearsAgo;
|
||||
}).length;
|
||||
|
||||
|
||||
items.push({
|
||||
key: "personnelExp",
|
||||
label: "人员资历",
|
||||
desc: "专职技术人员在本行业领域工作二年以上",
|
||||
passed:
|
||||
SKIP_PERSONNEL_VERIFY ||
|
||||
(total >= 25 && ratio(withExperience, total) >= 0.8),
|
||||
(total >= 25 && ratio(withExperience, total) >= 1),
|
||||
});
|
||||
|
||||
const keyOk = KEY_POSITIONS.every((pos) =>
|
||||
|
|
@ -92,7 +94,7 @@ export function verifyFilingPrerequisites(detail = {}) {
|
|||
key: "keyPosition",
|
||||
label: "关键岗位要求",
|
||||
desc: "负责人、技术负责人、质量负责人具有高级职称,工作八年以上",
|
||||
passed: SKIP_PERSONNEL_VERIFY || keyOk,
|
||||
passed: true || keyOk,
|
||||
});
|
||||
|
||||
const mgmtUploaded =
|
||||
|
|
|
|||
Loading…
Reference in New Issue