260604-企业基本信息模块开发记录.md 20 KB

企业基本信息模块开发记录

日期: 2026-06-04

模块概述

企业基本信息模块(enterprise)是招聘管理系统中的核心基础模块,负责管理招聘企业的基本信息。该模块采用 JeecgBoot 的前后端分离架构,前端基于 Vue3 + Ant Design Vue,后端基于 Spring Boot + MyBatis-Plus。

业务关系

  • EnterpriseInfo(企业基本信息):唯一的主表,记录企业的登记注册信息、经营信息、联系方式、宣传资料等。对外提供企业下拉列表接口供岗位信息等模块关联使用。

模块文件结构

前端(jeecgboot-vue3/src/views/recruitment/enterprise/)

文件 用途
EnterpriseInfoList.vue 企业信息列表页面,提供查询、新增、编辑、详情、删除、批量删除、导入导出等功能
EnterpriseInfo.api.ts 企业信息 API 封装
EnterpriseInfo.data.ts 列表页表格列配置(9列)与高级查询字段定义(26个查询字段)
components/EnterpriseInfoForm.vue 企业信息新增/编辑表单组件,含图片上传与视频上传
components/EnterpriseInfoModal.vue 企业信息弹窗组件,包裹 EnterpriseInfoForm,全屏模式
components/EnterpriseInfoDetailModal.vue 企业信息详情弹窗组件,使用 a-descriptions 只读展示

后端(jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../org/jeecg/modules/zjrs/enterprise/)

层次 文件
DTO dto/EnterpriseInfoDTO.java
VO vo/EnterpriseInfoVO.java
Controller controller/EnterpriseInfoController.java
Entity entity/EnterpriseInfo.java
Service service/IEnterpriseInfoService.java
Service Impl service/impl/EnterpriseInfoServiceImpl.java
Mapper mapper/EnterpriseInfoMapper.java
Mapper XML mapper/xml/EnterpriseInfoMapper.xml

开发记录

功能清单

功能 说明
分页列表查询 支持按单位名称、统一社会信用代码、联系人、所属行业等条件查询,9 列展示
新增 全屏表单,支持 35 个企业字段录入,含 logo 图片上传、宣传图片上传(最多5张)、宣传视频上传
编辑 复用新增表单,预填充已有数据
详情 表单禁用模式查看企业全部信息
删除 / 批量删除 支持单条删除和批量删除,删除前弹窗确认
导入 / 导出 Excel 基于 Jeecg 标准 Excel 导入导出功能
高级查询 26 个查询字段,支持灵活的筛选条件
企业标签 新增/编辑时支持多选企业标签,标签数据来源于企业标签库(EnterpriseTag),自动维护 enterprise_tag_relation 关联表
企业下拉列表 单独接口 /listForSelect,返回 id 和 companyName,供岗位信息等模块关联选择企业
字段必填校验 前端(Ant Design Vue Form 校验)+ 后端(Service 层 validateRequiredFields)双重校验

必填字段(前后端一致)

共 16 个必填字段:单位名称、统一社会信用代码、注册地址行政区划、单位类型、经济类型、所属行业、数据来源、人员规模、联系人、联系方式、接收平台短信推送、面向求职者会员开放、是否允许人社部门代报名、单位简介、办公地址行政区划、办公地址。


功能开发

日期 内容 涉及文件 说明
2026-06-04 企业基本信息模块初始构建 前端 5 个文件 + 后端 6 个文件 完成企业信息管理的基础 CRUD 功能,含 Excel 导入导出与企业下拉列表接口

EnterpriseInfo 实体字段一览

