Procházet zdrojové kódy

feat: PC端招聘会CRUD

zhangying před 11 měsíci
rodič
revize
b69de6e19f

+ 18 - 5
doc/待更新脚本

@@ -1,13 +1,26 @@
 -- 2024-5-11招聘会新增字段
-ALTER TABLE pc_jobfairs
+ALTER TABLE `employmentsitedb`.`pc_jobfairs`
 ADD COLUMN `CompanyCount` int NULL COMMENT '企业数量' AFTER `ModifyTime`,
 ADD COLUMN `Longitude` varchar(50) NULL COMMENT '经度' AFTER `CompanyCount`,
 ADD COLUMN `Latitude` varchar(50) NULL COMMENT '纬度' AFTER `Longitude`;
+ALTER TABLE `employmentsitedb`.`pc_jobfairs`
 ADD COLUMN `BoothCount` int NULL COMMENT '摊位数' AFTER `Latitude`;
+ALTER TABLE `employmentsitedb`.`pc_jobfairs`
+ADD COLUMN `RegionCode` varchar(50) NULL COMMENT '所属县区' AFTER `BoothCount`;
+ALTER TABLE `pc_jobfairs`
+ADD COLUMN `JobFariDesc` varchar(255) NULL COMMENT '招聘会描述' AFTER `RegionCode`;
 
 --2024.05.11 站点人员新增启用禁用功能
 INSERT INTO  sys_function_code (`FunctionCode`, `FunctionName`, `ParentFunctionCode`, `OrderNo`) VALUES ('T01010307', '启用禁用', 'T010103', 7);
---角色为市管理、区(县管理员)、驿站机构的所有人员,添加站点人员启用禁用权限
-insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('1ca3a0c1-167b-4f5e-a31b-ce0c3eee4d80','T01010307');
-insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('02184e9a-1ed8-461f-bfee-ae0c1df11e9e','T01010307');
-insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('d6f0d433-7a58-497e-b203-d8309edebaba','T01010307');
+
+-- 2024-5-11 招聘会菜单与权限编码添加
+INSERT INTO `sys_menu` VALUES ('T0109', 6, '招聘会管理', 'NotificationOutlined', NULL, '/jobFairs', 'T01', NULL, 0, 1, 1, 'T0109', 1, NULL);
+INSERT INTO `sys_menu` VALUES ('T010901', 1, '招聘会信息', NULL, 'views/jobFairs/index', '/index', 'T0109', NULL, 0, 0, 1, 'T010901', 1, NULL);
+INSERT INTO `sys_menu` VALUES ('T010902', 2, '招聘会新增', NULL, 'views/jobFairs/add', '/add', 'T0109', NULL, 0, 0, 1, 'T010902', 1, NULL);
+INSERT INTO `sys_menu` VALUES ('T010903', 3, '招聘会修改', NULL, 'views/jobFairs/edit', '/edit', 'T0109', NULL, 0, 0, 1, 'T010903', 1, NULL);
+INSERT INTO `sys_menu` VALUES ('T010905', 4, '招聘会详情', NULL, 'views/jobFairs/detail', '/detail', 'T0109', NULL, 0, 0, 1, 'T010901', 1, NULL);
+INSERT INTO sys_function_code VALUES ('T0109', '招聘会管理', 'T01', 4);
+INSERT INTO sys_function_code VALUES ('T010901', '查看', 'T0109', 1);
+INSERT INTO sys_function_code VALUES ('T010902', '新增', 'T0109', 2);
+INSERT INTO sys_function_code VALUES ('T010903', '编辑', 'T0109', 3);
+INSERT INTO sys_function_code VALUES ('T010904', '删除', 'T0109', 4);

+ 55 - 0
src/main/java/com/hz/employmentsite/controller/jobUserManager/JobFairsController.java

@@ -0,0 +1,55 @@
+package com.hz.employmentsite.controller.jobUserManager;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseResponse;
+import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.services.service.AccountService;
+import com.hz.employmentsite.services.service.jobUserManager.JobFairsService;
+import com.hz.employmentsite.vo.jobUserManager.JobFairsVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@RestController
+@RequestMapping(value = "/api/jobFairs")
+public class JobFairsController {
+    @Autowired
+    private JobFairsService jobFairsService;
+
+    @Autowired
+    private AccountService accountService;
+
+    @ResponseBody
+    @GetMapping("/getList")
+    public BaseResponse getList(@RequestParam Integer pageIndex, @RequestParam Integer pageSize,
+                                @RequestParam(required = false) String jobFairsName, @RequestParam(required = false) String regionCode,
+                                @RequestParam(required = false) Date startDate, @RequestParam(required = false) Date endDate,
+                                @RequestParam(required = false) Date nowDate) {
+        PageInfo<JobFairsVo> list = jobFairsService.getList(pageIndex, pageSize, jobFairsName, regionCode, startDate, endDate, nowDate);
+        return RespGenerstor.success(list);
+    }
+
+    @GetMapping("getById")
+    public BaseResponse<JobFairsVo> get(@RequestParam(required = false) String jobFairID) {
+        JobFairsVo data = jobFairsService.getJobFairById(jobFairID);
+        if (data == null) {
+            data = new JobFairsVo();
+            data.setJobfairsID(UUID.randomUUID().toString());
+        }
+        return RespGenerstor.success(data);
+    }
+
+    @PostMapping("save")
+    public BaseResponse<Integer> save(@RequestBody JobFairsVo data) {
+        return RespGenerstor.success(jobFairsService.save(data, accountService.getLoginUserID()));
+    }
+
+    @ResponseBody
+    @PostMapping("/delete")
+    public BaseResponse<Integer> delete(@RequestBody List<String> idList) {
+        return RespGenerstor.success(jobFairsService.deleteByIds(idList));
+    }
+}

+ 16 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/JobFairsCQuery.java

@@ -0,0 +1,16 @@
+package com.hz.employmentsite.mapper.cquery;
+
+import com.hz.employmentsite.vo.jobUserManager.JobFairsVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+public interface JobFairsCQuery {
+    List<JobFairsVo> getList(@Param("jobFairsIDList") String jobFairsIDList,
+                             @Param("jobFairsName") String jobFairsName,
+                             @Param("regionCode") String regionCode,
+                             @Param("startDate") Date startDate,
+                             @Param("endDate") Date endDate,
+                             @Param("nowDate") Date nowDate);
+}

+ 60 - 0
src/main/java/com/hz/employmentsite/model/PcJobfairs.java