分类 字段 说明
登记信息 companyName 单位名称
unifiedCreditCode 统一社会信用代码
orgCode 组织机构代码
establishDate 成立日期
registeredCapital 注册资本
regAddrDistrict 注册地址行政区划
经营信息 businessStatus 经营状态
companyType 单位类型
economyType 经济类型
industry 所属行业
isListedCompany 是否上市公司
industryField 行业领域
industryAdminDept 行业主管部门
industryTag 产业标签
companyPropertyTag 单位属性标签
provinceOrCity 省属或所属地市
companyAttribute 单位属性
isHeadEnterprise 是否为头部企业
isKeyEnterprise 是否为重点企业
isKeyInstitution 是否为重点事业单位
isStrategicIndustry 是否属于20个战略性产业集群
联系方式 contactPerson 联系人
contactPhone 联系方式
email 电子邮箱
postalCode 邮政编码
website 单位网站
faxNumber 传真号码
officeAddrDistrict 办公地址行政区划
officeAddress 办公地址
配置项 dataSource 数据来源
companyTag 单位标签
staffSize 人员规模
acceptSmsPush 接收平台短信推送
openToJobSeeker 面向求职者会员开放
allowAgentSignup 是否允许人社部门代报名
companyBenefits 单位福利
companyIntro 单位简介
宣传资料 logoImg logo图片
promotionalVideo 宣传视频
promotionalImage 宣传图片
系统字段 id / createBy / createTime / updateBy / updateTime / sysOrgCode 系统内置字段

2026-06-04:企业列表字段调整 & 关联岗位数统计

需求描述: 调整企业信息列表页的表格显示字段,并从岗位信息表(post_info)关联统计当前岗位数。

表格列调整(13列):

新列 对应字段 说明
序号 index 自定义列,customRender 显示行索引
统一信用代码 unifiedCreditCode
单位名称 companyName
单位类型 companyType
所属行业 industry
注册地址 regAddrDistrict 对应注册地址行政区划字段
经营地址 officeAddress 对应办公地址字段
企业规模 staffSize 原"人员规模"改名为"企业规模"
是否重点企业 isKeyEnterprise 新增显示字段
单位标签 companyTag 新增显示字段
经营状态 businessStatus
当前岗位数 postCount 自 post_info 表关联统计
数据来源 dataSource 新增显示字段

删除的列: 注册资本、联系人、联系方式

涉及文件:

文件 操作 原因
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/entity/EnterpriseInfo.java 修改 移除 postCount 字段(已移到 VO)
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/vo/EnterpriseInfoVO.java 新增 企业信息 VO,继承 EnterpriseInfo,包含 postCount 扩展字段
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/mapper/EnterpriseInfoMapper.java 修改 添加 queryPageWithPostCountqueryListWithPostCount 自定义查询方法,返回 EnterpriseInfoVO
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/mapper/xml/EnterpriseInfoMapper.xml 修改 添加 LEFT JOIN 子查询 SQL,通过 enterprise_id 关联 post_info 表统计岗位数
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/service/IEnterpriseInfoService.java 修改 添加 queryPageWithPostCountqueryListWithPostCount 服务接口方法
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/service/impl/EnterpriseInfoServiceImpl.java 修改 实现自定义查询方法,委托给 Mapper 执行
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/controller/EnterpriseInfoController.java 修改 分页列表接口改用 queryPageWithPostCount;导出方法重写以包含岗位数,处理 selections 选中导出和全量导出两种场景
jeecgboot-vue3/src/views/recruitment/enterprise/EnterpriseInfo.data.ts 修改 更新 columns 定义,调整为 12 列新字段配置

2026-06-04:数据字典字段适配(列表显示 + 表单下拉 + 导出翻译)

需求描述: 将企业信息模块中匹配数据字典的字段从普通文本输入改为下拉选择,列表页显示中文标签,导出时自动翻译字典值为中文。

涉及字典及字段映射:

字段名 字典编码 说明
businessStatus BusinessStatus 经营状态
companyType CompanyType 单位类型
dataSource DataSource 数据来源
staffSize CompanySize 人员规模
industryField IndustryField 行业领域

涉及文件:

文件 操作 原因
jeecgboot-vue3/src/views/recruitment/enterprise/EnterpriseInfoList.vue 修改 搜索字段改为单位名称/统一信用代码/注册地址/经营地址/单位类型/所属行业/数据来源;单位类型、数据来源使用 <a-select> 字典下拉;导入 useDict 并添加 getDictOptions/getDictTextbodyCell 插槽添加 4 个字典字段的翻译渲染
jeecgboot-vue3/src/views/recruitment/enterprise/components/EnterpriseInfoForm.vue 修改 导入 useDict,预加载 5 个字典;5 个字典字段从 <a-input> 改为 <a-select> 下拉选择;校验提示从"请输入"改为"请选择"
jeecg-boot/.../enterprise/controller/EnterpriseInfoController.java 修改 添加 EXPORT_DICT_FIELD_MAP 静态常量映射 4 个字段到字典编码;导出流程增加 translateDictFields 调用
jeecg-boot/.../enterprise/service/IEnterpriseInfoService.java 修改 添加 translateDictFields 方法声明
jeecg-boot/.../enterprise/service/impl/EnterpriseInfoServiceImpl.java 修改 注入 IDictionaryItemService;实现 translateDictFields 方法,采用后端内存映射方案批量查询字典并替换字段值

2026-06-05:详情查看改用独立的 a-descriptions 详情弹窗

问题描述: 原详情查看功能复用 EnterpriseInfoModal + EnterpriseInfoForm,打开的是禁用状态的编辑表单,布局与编辑界面相同但字段不可编辑,体验与人员信息详情查看一致。

解决方案: 新建独立的 EnterpriseInfoDetailModal 组件,使用 a-descriptions 描述列表以只读方式展示数据。

实现要点:

  • 基本信息区 — 使用 a-descriptions :column="3" bordered 展示 22 个字段(单位名称、信用代码、经营状态、单位类型、行业领域、数据来源等),字典字段通过 getDictText 转换
  • 单位详细信息区 — 带 <a-divider> 分隔标题,展示 14 个字段(单位标签、人员规模、联系人、办公地址、单位简介全宽等)
  • 单位形象区 — 使用 a-descriptions :column="1" 每行一项单独展示:
    • logo 图片用 a-image 正方形展示(150x150px)
    • 宣传视频用原生 <video> 标签直接播放,带 controls 控件
    • 宣传图片用 a-image 正方形展示(150x150px)
  • 弹窗默认为全屏模式(:fullscreen="true"),底部仅保留「关闭」按钮
  • 内容区域添加 padding: 14px 20px 内边距

涉及文件:

  • jeecgboot-vue3/src/views/recruitment/enterprise/components/EnterpriseInfoDetailModal.vue — 新增企业信息详情弹窗组件
  • jeecgboot-vue3/src/views/recruitment/enterprise/EnterpriseInfoList.vue — 导入新组件,修改 handleDetail 方法调用新弹窗

2026-06-05:当前岗位数可点击查看岗位列表

需求描述: 企业列表页的"当前岗位数"字段改为可点击,点击后打开弹窗,弹窗内包含查询表单和数据表格,展示该企业的全部岗位信息。弹窗中的岗位列表支持点击"详情"查看岗位完整信息。

实现方案:

后端无需修改,现有的 /post/postInfo/list 接口已支持通过 enterpriseId 参数过滤(QueryGenerator 自动构建 WHERE enterprise_id = ? 条件)。

弹窗布局(EnterprisePostListModal):

  • 查询表单 — 5 个字段:职业工种、岗位名称、学历要求(字典下拉)、联系人、数据来源(字典下拉)
  • 数据表格 — 复用 PostInfo.data.ts 的列定义(序号、企业名称、职业工种、岗位名称、薪酬待遇、招聘人数、岗位有效期、职位标签、学历要求、工作经验、联系人、联系电话、数据来源)
  • 操作栏 — 每行提供"详情"按钮,点击打开 PostInfoDetailModal 展示岗位完整信息
  • 弹窗标题动态显示为 {企业名称} - 岗位列表,自动注入企业ID过滤条件

涉及文件:

文件 操作 原因
jeecgboot-vue3/src/views/recruitment/post/components/EnterprisePostListModal.vue 新增 企业岗位列表弹窗组件,含查询表单 + 岗位数据表格 + 详情操作,放置在 post 模块下以便就近引用岗位相关文件
jeecgboot-vue3/src/views/recruitment/enterprise/EnterpriseInfoList.vue 修改 导入 EnterprisePostListModaluseModalbodyCell 中为 postCount 列添加可点击的 <a> 链接;添加 handleViewPostList 方法打开弹窗并传入企业ID和名称

2026-06-05:企业编辑表单和详情表单增加企业标签字段

需求描述: 在企业编辑表单(EnterpriseInfoForm)中增加"企业标签"字段,支持多选,数据来源于企业标签库(EnterpriseTag)。新增/编辑企业时同步保存标签关联关系,详情弹窗展示标签名称。

实现方案:

后端:

  • 新增 EnterpriseInfoDTO(extends EnterpriseInfo),含 List<String> tagIds,用于新增/编辑时接收前端提交的标签ID列表
  • EnterpriseInfoVO(extends EnterpriseInfo)新增 String tagIds(逗号分隔,表单回显用)和 String tagNames(逗号分隔,详情展示用),用于 queryById 返回
  • EnterpriseTagController 新增 /listForSelect 接口,返回所有已启用的标签 {id, tagName} 列表
  • EnterpriseInfoServiceImpl 注入 EnterpriseTagRelationMapperEnterpriseTagMapper,提供 saveWithTags/updateWithTags 方法,在保存企业基本信息后同步维护 enterprise_tag_relation 关联表
  • EnterpriseInfoController/add/edit 接收 EnterpriseInfoDTO/queryById 返回 EnterpriseInfoVO

前端:

  • EnterpriseInfo.api.ts 新增 queryByIdgetEnterpriseTagListForSelect API
  • EnterpriseInfoForm.vue 在"数据来源"前添加"企业标签"多选下拉(a-select mode="multiple"),编辑时自动将后端返回的逗号分隔字符串转为数组回显,提交时排除 tagIds 的数组→字符串转换以保持 List 类型
  • EnterpriseInfoDetailModal.vue 新增"企业标签"展示行
  • EnterpriseInfoList.vuehandleEdit/handleDetail 改为先调用 queryById 获取含标签的完整数据再传给弹窗

涉及文件:

文件 操作 原因
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/dto/EnterpriseInfoDTO.java 新增 DTO 类,extends EnterpriseInfo,含 List<String> tagIds,用于 add/edit 接收前端标签数据
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/vo/EnterpriseInfoVO.java 修改 新增 tagIdstagNames 字段,用于 queryById 返回含标签的完整数据
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/service/IEnterpriseInfoService.java 修改 新增 saveWithTagsupdateWithTagsqueryEnterpriseInfoVOById 方法声明
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/service/impl/EnterpriseInfoServiceImpl.java 修改 注入 EnterpriseTagRelationMapperEnterpriseTagMapper;实现标签关联保存/更新/查询逻辑
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../enterprise/controller/EnterpriseInfoController.java 修改 add/edit 接收 EnterpriseInfoDTO;queryById 返回 EnterpriseInfoVO
jeecg-boot/jeecg-boot-module/jeecg-module-zjrs/.../tag/controller/EnterpriseTagController.java 修改 新增 /listForSelect 接口,返回已启用的标签列表供前端下拉选择
jeecgboot-vue3/src/views/recruitment/enterprise/EnterpriseInfo.api.ts 修改 新增 queryByIdgetEnterpriseTagListForSelect API
jeecgboot-vue3/src/views/recruitment/enterprise/EnterpriseInfoList.vue 修改 handleEdit/handleDetail 改为调用 queryById 获取含标签的完整数据
jeecgboot-vue3/src/views/recruitment/enterprise/components/EnterpriseInfoForm.vue 修改 添加企业标签多选下拉;编辑时字符串→数组回显;提交时排除 tagIds 的数组→字符串转换
jeecgboot-vue3/src/views/recruitment/enterprise/components/EnterpriseInfoDetailModal.vue 修改 新增企业标签展示行