@@ -64,6 +64,18 @@ public class PcJobfairs {
 
     private Date modifyTime;
 
+    private Integer companyCount;
+
+    private String longitude;
+
+    private String latitude;
+
+    private Integer boothCount;
+
+    private String regionCode;
+
+    private String jobFariDesc;
+
     public String getJobfairsID() {
         return jobfairsID;
     }
@@ -303,4 +315,52 @@ public class PcJobfairs {
     public void setModifyTime(Date modifyTime) {
         this.modifyTime = modifyTime;
     }
+
+    public Integer getCompanyCount() {
+        return companyCount;
+    }
+
+    public void setCompanyCount(Integer companyCount) {
+        this.companyCount = companyCount;
+    }
+
+    public String getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(String longitude) {
+        this.longitude = longitude == null ? null : longitude.trim();
+    }
+
+    public String getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(String latitude) {
+        this.latitude = latitude == null ? null : latitude.trim();
+    }
+
+    public Integer getBoothCount() {
+        return boothCount;
+    }
+
+    public void setBoothCount(Integer boothCount) {
+        this.boothCount = boothCount;
+    }
+
+    public String getRegionCode() {
+        return regionCode;
+    }
+
+    public void setRegionCode(String regionCode) {
+        this.regionCode = regionCode == null ? null : regionCode.trim();
+    }
+
+    public String getJobFariDesc() {
+        return jobFariDesc;
+    }
+
+    public void setJobFariDesc(String jobFariDesc) {
+        this.jobFariDesc = jobFariDesc == null ? null : jobFariDesc.trim();
+    }
 }

+ 400 - 0
src/main/java/com/hz/employmentsite/model/PcJobfairsExample.java

@@ -2095,6 +2095,406 @@ public class PcJobfairsExample {
             addCriterion("ModifyTime not between", value1, value2, "modifyTime");
             return (Criteria) this;
         }
+
+        public Criteria andCompanyCountIsNull() {
+            addCriterion("CompanyCount is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountIsNotNull() {
+            addCriterion("CompanyCount is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountEqualTo(Integer value) {
+            addCriterion("CompanyCount =", value, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountNotEqualTo(Integer value) {
+            addCriterion("CompanyCount <>", value, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountGreaterThan(Integer value) {
+            addCriterion("CompanyCount >", value, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountGreaterThanOrEqualTo(Integer value) {
+            addCriterion("CompanyCount >=", value, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountLessThan(Integer value) {
+            addCriterion("CompanyCount <", value, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountLessThanOrEqualTo(Integer value) {
+            addCriterion("CompanyCount <=", value, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountIn(List<Integer> values) {
+            addCriterion("CompanyCount in", values, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountNotIn(List<Integer> values) {
+            addCriterion("CompanyCount not in", values, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountBetween(Integer value1, Integer value2) {
+            addCriterion("CompanyCount between", value1, value2, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompanyCountNotBetween(Integer value1, Integer value2) {
+            addCriterion("CompanyCount not between", value1, value2, "companyCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeIsNull() {
+            addCriterion("Longitude is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeIsNotNull() {
+            addCriterion("Longitude is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeEqualTo(String value) {
+            addCriterion("Longitude =", value, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeNotEqualTo(String value) {
+            addCriterion("Longitude <>", value, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeGreaterThan(String value) {
+            addCriterion("Longitude >", value, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeGreaterThanOrEqualTo(String value) {
+            addCriterion("Longitude >=", value, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeLessThan(String value) {
+            addCriterion("Longitude <", value, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeLessThanOrEqualTo(String value) {
+            addCriterion("Longitude <=", value, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeLike(String value) {
+            addCriterion("Longitude like", value, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeNotLike(String value) {
+            addCriterion("Longitude not like", value, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeIn(List<String> values) {
+            addCriterion("Longitude in", values, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeNotIn(List<String> values) {
+            addCriterion("Longitude not in", values, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeBetween(String value1, String value2) {
+            addCriterion("Longitude between", value1, value2, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLongitudeNotBetween(String value1, String value2) {
+            addCriterion("Longitude not between", value1, value2, "longitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeIsNull() {
+            addCriterion("Latitude is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeIsNotNull() {
+            addCriterion("Latitude is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeEqualTo(String value) {
+            addCriterion("Latitude =", value, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeNotEqualTo(String value) {
+            addCriterion("Latitude <>", value, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeGreaterThan(String value) {
+            addCriterion("Latitude >", value, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeGreaterThanOrEqualTo(String value) {
+            addCriterion("Latitude >=", value, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeLessThan(String value) {
+            addCriterion("Latitude <", value, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeLessThanOrEqualTo(String value) {
+            addCriterion("Latitude <=", value, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeLike(String value) {
+            addCriterion("Latitude like", value, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeNotLike(String value) {
+            addCriterion("Latitude not like", value, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeIn(List<String> values) {
+            addCriterion("Latitude in", values, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeNotIn(List<String> values) {
+            addCriterion("Latitude not in", values, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeBetween(String value1, String value2) {
+            addCriterion("Latitude between", value1, value2, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andLatitudeNotBetween(String value1, String value2) {
+            addCriterion("Latitude not between", value1, value2, "latitude");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountIsNull() {
+            addCriterion("BoothCount is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountIsNotNull() {
+            addCriterion("BoothCount is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountEqualTo(Integer value) {
+            addCriterion("BoothCount =", value, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountNotEqualTo(Integer value) {
+            addCriterion("BoothCount <>", value, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountGreaterThan(Integer value) {
+            addCriterion("BoothCount >", value, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountGreaterThanOrEqualTo(Integer value) {
+            addCriterion("BoothCount >=", value, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountLessThan(Integer value) {
+            addCriterion("BoothCount <", value, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountLessThanOrEqualTo(Integer value) {
+            addCriterion("BoothCount <=", value, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountIn(List<Integer> values) {
+            addCriterion("BoothCount in", values, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountNotIn(List<Integer> values) {
+            addCriterion("BoothCount not in", values, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountBetween(Integer value1, Integer value2) {
+            addCriterion("BoothCount between", value1, value2, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoothCountNotBetween(Integer value1, Integer value2) {
+            addCriterion("BoothCount not between", value1, value2, "boothCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeIsNull() {
+            addCriterion("RegionCode is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeIsNotNull() {
+            addCriterion("RegionCode is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeEqualTo(String value) {
+            addCriterion("RegionCode =", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeNotEqualTo(String value) {
+            addCriterion("RegionCode <>", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeGreaterThan(String value) {
+            addCriterion("RegionCode >", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeGreaterThanOrEqualTo(String value) {
+            addCriterion("RegionCode >=", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeLessThan(String value) {
+            addCriterion("RegionCode <", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeLessThanOrEqualTo(String value) {
+            addCriterion("RegionCode <=", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeLike(String value) {
+            addCriterion("RegionCode like", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeNotLike(String value) {
+            addCriterion("RegionCode not like", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeIn(List<String> values) {
+            addCriterion("RegionCode in", values, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeNotIn(List<String> values) {
+            addCriterion("RegionCode not in", values, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeBetween(String value1, String value2) {
+            addCriterion("RegionCode between", value1, value2, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeNotBetween(String value1, String value2) {
+            addCriterion("RegionCode not between", value1, value2, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescIsNull() {
+            addCriterion("JobFariDesc is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescIsNotNull() {
+            addCriterion("JobFariDesc is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescEqualTo(String value) {
+            addCriterion("JobFariDesc =", value, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescNotEqualTo(String value) {
+            addCriterion("JobFariDesc <>", value, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescGreaterThan(String value) {
+            addCriterion("JobFariDesc >", value, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescGreaterThanOrEqualTo(String value) {
+            addCriterion("JobFariDesc >=", value, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescLessThan(String value) {
+            addCriterion("JobFariDesc <", value, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescLessThanOrEqualTo(String value) {
+            addCriterion("JobFariDesc <=", value, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescLike(String value) {
+            addCriterion("JobFariDesc like", value, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescNotLike(String value) {
+            addCriterion("JobFariDesc not like", value, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescIn(List<String> values) {
+            addCriterion("JobFariDesc in", values, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescNotIn(List<String> values) {
+            addCriterion("JobFariDesc not in", values, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescBetween(String value1, String value2) {
+            addCriterion("JobFariDesc between", value1, value2, "jobFariDesc");
+            return (Criteria) this;
+        }
+
+        public Criteria andJobFariDescNotBetween(String value1, String value2) {
+            addCriterion("JobFariDesc not between", value1, value2, "jobFariDesc");
+            return (Criteria) this;
+        }
     }
 
     public static class Criteria extends GeneratedCriteria {

+ 101 - 0
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobFairsServiceImpl.java

@@ -0,0 +1,101 @@
+package com.hz.employmentsite.services.impl.jobUserManager;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.mapper.PcJobfairsMapper;
+import com.hz.employmentsite.mapper.cquery.JobFairsCQuery;
+import com.hz.employmentsite.model.PcJobfairs;
+import com.hz.employmentsite.model.PcJobfairsExample;
+import com.hz.employmentsite.services.service.jobUserManager.JobFairsService;
+import com.hz.employmentsite.util.StringUtils;
+import com.hz.employmentsite.vo.jobUserManager.JobFairsVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service("JobFairsService")
+public class JobFairsServiceImpl implements JobFairsService {
+
+    @Autowired
+    private JobFairsCQuery jobFairsCQuery;
+
+    @Autowired
+    private PcJobfairsMapper pcJobfairsMapper;
+
+    @Autowired
+    private StringUtils stringUtils;
+
+    @Override
+    public PageInfo<JobFairsVo> getList(Integer pageIndex, Integer pageSize, String jobFairsName,
+                                        String regionCode, Date startDate, Date endDate,
+                                        Date nowDate) {
+        PageHelper.startPage(pageIndex, pageSize);
+        List<JobFairsVo> list = jobFairsCQuery.getList(null, jobFairsName, regionCode, startDate, endDate, nowDate);
+        PageInfo<JobFairsVo> result = new PageInfo(list);
+        return result;
+    }
+
+    @Override
+    public Integer save(JobFairsVo jobFairsVo, String loginUserID) {
+        Integer result = 0;
+        JobFairsVo selData = getJobFairById(jobFairsVo.getJobfairsID());
+        PcJobfairs jobfairs = selData == null ? new PcJobfairs() : pcJobfairsMapper.selectByPrimaryKey(selData.getJobfairsID());
+
+        // 填充数据
+        jobfairs.setJobfairsID(jobFairsVo.getJobfairsID());
+        jobfairs.setName(jobFairsVo.getName());
+        jobfairs.setZbUnit(jobFairsVo.getZbUnit());
+        jobfairs.setCbUnit(jobFairsVo.getCbUnit());
+        jobfairs.setAddress(jobFairsVo.getAddress());
+        jobfairs.setCompanyCount(jobFairsVo.getCompanyCount());
+        jobfairs.setStartTime(jobFairsVo.getStartTime());
+        jobfairs.setEndTime(jobFairsVo.getEndTime());
+        jobfairs.setUserName(jobFairsVo.getUserName());
+        jobfairs.setUserMrobile(jobFairsVo.getUserMrobile());
+        jobfairs.setRegionCode(jobFairsVo.getRegionCode());
+        jobfairs.setBoothCount(jobFairsVo.getBoothCount());
+        jobfairs.setDisplayCount(jobFairsVo.getDisplayCount());
+        jobfairs.setIsMake(jobFairsVo.getIsMake());
+        jobfairs.setLongitude(jobFairsVo.getLongitude());
+        jobfairs.setLatitude(jobFairsVo.getLatitude());
+        jobfairs.setCarLine(jobFairsVo.getCarLine());
+        jobfairs.setJobFariDesc(jobFairsVo.getJobFariDesc());
+
+        if (selData == null) {
+            // 添加
+            jobfairs.setCreateUserID(loginUserID);
+            jobfairs.setCreateTime(new Date());
+            pcJobfairsMapper.insert(jobfairs);
+        } else {
+            // 修改
+            jobfairs.setModifyUserID(loginUserID);
+            jobfairs.setModifyTime(new Date());
+            pcJobfairsMapper.updateByPrimaryKey(jobfairs);
+        }
+        return null;
+    }
+
+    @Override
+    public JobFairsVo getJobFairById(String jobFairID) {
+        if (stringUtils.IsNullOrEmpty(jobFairID)) {
+            return null;
+        }
+        List<String> ids = new ArrayList<>();
+        ids.add(jobFairID);
+        JobFairsVo jobFairsVo = jobFairsCQuery.getList(stringUtils.ListToInSql(ids), null, null, null, null, null)
+                .stream()
+                .findFirst()
+                .orElse(null);
+        return jobFairsVo;
+    }
+
+    @Override
+    public Integer deleteByIds(List<String> ids) {
+        PcJobfairsExample example = new PcJobfairsExample();
+        example.or().andJobfairsIDIn(ids);
+        return pcJobfairsMapper.deleteByExample(example);
+    }
+}

+ 19 - 0
src/main/java/com/hz/employmentsite/services/service/jobUserManager/JobFairsService.java

@@ -0,0 +1,19 @@
+package com.hz.employmentsite.services.service.jobUserManager;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.vo.jobUserManager.JobFairsVo;
+
+import java.util.Date;
+import java.util.List;
+
+public interface JobFairsService {
+    PageInfo<JobFairsVo> getList(Integer pageIndex, Integer pageSize, String jobFairsName,
+                                 String regionCode, Date startDate, Date endDate,
+                                 Date nowDate);
+
+    JobFairsVo getJobFairById(String jobFairID);
+
+    Integer save(JobFairsVo jobFairsVo, String loginUserID);
+
+    Integer deleteByIds(List<String> ids);
+}

+ 9 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/JobFairsVo.java

@@ -0,0 +1,9 @@
+package com.hz.employmentsite.vo.jobUserManager;
+
+import com.hz.employmentsite.model.PcJobfairs;
+import lombok.Data;
+
+@Data
+public class JobFairsVo extends PcJobfairs {
+    public String regionName;
+}

+ 213 - 119
src/main/resources/mapping/PcJobfairsMapper.xml

@@ -2,36 +2,42 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.hz.employmentsite.mapper.PcJobfairsMapper">
   <resultMap id="BaseResultMap" type="com.hz.employmentsite.model.PcJobfairs">
-    <id column="JobfairsID" jdbcType="VARCHAR" property="jobfairsID" />
-    <result column="Name" jdbcType="VARCHAR" property="name" />
-    <result column="Area" jdbcType="VARCHAR" property="area" />
-    <result column="Address" jdbcType="VARCHAR" property="address" />
-    <result column="CarLine" jdbcType="VARCHAR" property="carLine" />
-    <result column="UserName" jdbcType="VARCHAR" property="userName" />
-    <result column="UserMrobile" jdbcType="VARCHAR" property="userMrobile" />
-    <result column="Rent" jdbcType="DECIMAL" property="rent" />
-    <result column="StartTime" jdbcType="TIMESTAMP" property="startTime" />
-    <result column="EndTime" jdbcType="TIMESTAMP" property="endTime" />
-    <result column="Desc" jdbcType="VARCHAR" property="desc" />
-    <result column="PlaceImg" jdbcType="VARCHAR" property="placeImg" />
-    <result column="LineImg" jdbcType="VARCHAR" property="lineImg" />
-    <result column="PlaceNature" jdbcType="VARCHAR" property="placeNature" />
-    <result column="DisplayCount" jdbcType="INTEGER" property="displayCount" />
-    <result column="DisplayDesc" jdbcType="VARCHAR" property="displayDesc" />
-    <result column="DisplayArea" jdbcType="VARCHAR" property="displayArea" />
-    <result column="PlanImg" jdbcType="VARCHAR" property="planImg" />
-    <result column="PlaceColumn" jdbcType="INTEGER" property="placeColumn" />
-    <result column="PlaceRow" jdbcType="INTEGER" property="placeRow" />
-    <result column="ZbUnit" jdbcType="VARCHAR" property="zbUnit" />
-    <result column="XbUnit" jdbcType="VARCHAR" property="xbUnit" />
-    <result column="CbUnit" jdbcType="VARCHAR" property="cbUnit" />
-    <result column="IsMake" jdbcType="BIT" property="isMake" />
-    <result column="IsSendEmail" jdbcType="BIT" property="isSendEmail" />
-    <result column="IsOffsite" jdbcType="BIT" property="isOffsite" />
-    <result column="CreateUserID" jdbcType="VARCHAR" property="createUserID" />
-    <result column="CreateTime" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="ModifyUserID" jdbcType="VARCHAR" property="modifyUserID" />
-    <result column="ModifyTime" jdbcType="TIMESTAMP" property="modifyTime" />
+    <id column="JobfairsID" jdbcType="VARCHAR" property="jobfairsID"/>
+    <result column="Name" jdbcType="VARCHAR" property="name"/>
+    <result column="Area" jdbcType="VARCHAR" property="area"/>
+    <result column="Address" jdbcType="VARCHAR" property="address"/>
+    <result column="CarLine" jdbcType="VARCHAR" property="carLine"/>
+    <result column="UserName" jdbcType="VARCHAR" property="userName"/>
+    <result column="UserMrobile" jdbcType="VARCHAR" property="userMrobile"/>
+    <result column="Rent" jdbcType="DECIMAL" property="rent"/>
+    <result column="StartTime" jdbcType="TIMESTAMP" property="startTime"/>
+    <result column="EndTime" jdbcType="TIMESTAMP" property="endTime"/>
+    <result column="Desc" jdbcType="VARCHAR" property="desc"/>
+    <result column="PlaceImg" jdbcType="VARCHAR" property="placeImg"/>
+    <result column="LineImg" jdbcType="VARCHAR" property="lineImg"/>
+    <result column="PlaceNature" jdbcType="VARCHAR" property="placeNature"/>
+    <result column="DisplayCount" jdbcType="INTEGER" property="displayCount"/>
+    <result column="DisplayDesc" jdbcType="VARCHAR" property="displayDesc"/>
+    <result column="DisplayArea" jdbcType="VARCHAR" property="displayArea"/>
+    <result column="PlanImg" jdbcType="VARCHAR" property="planImg"/>
+    <result column="PlaceColumn" jdbcType="INTEGER" property="placeColumn"/>
+    <result column="PlaceRow" jdbcType="INTEGER" property="placeRow"/>
+    <result column="ZbUnit" jdbcType="VARCHAR" property="zbUnit"/>
+    <result column="XbUnit" jdbcType="VARCHAR" property="xbUnit"/>
+    <result column="CbUnit" jdbcType="VARCHAR" property="cbUnit"/>
+    <result column="IsMake" jdbcType="BIT" property="isMake"/>
+    <result column="IsSendEmail" jdbcType="BIT" property="isSendEmail"/>
+    <result column="IsOffsite" jdbcType="BIT" property="isOffsite"/>
+    <result column="CreateUserID" jdbcType="VARCHAR" property="createUserID"/>
+    <result column="CreateTime" jdbcType="TIMESTAMP" property="createTime"/>
+    <result column="ModifyUserID" jdbcType="VARCHAR" property="modifyUserID"/>
+    <result column="ModifyTime" jdbcType="TIMESTAMP" property="modifyTime"/>
+    <result column="CompanyCount" jdbcType="INTEGER" property="companyCount"/>
+    <result column="Longitude" jdbcType="VARCHAR" property="longitude"/>
+    <result column="Latitude" jdbcType="VARCHAR" property="latitude"/>
+    <result column="BoothCount" jdbcType="INTEGER" property="boothCount"/>
+    <result column="RegionCode" jdbcType="VARCHAR" property="regionCode"/>
+    <result column="JobFariDesc" jdbcType="VARCHAR" property="jobFariDesc"/>
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -92,10 +98,12 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    JobfairsID, Name, Area, Address, CarLine, UserName, UserMrobile, Rent, StartTime, 
-    EndTime, Desc, PlaceImg, LineImg, PlaceNature, DisplayCount, DisplayDesc, DisplayArea, 
+    JobfairsID
+    , `Name`, Area, Address, CarLine, UserName, UserMrobile, Rent, StartTime,
+    EndTime, `Desc`, PlaceImg, LineImg, PlaceNature, DisplayCount, DisplayDesc, DisplayArea,
     PlanImg, PlaceColumn, PlaceRow, ZbUnit, XbUnit, CbUnit, IsMake, IsSendEmail, IsOffsite, 
-    CreateUserID, CreateTime, ModifyUserID, ModifyTime
+    CreateUserID, CreateTime, ModifyUserID, ModifyTime, CompanyCount, Longitude, Latitude, 
+    BoothCount, RegionCode, JobFariDesc
   </sql>
   <select id="selectByExample" parameterType="com.hz.employmentsite.model.PcJobfairsExample" resultMap="BaseResultMap">
     select
@@ -128,28 +136,30 @@
     </if>
   </delete>
   <insert id="insert" parameterType="com.hz.employmentsite.model.PcJobfairs">
-    insert into pc_jobfairs (JobfairsID, Name, Area, 
-      Address, CarLine, UserName, 
-      UserMrobile, Rent, StartTime, 
-      EndTime, Desc, PlaceImg, 
-      LineImg, PlaceNature, DisplayCount, 
-      DisplayDesc, DisplayArea, PlanImg, 
-      PlaceColumn, PlaceRow, ZbUnit, 
-      XbUnit, CbUnit, IsMake, 
-      IsSendEmail, IsOffsite, CreateUserID, 
-      CreateTime, ModifyUserID, ModifyTime
-      )
-    values (#{jobfairsID,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{area,jdbcType=VARCHAR}, 
-      #{address,jdbcType=VARCHAR}, #{carLine,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, 
-      #{userMrobile,jdbcType=VARCHAR}, #{rent,jdbcType=DECIMAL}, #{startTime,jdbcType=TIMESTAMP}, 
-      #{endTime,jdbcType=TIMESTAMP}, #{desc,jdbcType=VARCHAR}, #{placeImg,jdbcType=VARCHAR}, 
-      #{lineImg,jdbcType=VARCHAR}, #{placeNature,jdbcType=VARCHAR}, #{displayCount,jdbcType=INTEGER}, 
-      #{displayDesc,jdbcType=VARCHAR}, #{displayArea,jdbcType=VARCHAR}, #{planImg,jdbcType=VARCHAR}, 
-      #{placeColumn,jdbcType=INTEGER}, #{placeRow,jdbcType=INTEGER}, #{zbUnit,jdbcType=VARCHAR}, 
-      #{xbUnit,jdbcType=VARCHAR}, #{cbUnit,jdbcType=VARCHAR}, #{isMake,jdbcType=BIT}, 
-      #{isSendEmail,jdbcType=BIT}, #{isOffsite,jdbcType=BIT}, #{createUserID,jdbcType=VARCHAR}, 
-      #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP}
-      )
+    insert into pc_jobfairs (JobfairsID, `Name`, Area,
+                             Address, CarLine, UserName,
+                             UserMrobile, Rent, StartTime,
+                             EndTime, `Desc`, PlaceImg,
+                             LineImg, PlaceNature, DisplayCount,
+                             DisplayDesc, DisplayArea, PlanImg,
+                             PlaceColumn, PlaceRow, ZbUnit,
+                             XbUnit, CbUnit, IsMake,
+                             IsSendEmail, IsOffsite, CreateUserID,
+                             CreateTime, ModifyUserID, ModifyTime,
+                             CompanyCount, Longitude, Latitude,
+                             BoothCount, RegionCode, JobFariDesc)
+    values (#{jobfairsID,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{area,jdbcType=VARCHAR},
+            #{address,jdbcType=VARCHAR}, #{carLine,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR},
+            #{userMrobile,jdbcType=VARCHAR}, #{rent,jdbcType=DECIMAL}, #{startTime,jdbcType=TIMESTAMP},
+            #{endTime,jdbcType=TIMESTAMP}, #{desc,jdbcType=VARCHAR}, #{placeImg,jdbcType=VARCHAR},
+            #{lineImg,jdbcType=VARCHAR}, #{placeNature,jdbcType=VARCHAR}, #{displayCount,jdbcType=INTEGER},
+            #{displayDesc,jdbcType=VARCHAR}, #{displayArea,jdbcType=VARCHAR}, #{planImg,jdbcType=VARCHAR},
+            #{placeColumn,jdbcType=INTEGER}, #{placeRow,jdbcType=INTEGER}, #{zbUnit,jdbcType=VARCHAR},
+            #{xbUnit,jdbcType=VARCHAR}, #{cbUnit,jdbcType=VARCHAR}, #{isMake,jdbcType=BIT},
+            #{isSendEmail,jdbcType=BIT}, #{isOffsite,jdbcType=BIT}, #{createUserID,jdbcType=VARCHAR},
+            #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP},
+            #{companyCount,jdbcType=INTEGER}, #{longitude,jdbcType=VARCHAR}, #{latitude,jdbcType=VARCHAR},
+            #{boothCount,jdbcType=INTEGER}, #{regionCode,jdbcType=VARCHAR}, #{jobFariDesc,jdbcType=VARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcJobfairs">
     insert into pc_jobfairs
@@ -158,7 +168,7 @@
         JobfairsID,
       </if>
       <if test="name != null">
-        Name,
+        `Name`,
       </if>
       <if test="area != null">
         Area,
@@ -185,7 +195,7 @@
         EndTime,
       </if>
       <if test="desc != null">
-        Desc,
+        `Desc`,
       </if>
       <if test="placeImg != null">
         PlaceImg,
@@ -244,6 +254,24 @@
       <if test="modifyTime != null">
         ModifyTime,
       </if>
+      <if test="companyCount != null">
+        CompanyCount,
+      </if>
+      <if test="longitude != null">
+        Longitude,
+      </if>
+      <if test="latitude != null">
+        Latitude,
+      </if>
+      <if test="boothCount != null">
+        BoothCount,
+      </if>
+      <if test="regionCode != null">
+        RegionCode,
+      </if>
+      <if test="jobFariDesc != null">
+        JobFariDesc,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="jobfairsID != null">
@@ -336,6 +364,24 @@
       <if test="modifyTime != null">
         #{modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="companyCount != null">
+        #{companyCount,jdbcType=INTEGER},
+      </if>
+      <if test="longitude != null">
+        #{longitude,jdbcType=VARCHAR},
+      </if>
+      <if test="latitude != null">
+        #{latitude,jdbcType=VARCHAR},
+      </if>
+      <if test="boothCount != null">
+        #{boothCount,jdbcType=INTEGER},
+      </if>
+      <if test="regionCode != null">
+        #{regionCode,jdbcType=VARCHAR},
+      </if>
+      <if test="jobFariDesc != null">
+        #{jobFariDesc,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.hz.employmentsite.model.PcJobfairsExample" resultType="java.lang.Long">
@@ -351,7 +397,7 @@
         JobfairsID = #{row.jobfairsID,jdbcType=VARCHAR},
       </if>
       <if test="row.name != null">
-        Name = #{row.name,jdbcType=VARCHAR},
+        `Name` = #{row.name,jdbcType=VARCHAR},
       </if>
       <if test="row.area != null">
         Area = #{row.area,jdbcType=VARCHAR},
@@ -378,7 +424,7 @@
         EndTime = #{row.endTime,jdbcType=TIMESTAMP},
       </if>
       <if test="row.desc != null">
-        Desc = #{row.desc,jdbcType=VARCHAR},
+        `Desc` = #{row.desc,jdbcType=VARCHAR},
       </if>
       <if test="row.placeImg != null">
         PlaceImg = #{row.placeImg,jdbcType=VARCHAR},
@@ -437,6 +483,24 @@
       <if test="row.modifyTime != null">
         ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="row.companyCount != null">
+        CompanyCount = #{row.companyCount,jdbcType=INTEGER},
+      </if>
+      <if test="row.longitude != null">
+        Longitude = #{row.longitude,jdbcType=VARCHAR},
+      </if>
+      <if test="row.latitude != null">
+        Latitude = #{row.latitude,jdbcType=VARCHAR},
+      </if>
+      <if test="row.boothCount != null">
+        BoothCount = #{row.boothCount,jdbcType=INTEGER},
+      </if>
+      <if test="row.regionCode != null">
+        RegionCode = #{row.regionCode,jdbcType=VARCHAR},
+      </if>
+      <if test="row.jobFariDesc != null">
+        JobFariDesc = #{row.jobFariDesc,jdbcType=VARCHAR},
+      </if>
     </set>
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -445,35 +509,41 @@
   <update id="updateByExample" parameterType="map">
     update pc_jobfairs
     set JobfairsID = #{row.jobfairsID,jdbcType=VARCHAR},
-      Name = #{row.name,jdbcType=VARCHAR},
-      Area = #{row.area,jdbcType=VARCHAR},
-      Address = #{row.address,jdbcType=VARCHAR},
-      CarLine = #{row.carLine,jdbcType=VARCHAR},
-      UserName = #{row.userName,jdbcType=VARCHAR},
-      UserMrobile = #{row.userMrobile,jdbcType=VARCHAR},
-      Rent = #{row.rent,jdbcType=DECIMAL},
-      StartTime = #{row.startTime,jdbcType=TIMESTAMP},
-      EndTime = #{row.endTime,jdbcType=TIMESTAMP},
-      Desc = #{row.desc,jdbcType=VARCHAR},
-      PlaceImg = #{row.placeImg,jdbcType=VARCHAR},
-      LineImg = #{row.lineImg,jdbcType=VARCHAR},
-      PlaceNature = #{row.placeNature,jdbcType=VARCHAR},
-      DisplayCount = #{row.displayCount,jdbcType=INTEGER},
-      DisplayDesc = #{row.displayDesc,jdbcType=VARCHAR},
-      DisplayArea = #{row.displayArea,jdbcType=VARCHAR},
-      PlanImg = #{row.planImg,jdbcType=VARCHAR},
-      PlaceColumn = #{row.placeColumn,jdbcType=INTEGER},
-      PlaceRow = #{row.placeRow,jdbcType=INTEGER},
-      ZbUnit = #{row.zbUnit,jdbcType=VARCHAR},
-      XbUnit = #{row.xbUnit,jdbcType=VARCHAR},
-      CbUnit = #{row.cbUnit,jdbcType=VARCHAR},
-      IsMake = #{row.isMake,jdbcType=BIT},
-      IsSendEmail = #{row.isSendEmail,jdbcType=BIT},
-      IsOffsite = #{row.isOffsite,jdbcType=BIT},
-      CreateUserID = #{row.createUserID,jdbcType=VARCHAR},
-      CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
-      ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP}
+    `Name` = #{row.name,jdbcType=VARCHAR},
+    Area = #{row.area,jdbcType=VARCHAR},
+    Address = #{row.address,jdbcType=VARCHAR},
+    CarLine = #{row.carLine,jdbcType=VARCHAR},
+    UserName = #{row.userName,jdbcType=VARCHAR},
+    UserMrobile = #{row.userMrobile,jdbcType=VARCHAR},
+    Rent = #{row.rent,jdbcType=DECIMAL},
+    StartTime = #{row.startTime,jdbcType=TIMESTAMP},
+    EndTime = #{row.endTime,jdbcType=TIMESTAMP},
+    `Desc` = #{row.desc,jdbcType=VARCHAR},
+    PlaceImg = #{row.placeImg,jdbcType=VARCHAR},
+    LineImg = #{row.lineImg,jdbcType=VARCHAR},
+    PlaceNature = #{row.placeNature,jdbcType=VARCHAR},
+    DisplayCount = #{row.displayCount,jdbcType=INTEGER},
+    DisplayDesc = #{row.displayDesc,jdbcType=VARCHAR},
+    DisplayArea = #{row.displayArea,jdbcType=VARCHAR},
+    PlanImg = #{row.planImg,jdbcType=VARCHAR},
+    PlaceColumn = #{row.placeColumn,jdbcType=INTEGER},
+    PlaceRow = #{row.placeRow,jdbcType=INTEGER},
+    ZbUnit = #{row.zbUnit,jdbcType=VARCHAR},
+    XbUnit = #{row.xbUnit,jdbcType=VARCHAR},
+    CbUnit = #{row.cbUnit,jdbcType=VARCHAR},
+    IsMake = #{row.isMake,jdbcType=BIT},
+    IsSendEmail = #{row.isSendEmail,jdbcType=BIT},
+    IsOffsite = #{row.isOffsite,jdbcType=BIT},
+    CreateUserID = #{row.createUserID,jdbcType=VARCHAR},
+    CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
+    ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
+    ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
+    CompanyCount = #{row.companyCount,jdbcType=INTEGER},
+    Longitude = #{row.longitude,jdbcType=VARCHAR},
+    Latitude = #{row.latitude,jdbcType=VARCHAR},
+    BoothCount = #{row.boothCount,jdbcType=INTEGER},
+    RegionCode = #{row.regionCode,jdbcType=VARCHAR},
+    JobFariDesc = #{row.jobFariDesc,jdbcType=VARCHAR}
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -482,7 +552,7 @@
     update pc_jobfairs
     <set>
       <if test="name != null">
-        Name = #{name,jdbcType=VARCHAR},
+        `Name` = #{name,jdbcType=VARCHAR},
       </if>
       <if test="area != null">
         Area = #{area,jdbcType=VARCHAR},
@@ -509,7 +579,7 @@
         EndTime = #{endTime,jdbcType=TIMESTAMP},
       </if>
       <if test="desc != null">
-        Desc = #{desc,jdbcType=VARCHAR},
+        `Desc` = #{desc,jdbcType=VARCHAR},
       </if>
       <if test="placeImg != null">
         PlaceImg = #{placeImg,jdbcType=VARCHAR},
@@ -568,40 +638,64 @@
       <if test="modifyTime != null">
         ModifyTime = #{modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="companyCount != null">
+        CompanyCount = #{companyCount,jdbcType=INTEGER},
+      </if>
+      <if test="longitude != null">
+        Longitude = #{longitude,jdbcType=VARCHAR},
+      </if>
+      <if test="latitude != null">
+        Latitude = #{latitude,jdbcType=VARCHAR},
+      </if>
+      <if test="boothCount != null">
+        BoothCount = #{boothCount,jdbcType=INTEGER},
+      </if>
+      <if test="regionCode != null">
+        RegionCode = #{regionCode,jdbcType=VARCHAR},
+      </if>
+      <if test="jobFariDesc != null">
+        JobFariDesc = #{jobFariDesc,jdbcType=VARCHAR},
+      </if>
     </set>
     where JobfairsID = #{jobfairsID,jdbcType=VARCHAR}
   </update>
   <update id="updateByPrimaryKey" parameterType="com.hz.employmentsite.model.PcJobfairs">
     update pc_jobfairs
-    set Name = #{name,jdbcType=VARCHAR},
-      Area = #{area,jdbcType=VARCHAR},
-      Address = #{address,jdbcType=VARCHAR},
-      CarLine = #{carLine,jdbcType=VARCHAR},
-      UserName = #{userName,jdbcType=VARCHAR},
-      UserMrobile = #{userMrobile,jdbcType=VARCHAR},
-      Rent = #{rent,jdbcType=DECIMAL},
-      StartTime = #{startTime,jdbcType=TIMESTAMP},
-      EndTime = #{endTime,jdbcType=TIMESTAMP},
-      Desc = #{desc,jdbcType=VARCHAR},
-      PlaceImg = #{placeImg,jdbcType=VARCHAR},
-      LineImg = #{lineImg,jdbcType=VARCHAR},
-      PlaceNature = #{placeNature,jdbcType=VARCHAR},
-      DisplayCount = #{displayCount,jdbcType=INTEGER},
-      DisplayDesc = #{displayDesc,jdbcType=VARCHAR},
-      DisplayArea = #{displayArea,jdbcType=VARCHAR},
-      PlanImg = #{planImg,jdbcType=VARCHAR},
-      PlaceColumn = #{placeColumn,jdbcType=INTEGER},
-      PlaceRow = #{placeRow,jdbcType=INTEGER},
-      ZbUnit = #{zbUnit,jdbcType=VARCHAR},
-      XbUnit = #{xbUnit,jdbcType=VARCHAR},
-      CbUnit = #{cbUnit,jdbcType=VARCHAR},
-      IsMake = #{isMake,jdbcType=BIT},
-      IsSendEmail = #{isSendEmail,jdbcType=BIT},
-      IsOffsite = #{isOffsite,jdbcType=BIT},
-      CreateUserID = #{createUserID,jdbcType=VARCHAR},
-      CreateTime = #{createTime,jdbcType=TIMESTAMP},
-      ModifyUserID = #{modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{modifyTime,jdbcType=TIMESTAMP}
+    set `Name`       = #{name,jdbcType=VARCHAR},
+        Area         = #{area,jdbcType=VARCHAR},
+        Address      = #{address,jdbcType=VARCHAR},
+        CarLine      = #{carLine,jdbcType=VARCHAR},
+        UserName     = #{userName,jdbcType=VARCHAR},
+        UserMrobile  = #{userMrobile,jdbcType=VARCHAR},
+        Rent         = #{rent,jdbcType=DECIMAL},
+        StartTime    = #{startTime,jdbcType=TIMESTAMP},
+        EndTime      = #{endTime,jdbcType=TIMESTAMP},
+        `Desc`       = #{desc,jdbcType=VARCHAR},
+        PlaceImg     = #{placeImg,jdbcType=VARCHAR},
+        LineImg      = #{lineImg,jdbcType=VARCHAR},
+        PlaceNature  = #{placeNature,jdbcType=VARCHAR},
+        DisplayCount = #{displayCount,jdbcType=INTEGER},
+        DisplayDesc  = #{displayDesc,jdbcType=VARCHAR},
+        DisplayArea  = #{displayArea,jdbcType=VARCHAR},
+        PlanImg      = #{planImg,jdbcType=VARCHAR},
+        PlaceColumn  = #{placeColumn,jdbcType=INTEGER},
+        PlaceRow     = #{placeRow,jdbcType=INTEGER},
+        ZbUnit       = #{zbUnit,jdbcType=VARCHAR},
+        XbUnit       = #{xbUnit,jdbcType=VARCHAR},
+        CbUnit       = #{cbUnit,jdbcType=VARCHAR},
+        IsMake       = #{isMake,jdbcType=BIT},
+        IsSendEmail  = #{isSendEmail,jdbcType=BIT},
+        IsOffsite    = #{isOffsite,jdbcType=BIT},
+        CreateUserID = #{createUserID,jdbcType=VARCHAR},
+        CreateTime   = #{createTime,jdbcType=TIMESTAMP},
+        ModifyUserID = #{modifyUserID,jdbcType=VARCHAR},
+        ModifyTime   = #{modifyTime,jdbcType=TIMESTAMP},
+        CompanyCount = #{companyCount,jdbcType=INTEGER},
+        Longitude    = #{longitude,jdbcType=VARCHAR},
+        Latitude     = #{latitude,jdbcType=VARCHAR},
+        BoothCount   = #{boothCount,jdbcType=INTEGER},
+        RegionCode   = #{regionCode,jdbcType=VARCHAR},
+        JobFariDesc  = #{jobFariDesc,jdbcType=VARCHAR}
     where JobfairsID = #{jobfairsID,jdbcType=VARCHAR}
   </update>
 </mapper>

+ 29 - 0
src/main/resources/mapping/cquery/JobFairsCQuery.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.hz.employmentsite.mapper.cquery.JobFairsCQuery">
+    <select id="getList" resultType="com.hz.employmentsite.vo.jobUserManager.JobFairsVo">
+        SELECT jobFairs.*, region.Name as regionName
+        FROM `pc_jobfairs` jobFairs
+        LEFT JOIN area_code region on jobFairs.RegionCode = region.code
+        where 1 = 1
+        <if test="jobFairsIDList != '' and jobFairsIDList != null">
+            and jobFairs.JobfairsID in (${jobFairsIDList})
+        </if>
+        <if test="jobFairsName!='' and jobFairsName!=null">
+            and jobFairs.Name like Concat('%',#{jobFairsName},'%')
+        </if>
+        <if test="regionCode!='' and regionCode!=null">
+            and jobFairs.code = #{regionCode}
+        </if>
+        <if test="startDate!=null">
+            and jobFairs.StartTime  <![CDATA[ >= ]]> #{startDate}
+        </if>
+        <if test="endDate!=null">
+            and jobFairs.EndTime   <![CDATA[ <= ]]>  #{endDate}
+        </if>
+        <if test="nowDate!=null">
+            and jobFairs.EndTime   <![CDATA[ <= ]]>  #{nowDate}
+        </if>
+        order by jobFairs.EndTime desc
+    </select>
+</mapper>

+ 52 - 0
vue/src/api/jobUserManager/jobFair/index.ts

@@ -0,0 +1,52 @@
+import {request} from '@/utils/request';
+
+export function getJobFairList(params: any) {
+  return request(
+    {
+      url: 'jobFairs/getList',
+      method: 'get',
+      params: params,
+    },
+    {isNew: true},
+  );
+}
+
+export function getJobFairById(jobFairID: any) {
+  return request(
+    {
+      url: 'jobFairs/getById',
+      method: 'get',
+      params: {jobFairID},
+    },
+    {isNew: true},
+  );
+}
+
+export function saveJobFari(data: any) {
+  return request<object>({
+    url: 'jobFairs/save',
+    method: 'post',
+    data: data
+  }, {
+    isNew: true,
+    successMsg: '提交成功!',
+    errorMsg: '提交失败!'
+  })
+}
+
+export function deleteJobFair(data: any) {
+  return request<object>(
+    {
+      url: 'jobFairs/delete',
+      method: 'post',
+      data: data,
+    },
+    {
+      isNew: true,
+      successMsg: '删除成功!',
+      errorMsg: '删除失败!'
+    },
+  );
+}
+
+

+ 5 - 1
vue/src/router/asyncModules/jobUserManager.ts

@@ -9,5 +9,9 @@ export default {
   'views/jobusermgr/jobhunt/detail': () => import('@/views/jobUserManager/jobhunt/detail.vue'),
   'views/jobusermgr/jobhunt/recommend': () => import('@/views/jobUserManager/jobhunt/recommend.vue'),
   'views/jobusermgr/recommend/index': () => import('@/views/jobUserManager/recommend/index.vue'),
-  'views/jobusermgr/recommendMgt/index': () => import('@/views/jobUserManager/recommendMgt/index.vue')
+  'views/jobusermgr/recommendMgt/index': () => import('@/views/jobUserManager/recommendMgt/index.vue'),
+  'views/jobFairs/index': () => import('@/views/jobUserManager/jobFair/index.vue'),
+  'views/jobFairs/add': () => import('@/views/jobUserManager/jobFair/edit.vue'),
+  'views/jobFairs/edit': () => import('@/views/jobUserManager/jobFair/edit.vue'),
+  'views/jobFairs/detail': () => import('@/views/jobUserManager/jobFair/detail.vue'),
 };

+ 81 - 0
vue/src/views/jobUserManager/jobFair/detail.vue

@@ -0,0 +1,81 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">招聘会基本信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="招聘会名称">{{ jobFair.name }}</a-descriptions-item>
+      <a-descriptions-item label="主办单位">{{ jobFair.zbUnit }}</a-descriptions-item>
+      <a-descriptions-item label="承办单位">{{ jobFair.cbUnit }}</a-descriptions-item>
+      <a-descriptions-item label="招聘会地址">{{ jobFair.address }}</a-descriptions-item>
+      <a-descriptions-item label="企业数量">{{ jobFair.companyCount }}</a-descriptions-item>
+      <a-descriptions-item label="招聘会时间">
+        {{ dayjs(jobFair.startTime).format('YYYY-MM-DD') }}
+        至
+        {{ dayjs(jobFair.endTime).format('YYYY-MM-DD') }}
+      </a-descriptions-item>
+      <a-descriptions-item label="联系人">{{ jobFair.userName }}</a-descriptions-item>
+      <a-descriptions-item label="联系电话">{{ jobFair.userMrobile }}</a-descriptions-item>
+      <a-descriptions-item label="所属县区">{{ jobFair.regionName }}</a-descriptions-item>
+      <a-descriptions-item label="摊位数">{{ jobFair.boothCount }}</a-descriptions-item>
+      <a-descriptions-item label="展位数量">{{ jobFair.displayCount }}</a-descriptions-item>
+      <a-descriptions-item label="是否制作海报">{{ jobFair.isMake ? '是' : '否' }}</a-descriptions-item>
+      <a-descriptions-item label="招聘会经度">{{ jobFair.longitude }}</a-descriptions-item>
+      <a-descriptions-item label="招聘会纬度">{{ jobFair.latitude }}</a-descriptions-item>
+      <a-descriptions-item label="乘车路线">{{ jobFair.carLine }}</a-descriptions-item>
+      <a-descriptions-item label="招聘会描述">{{ jobFair.jobFariDesc }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">其他信息</a-divider>
+    <b-upload-file :fileRefId="jobFair.jobfairsID" :readonly="true"></b-upload-file>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {onMounted, reactive} from "vue";
+import {getJobFairById} from "@/api/jobUserManager/jobFair";
+import dayjs from "dayjs";
+import BUploadFile from "@/components/file/uploadFile.vue";
+
+const jobFair = reactive({
+  jobfairsID: "",
+  name: "",
+  zbUnit: "",
+  cbUnit: "",
+  address: "",
+  companyCount: "",
+  startTime: "",
+  endTime: "",
+  userName: "",
+  userMrobile: "",
+  regionName: "",
+  boothCount: "",
+  displayCount: "",
+  isMake: "",
+  longitude: "",
+  latitude: "",
+  carLine: "",
+  jobFariDesc: ""
+})
+
+// 加载数据
+async function loadData(jobFairId: string) {
+  await getJobFairById(jobFairId).then((result) => {
+    Object.keys(jobFair).forEach((key) => {
+      jobFair[key] = result[key];
+    })
+  })
+}
+
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id)
+})
+</script>
+
+<script lang="ts">
+export default {
+  name: 'JobFairsDetail'
+}
+</script>
+
+<style scoped>
+
+</style>

+ 243 - 0
vue/src/views/jobUserManager/jobFair/edit.vue

@@ -0,0 +1,243 @@
+<template>
+  <div class="card-edit" :visible="bodyLoading">
+    <a-form :model="formData" autocomplete="off" @finish="onFinish">
+      <a-divider orientation="left">基础信息</a-divider>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="招聘会名称" name="name" :label-col="{span:8}"
+                       :rules="[{ required: true, message: '请输入招聘会名称!' }]">
+            <a-input v-model:value="formData.name" placeholder="请输入招聘会名称"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="8">
+          <a-form-item label="主办单位" name="zbUnit" :label-col="{span:7}"
+                       :rules="[{ required: true,message:'请输入主办单位!' }]">
+            <a-input v-model:value="formData.zbUnit" placeholder="请输入主办单位"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="9">
+          <a-form-item label="承办单位" name="cbUnit"
+                       :label-col="{span:7}" :rules="[{ required: true,message:'请输入主办单位!' }]">
+            <a-input v-model:value="formData.cbUnit" placeholder="请输入主办单位"/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="招聘会地址" name="address" :label-col="{span:8}"
+                       :rules="[{ required: true, message: '请输入招聘会地址!' }]">
+            <a-input v-model:value="formData.address" placeholder="请输入招聘会地址"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="8">
+          <a-form-item label="企业数量" name="companyCount" :label-col="{span:7}"
+                       :rules="[{ required: true,message:'请输入企业数量!' }]">
+            <a-input-number :min="1" v-model:value="formData.companyCount" placeholder="请输入企业数量"
+                            style="width: 100%" :controls="false"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="9">
+          <a-form-item label="招聘会时间" name="jobFairDate" style="overflow: hidden;line-height: 35px;height: 35px;"
+                       :label-col="{span:7}">
+            <a-range-picker v-model:value="jobFairDate" :placeholder="['开始日期', '结束日期']" format="YYYY-MM-DD"
+                            @change="onJobFairDateChange"/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="联系人" name="userName" :label-col="{span:8}"
+                       :rules="[{ required: true, message: '请输入联系人!' }]">
+            <a-input v-model:value="formData.userName" placeholder="请输入联系人"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="8">
+          <a-form-item label="联系电话" name="userMrobile" :label-col="{span:7}"
+                       :rules="[{ required: true,message:'请输入联系电话!' }]">
+            <a-input v-model:value="formData.userMrobile" placeholder="请输入联系电话"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="9">
+          <a-form-item label="所属县区" name="regionCode" style="overflow: hidden;line-height: 35px;height: 35px;"
+                       :label-col="{span:7}" :rules="[{ required: true,message:'请选择所属县区!' }]">
+            <a-select
+              ref="select"
+              v-model:value="formData.regionCode"
+              :options="regionList"
+              :field-names="{ label: 'name', value: 'code' }"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="摊位数" name="boothCount" :label-col="{span:8}"
+                       :rules="[{ required: true, message: '请输入摊位数!' }]">
+            <a-input-number :min="1" v-model:value="formData.boothCount" placeholder="请输入企业数量"
+                            style="width: 100%" :controls="false"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="8">
+          <a-form-item label="展位总数" name="displayCount" :label-col="{span:7}"
+                       :rules="[{ required: true,message:'请输入展位总数!' }]">
+            <a-input-number :min="1" v-model:value="formData.displayCount" placeholder="请输入企业数量"
+                            style="width: 100%" :controls="false"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="9">
+          <a-form-item label="是否制作海报" name="isMake"
+                       :label-col="{span:7}" :rules="[{ required: true,message:'请选择确定是否制作海报!' }]">
+            <a-select
+              ref="select"
+              v-model:value="formData.isMake"
+            >
+              <a-select-option :value="true">是</a-select-option>
+              <a-select-option :value="false">否</a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row type="flex">
+        <a-col :span="7">
+          <a-form-item label="招聘会经度" name="longitude" :label-col="{span:8}">
+            <a-input v-model:value="formData.longitude" placeholder="请输入经度"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="8">
+          <a-form-item label="招聘会纬度" name="latitude" :label-col="{span:7}">
+            <a-input v-model:value="formData.longitude" placeholder="请输入纬度"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="9">
+          <a-form-item label="乘车路线" name="carLine" style="overflow: hidden;line-height: 35px;height: 35px;"
+                       :label-col="{span:7}">
+            <a-input v-model:value="formData.carLine" placeholder="请输入乘车路线"/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row>
+        <a-col class="table-bottom-a1" span="24">
+          <a-form-item :label-col="{span:24}" name="jobFariDesc" label="招聘会描述">
+            <a-textarea v-model:value="formData.jobFariDesc" placeholder="请输入招聘会描述" :rows="4"/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-divider orientation="left">其他</a-divider>
+      <b-upload-file :fileRefId="formData.jobfairsID" :readonly="false" :multiple="true"
+                     :setFileList="setFileList" :accept="'.pdf,.png,.jpg,.jpeg,.xls,.xlsx,.doc,.docx,.txt,.ppt,.pptx'"
+                     :disabled="opCategory==3"></b-upload-file>
+      <a-form-item class="buttom-btns">
+        <a-button @click="onClose">取消</a-button>
+        <a-button type="primary" html-type="submit">提交</a-button>
+      </a-form-item>
+    </a-form>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {onMounted, reactive, ref} from "vue";
+import {getJobFairById, saveJobFari} from "@/api/jobUserManager/jobFair";
+import {message, type SelectProps} from "ant-design-vue";
+import {getRegionCodeList} from "@/api/system/area/index";
+import {useTabsViewStore} from "@/store/modules/tabsView";
+import {useRouter} from "vue-router";
+import dayjs from "dayjs";
+import BUploadFile from "@/components/file/uploadFile.vue";
+
+const tabsViewStore = useTabsViewStore();
+const router = useRouter();
+const fullPath = router.currentRoute.value.fullPath;
+
+const formData = reactive({
+  jobfairsID: "",
+  name: "",
+  zbUnit: "",
+  cbUnit: "",
+  address: "",
+  companyCount: "",
+  startTime: "",
+  endTime: "",
+  userName: "",
+  userMrobile: "",
+  regionCode: "",
+  boothCount: "",
+  isMake: "",
+  longitude: "",
+  latitude: "",
+  carLine: "",
+  jobFariDesc: ""
+})
+const bodyLoading = ref(false);
+const jobFairDate = ref([]);
+const regionList = ref<SelectProps['options']>();
+const fileList = ref([]);
+
+// 加载数据
+async function loadData(jobFairId: string) {
+  bodyLoading.value = true;
+  await getRegionList()
+  await getJobFairById(jobFairId).then((result) => {
+    Object.keys(result).forEach((key) => {
+      formData[key] = result[key];
+    })
+    jobFairDate.value = [];
+    if (result.startTime) {
+      jobFairDate.value.push(dayjs(result.startTime, 'YYYY-MM-DD'));
+    }
+    if (result.endTime) {
+      jobFairDate.value.push(dayjs(result.endTime, 'YYYY-MM-DD'));
+    }
+  }).finally(() => {
+    bodyLoading.value = false;
+  })
+}
+
+// 提交
+function onFinish() {
+  if (!formData.startTime || !formData.endTime) {
+    message.error("请选择完整的开始与结束时间!");
+    return;
+  }
+
+  saveJobFari(formData).then(() => {
+    onClose()
+  })
+}
+
+// 取消
+function onClose(reload: any) {
+  tabsViewStore.closeCurrentTabByPath('/jobFairs/add');
+  tabsViewStore.closeCurrentTabByPath('/jobFairs/edit');
+  tabsViewStore.openTab('/jobFairs/index', {reload: reload});
+}
+
+const getRegionList = async function () {
+  regionList.value = await getRegionCodeList();
+}
+
+const onJobFairDateChange = (dateString) => {
+  jobFairDate.value = dateString;
+  formData.startTime = dateString ? dateString[0].format("YYYY-MM-DD") : '';
+  formData.endTime = dateString ? dateString[1].format("YYYY-MM-DD") : '';
+}
+
+const setFileList = (files) => {
+  fileList.value = files;
+};
+
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id)
+})
+</script>
+
+<script lang="ts">
+export default {
+  name: 'JobFairsEdit'
+}
+</script>
+
+<style scoped>
+
+</style>

+ 259 - 0
vue/src/views/jobUserManager/jobFair/index.vue

@@ -0,0 +1,259 @@
+<template>
+  <div class="card-search">
+    <a-form
+      ref="formRef"
+      name="advanced_search"
+      class="ant-advanced-search-form"
+      :model="searchParams"
+    >
+      <a-row :gutter="24">
+        <a-col :span="6">
+          <a-form-item label="招聘会名称" :label-col="{ span: 8 }" name="name">
+            <a-input v-model:value="searchParams.jobFairsName" placeholder="" :allow-clear="true"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="所属区县" :label-col="{ span: 8 }" name="siteID">
+            <a-select
+              ref="select"
+              v-model:value="searchParams.regionCode"
+              :options="regionList"
+              :field-names="{ label: 'siteName', value: 'siteID' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="招聘会时间" :label-col="{ span: 8 }" name="createDate">
+            <a-range-picker v-model:value="fairDate" :placeholder="['开始日期', '结束日期']" format="YYYY-MM-DD"
+                            @change="onFairDateChange"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6" style="text-align: left">
+          <a-button type="primary" html-type="submit" @click="onSearch">查询</a-button>
+          <a-button
+            style="margin: 0 8px"
+            @click="
+              () => {
+                formRef.resetFields();
+                loadData();
+              }
+            ">重置
+          </a-button>
+          <a style="font-size: 12px" @click="expand = !expand">
+            <template v-if="expand">
+              <UpOutlined/>
+            </template>
+            <template v-else>
+              <DownOutlined/>
+            </template>
+            {{ expand ? '收缩' : '展开' }}
+          </a>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24" v-show="expand">
+        <a-col :span="6">
+        </a-col>
+        <a-col :span="6">
+        </a-col>
+        <a-col :span="6">
+        </a-col>
+      </a-row>
+      <a-row class="edit-operation">
+        <a-col :span="24" style="text-align: right">
+          <a-button type="primary" html-type="submit" @click='onAdd' functioncode="T01030102">新增</a-button>
+        </a-col>
+      </a-row>
+    </a-form>
+    <div class="search-result-list">
+      <a-table
+        :columns="tableColumns"
+        :data-source="jobFairList"
+        :scroll="{ x: '100%', y: 500 }"
+        :pagination="tablePagination"
+        :loading="tableLoading"
+        :row-selection="{ selectedRowKeys: tableState.selectedRowKeys, onChange: onSelectChange }"
+        :row-key="(record) => record.jobfairsID"
+        bordered
+        @change="handleTableChange">
+        <template #bodyCell="{ column, text, record }">
+          <template v-if="column.key === 'startTime'">
+            <div>
+              {{ dayjs(record.startTime).format('YYYY-MM-DD') }}
+              至
+              {{ dayjs(record.endTime).format('YYYY-MM-DD') }}
+            </div>
+          </template>
+          <template v-if="column.key === 'operation'">
+            <div class="table-operation">
+              <a-button type="link" size="small" functioncode="T01030106" @click='onDetail(record)'>查看</a-button>
+              <a-button type="link" size="small" functioncode="T01030103" @click='onEdit(record)'>编辑</a-button>
+              <a-button type="link" size="small" functioncode="T01030104" @click="onDel(record)">删除</a-button>
+            </div>
+          </template>
+        </template>
+      </a-table>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from "@ant-design/icons-vue";
+import {computed, createVNode, onMounted, reactive, ref} from "vue";
+import {type FormInstance, message, Modal, type TableColumnsType, type TableProps} from "ant-design-vue";
+import {get} from "@/api/common";
+import {deleteJobFair, getJobFairList} from "@/api/jobUserManager/jobFair";
+import {getPaginationTotalTitle} from "@/utils/common";
+import {useTabsViewStore} from "@/store/modules/tabsView";
+import dayjs from "dayjs";
+
+const tabsViewStore = useTabsViewStore();
+
+const searchParams = reactive({
+  pageIndex: 1,
+  pageSize: 20,
+  jobFairsName: "",
+  regionCode: "",
+  startDate: "",
+  endDate: "",
+});
+const expand = ref(false);
+const regionList = ref<Array<any>>([]);
+const formRef = ref<FormInstance>();
+const jobFairList = ref<Array<any>>([]);
+const tableState = reactive({
+  total: 0,
+  selectedRowKeys: [],
+})
+const tableLoading = ref(false)
+const fairDate = ref([])
+const tableColumns: TableColumnsType = [
+  {
+    title: '序号',
+    align: "center",
+    key: 'LogId',
+    customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`,
+    width: 100
+  },
+  {title: '招聘会名称', dataIndex: 'name', key: 'name', align: "center"},
+  {title: '招聘会地址', dataIndex: 'address', key: 'address', align: "center"},
+  {title: '联系人', dataIndex: 'userName', key: 'userName', align: "center"},
+  {title: '联系电话', dataIndex: 'userMrobile', key: 'userMrobile', align: "center"},
+  {title: '招聘会时间', dataIndex: 'startTime', key: 'startTime', align: "center"},
+  {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center"},
+]
+const tablePagination = computed(() => ({
+  total: tableState.total,
+  current: searchParams.pageIndex,
+  pageSize: searchParams.pageSize,
+  showSizeChanger: true,
+  showTotal: total => getPaginationTotalTitle(total)
+}));
+
+// 加载数据
+async function loadData() {
+  tableLoading.value = true;
+  await getJobFairList(searchParams).then(result => {
+    jobFairList.value = result.list;
+    tableState.total = result.total;
+  }).finally(() => {
+    tableLoading.value = false;
+  });
+}
+
+// 加载区县
+function getRegionList() {
+  get('system/area/getCityList', {}).then(data => {
+    regionList.value = data;
+  });
+}
+
+// 新增
+function onAdd() {
+  tabsViewStore.addTabByPath('/jobFairs/add', null);
+}
+
+// 修改
+function onEdit(record) {
+  tabsViewStore.addTabByPath('/jobFairs/edit', {id: record.jobfairsID});
+}
+
+// 查看详情
+function onDetail(record) {
+  tabsViewStore.addTabByPath('/jobFairs/detail', {id: record.jobfairsID});
+}
+
+// 删除
+function onDel(record) {
+  if (record) {
+    tableState.selectedRowKeys.push(record.jobfairsID as never)
+  }
+
+  if (tableState.selectedRowKeys.length <= 0) {
+    message.warning('请选择需要删除的数据!');
+    return false;
+  }
+  Modal.confirm({
+    title: '确认删除?',
+    icon: createVNode(ExclamationCircleOutlined),
+    content: '',
+    okText: '确认删除',
+    okType: 'danger',
+    okButtonProps: {},
+    cancelText: '取消',
+    onOk() {
+      deleteJobFair(tableState.selectedRowKeys).then(() => {
+        loadData();
+      });
+    },
+    onCancel() {
+    },
+  })
+}
+
+// 查询
+function onSearch() {
+  loadData()
+}
+
+// 表格数据选中
+function onSelectChange(selectedRowKeys: any) {
+  tableState.selectedRowKeys = selectedRowKeys;
+}
+
+// 分页事件
+const handleTableChange: TableProps['onChange'] = (pag: {
+  pageSize: number;
+  current: number;
+}) => {
+  searchParams.pageIndex = pag.current;
+  searchParams.pageSize = pag.pageSize;
+  loadData();
+};
+
+// 登记时间组件调整
+function onFairDateChange(dateString) {
+  fairDate.value = dateString;
+  searchParams.startDate = dateString ? dateString[0].format("YYYY-MM-DD") : '';
+  searchParams.endDate = dateString ? dateString[1].format("YYYY-MM-DD") : '';
+  loadData();
+}
+
+// 页面初始化
+onMounted(() => {
+  getRegionList()
+  loadData();
+})
+</script>
+
+<script lang="ts">
+export default {
+  name: 'JobFairsList'
+}
+</script>
+
+<style scoped>
+
+</style>