From 9605d25f7adeed77648b23d6ea537d1f6f9ee9af Mon Sep 17 00:00:00 2001 From: zhc077 <565291854@qq.com> Date: Fri, 18 Oct 2024 11:55:09 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=94=B3=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=B7=BB=E5=8A=A0=2010.18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DepartExtController.java | 162 ++++++++ .../demo/departext/entity/DepartExt.java | 133 ++++++ .../departext/mapper/DepartExtMapper.java | 17 + .../departext/mapper/xml/DepartExtMapper.xml | 5 + .../departext/service/IDepartExtService.java | 14 + .../service/impl/DepartExtServiceImpl.java | 19 + .../project/controller/ProjectController.java | 10 + .../ProjectManagmentController.java | 191 +++++++++ .../demo/project/dto/ProjectShenBaoDto.java | 382 ++++++++++++++++++ .../demo/project/service/IProjectService.java | 2 + .../service/impl/ProjectServiceImpl.java | 5 + .../userext/controller/UserExtController.java | 162 ++++++++ .../modules/demo/userext/entity/UserExt.java | 112 +++++ .../demo/userext/mapper/UserExtMapper.java | 17 + .../demo/userext/mapper/xml/UserExtMapper.xml | 5 + .../demo/userext/service/IUserExtService.java | 14 + .../service/impl/UserExtServiceImpl.java | 19 + .../src/views/departExt/DepartExt.api.ts | 64 +++ .../src/views/departExt/DepartExt.data.ts | 184 +++++++++ .../src/views/departExt/DepartExtList.vue | 190 +++++++++ .../V20241018_1__menu_insert_DepartExt.sql | 26 ++ .../departExt/components/DepartExtForm.vue | 70 ++++ .../departExt/components/DepartExtModal.vue | 76 ++++ .../kejigongguan/data.api.ts | 77 ++++ .../projectApplication/kejigongguan/data.ts | 166 +++++--- .../kejigongguan/projectApplicationList.vue | 25 ++ .../src/views/userExt/UserExt.api.ts | 64 +++ .../src/views/userExt/UserExt.data.ts | 131 ++++++ .../src/views/userExt/UserExtList.vue | 190 +++++++++ .../V20241018_1__menu_insert_UserExt.sql | 26 ++ .../views/userExt/components/UserExtForm.vue | 70 ++++ .../views/userExt/components/UserExtModal.vue | 76 ++++ 32 files changed, 2639 insertions(+), 65 deletions(-) create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/controller/DepartExtController.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/entity/DepartExt.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/mapper/DepartExtMapper.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/mapper/xml/DepartExtMapper.xml create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/service/IDepartExtService.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/service/impl/DepartExtServiceImpl.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectManagmentController.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/ProjectShenBaoDto.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/controller/UserExtController.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/entity/UserExt.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/mapper/UserExtMapper.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/mapper/xml/UserExtMapper.xml create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/service/IUserExtService.java create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/service/impl/UserExtServiceImpl.java create mode 100644 jeecgboot-vue3/src/views/departExt/DepartExt.api.ts create mode 100644 jeecgboot-vue3/src/views/departExt/DepartExt.data.ts create mode 100644 jeecgboot-vue3/src/views/departExt/DepartExtList.vue create mode 100644 jeecgboot-vue3/src/views/departExt/V20241018_1__menu_insert_DepartExt.sql create mode 100644 jeecgboot-vue3/src/views/departExt/components/DepartExtForm.vue create mode 100644 jeecgboot-vue3/src/views/departExt/components/DepartExtModal.vue create mode 100644 jeecgboot-vue3/src/views/projectApplication/kejigongguan/data.api.ts create mode 100644 jeecgboot-vue3/src/views/userExt/UserExt.api.ts create mode 100644 jeecgboot-vue3/src/views/userExt/UserExt.data.ts create mode 100644 jeecgboot-vue3/src/views/userExt/UserExtList.vue create mode 100644 jeecgboot-vue3/src/views/userExt/V20241018_1__menu_insert_UserExt.sql create mode 100644 jeecgboot-vue3/src/views/userExt/components/UserExtForm.vue create mode 100644 jeecgboot-vue3/src/views/userExt/components/UserExtModal.vue diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/controller/DepartExtController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/controller/DepartExtController.java new file mode 100644 index 0000000..5638ab5 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/controller/DepartExtController.java @@ -0,0 +1,162 @@ +package org.jeecg.modules.demo.departext.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.demo.departext.entity.DepartExt; +import org.jeecg.modules.demo.departext.service.IDepartExtService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + +/** + * @Description: 部门扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +@Api(tags = "部门扩展表") +@RestController +@RequestMapping("/departext/departExt") +@Slf4j +public class DepartExtController extends JeecgController { + @Autowired + private IDepartExtService departExtService; + + /** + * 分页列表查询 + * + * @param departExt + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "部门扩展表-分页列表查询") + @ApiOperation(value = "部门扩展表-分页列表查询", notes = "部门扩展表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(DepartExt departExt, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(departExt, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = departExtService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param departExt + * @return + */ + @AutoLog(value = "部门扩展表-添加") + @ApiOperation(value = "部门扩展表-添加", notes = "部门扩展表-添加") +// @RequiresPermissions("departext:depart_ext:add") + @PostMapping(value = "/add") + public Result add(@RequestBody DepartExt departExt) { + departExtService.save(departExt); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param departExt + * @return + */ + @AutoLog(value = "部门扩展表-编辑") + @ApiOperation(value = "部门扩展表-编辑", notes = "部门扩展表-编辑") +// @RequiresPermissions("departext:depart_ext:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody DepartExt departExt) { + departExtService.updateById(departExt); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "部门扩展表-通过id删除") + @ApiOperation(value = "部门扩展表-通过id删除", notes = "部门扩展表-通过id删除") +// @RequiresPermissions("departext:depart_ext:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + departExtService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "部门扩展表-批量删除") + @ApiOperation(value = "部门扩展表-批量删除", notes = "部门扩展表-批量删除") + @RequiresPermissions("departext:depart_ext:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.departExtService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "部门扩展表-通过id查询") + @ApiOperation(value = "部门扩展表-通过id查询", notes = "部门扩展表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + DepartExt departExt = departExtService.getById(id); + if (departExt == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(departExt); + } + + /** + * 导出excel + * + * @param request + * @param departExt + */ +// @RequiresPermissions("departext:depart_ext:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, DepartExt departExt) { + return super.exportXls(request, departExt, DepartExt.class, "部门扩展表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("departext:depart_ext:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, DepartExt.class); + } + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/entity/DepartExt.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/entity/DepartExt.java new file mode 100644 index 0000000..c9e0c30 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/entity/DepartExt.java @@ -0,0 +1,133 @@ +package org.jeecg.modules.demo.departext.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 部门扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +@Data +@TableName("depart_ext") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "depart_ext对象", description = "部门扩展表") +public class DepartExt implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private Date updateTime; + /** + * 部门表id + */ + @Excel(name = "部门表id", width = 15) + @ApiModelProperty(value = "部门表id") + private String departId; + /** + * 单位性质 + */ + @Excel(name = "单位性质", width = 15, dicCode = "depart_category") + @Dict(dicCode = "depart_category") + @ApiModelProperty(value = "单位性质") + private String category; + /** + * 企业登记注册类型 + */ + @Excel(name = "企业登记注册类型", width = 15) + @ApiModelProperty(value = "企业登记注册类型") + private String type; + /** + * 开户银行 + */ + @Excel(name = "开户银行", width = 15) + @ApiModelProperty(value = "开户银行") + private String bankName; + /** + * 账号 + */ + @Excel(name = "账号", width = 15) + @ApiModelProperty(value = "账号") + private String bankNo; + /** + * 职工总数 + */ + @Excel(name = "职工总数", width = 15) + @ApiModelProperty(value = "职工总数") + private String employeeNum; + /** + * 上年度研发经费 + */ + @Excel(name = "上年度研发经费", width = 15) + @ApiModelProperty(value = "上年度研发经费") + private BigDecimal lastYearFee; + /** + * 注册时间 + */ + @Excel(name = "注册时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "注册时间") + private Date registerDate; + /** + * 联系人 + */ + @Excel(name = "联系人", width = 15) + @ApiModelProperty(value = "联系人") + private String linkmanName; + /** + * 手机 + */ + @Excel(name = "手机", width = 15) + @ApiModelProperty(value = "手机") + private String linkmanPhone; + /** + * 电子邮箱 + */ + @Excel(name = "电子邮箱", width = 15) + @ApiModelProperty(value = "电子邮箱") + private String linkmanEmail; +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/mapper/DepartExtMapper.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/mapper/DepartExtMapper.java new file mode 100644 index 0000000..ac66658 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/mapper/DepartExtMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.departext.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.departext.entity.DepartExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 部门扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +public interface DepartExtMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/mapper/xml/DepartExtMapper.xml b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/mapper/xml/DepartExtMapper.xml new file mode 100644 index 0000000..bb3c369 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/mapper/xml/DepartExtMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/service/IDepartExtService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/service/IDepartExtService.java new file mode 100644 index 0000000..cf6ef5c --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/service/IDepartExtService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.demo.departext.service; + +import org.jeecg.modules.demo.departext.entity.DepartExt; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 部门扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +public interface IDepartExtService extends IService { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/service/impl/DepartExtServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/service/impl/DepartExtServiceImpl.java new file mode 100644 index 0000000..bf4a2d4 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/departext/service/impl/DepartExtServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.demo.departext.service.impl; + +import org.jeecg.modules.demo.departext.entity.DepartExt; +import org.jeecg.modules.demo.departext.mapper.DepartExtMapper; +import org.jeecg.modules.demo.departext.service.IDepartExtService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 部门扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +@Service +public class DepartExtServiceImpl extends ServiceImpl implements IDepartExtService { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java index 5487a0f..e03e8be 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectController.java @@ -12,6 +12,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.modules.demo.project.dto.ProjectShenBaoDto; import org.jeecg.modules.demo.project.entity.Project; import org.jeecg.modules.demo.project.service.IProjectService; import org.springframework.beans.factory.annotation.Autowired; @@ -81,6 +82,15 @@ public class ProjectController extends JeecgController return Result.OK("添加成功!"); } + @AutoLog(value = "项目审报") + @ApiOperation(value = "项目表-添加", notes = "项目表-添加") +// @RequiresPermissions("project:project:add") + @PostMapping(value = "/save4shenbao") + public Result save4shenbao(@RequestBody ProjectShenBaoDto dto) { + projectService.save4shenbao(dto); + return Result.OK("添加成功!"); + } + /** * 编辑 * diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectManagmentController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectManagmentController.java new file mode 100644 index 0000000..6007c68 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/controller/ProjectManagmentController.java @@ -0,0 +1,191 @@ +package org.jeecg.modules.demo.project.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.modules.demo.departext.service.IDepartExtService; +import org.jeecg.modules.demo.project.entity.Project; +import org.jeecg.modules.demo.project.service.IProjectService; +import org.jeecg.modules.demo.userext.service.IUserExtService; +import org.jeecg.modules.system.service.ISysDepartService; +import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * @Description: 项目审报业务处理controller + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +@Api(tags = "项目表") +@RestController +@RequestMapping("/project/managment") +@Slf4j +public class ProjectManagmentController extends JeecgController { + @Autowired + private IProjectService projectService; + + @Autowired + private IDepartExtService iDepartExtService; + + @Autowired + private ISysDepartService iSysDepartService; + + @Autowired + private ISysUserService iSysUserService; + + @Autowired + private IUserExtService iUserExtService; + + + + + + /** + * 分页列表查询 + * + * @param project + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "项目表-分页列表查询") + @ApiOperation(value = "项目表-分页列表查询", notes = "项目表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(Project project, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + // 自定义查询规则 + Map customeRuleMap = new HashMap<>(); + // 自定义多选的查询规则为:LIKE_WITH_OR + customeRuleMap.put("projectDomain", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("projectStatus", QueryRuleEnum.LIKE_WITH_OR); + customeRuleMap.put("budgetStatus", QueryRuleEnum.LIKE_WITH_OR); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap(), customeRuleMap); + Page page = new Page(pageNo, pageSize); + IPage pageList = projectService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param project + * @return + */ + @AutoLog(value = "项目表-添加") + @ApiOperation(value = "项目表-添加", notes = "项目表-添加") +// @RequiresPermissions("project:project:add") + @PostMapping(value = "/add") + public Result add(@RequestBody Project project) { + projectService.save(project); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param project + * @return + */ + @AutoLog(value = "项目表-编辑") + @ApiOperation(value = "项目表-编辑", notes = "项目表-编辑") +// @RequiresPermissions("project:project:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody Project project) { + projectService.updateById(project); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "项目表-通过id删除") + @ApiOperation(value = "项目表-通过id删除", notes = "项目表-通过id删除") +// @RequiresPermissions("project:project:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + projectService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "项目表-批量删除") + @ApiOperation(value = "项目表-批量删除", notes = "项目表-批量删除") + @RequiresPermissions("project:project:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.projectService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "项目表-通过id查询") + @ApiOperation(value = "项目表-通过id查询", notes = "项目表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + Project project = projectService.getById(id); + if (project == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(project); + } + + /** + * 导出excel + * + * @param request + * @param project + */ +// @RequiresPermissions("project:project:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, Project project) { + return super.exportXls(request, project, Project.class, "项目表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("project:project:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, Project.class); + } + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/ProjectShenBaoDto.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/ProjectShenBaoDto.java new file mode 100644 index 0000000..bd82e9b --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/dto/ProjectShenBaoDto.java @@ -0,0 +1,382 @@ +package org.jeecg.modules.demo.project.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 项目申报对象 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "项目申报Dto", description = "项目申报Dto") +public class ProjectShenBaoDto implements Serializable { + private static final long serialVersionUID = 1772252L; + + /** + * 主键 + */ +// @TableId(type = IdType.ASSIGN_ID) +// @ApiModelProperty(value = "主键") +// private String id; + /** + * 创建人 + */ +// @ApiModelProperty(value = "创建人") +// private String createBy; +// /** +// * 创建日期 +// */ +// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @ApiModelProperty(value = "创建日期") +// private Date createTime; +// /** +// * 更新人 +// */ +// @ApiModelProperty(value = "更新人") +// private String updateBy; +// /** +// * 更新日期 +// */ +// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @ApiModelProperty(value = "更新日期") +// private Date updateTime; +// /** +// * 所属部门 +// */ +// @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") +// @ApiModelProperty(value = "所属部门") +// private String sysOrgCode; + /** + * 项目名称 + */ + @Excel(name = "项目名称", width = 15) + @ApiModelProperty(value = "项目名称") + private String projectName; + /** + * 项目领域 + */ + @Excel(name = "项目领域", width = 15, dicCode = "project_domain") + @Dict(dicCode = "project_domain") + @ApiModelProperty(value = "项目领域") + private String projectDomain; + /** + * 新兴产业 + */ + @Excel(name = "新兴产业", width = 15, dicCode = "emerging_industry") + @Dict(dicCode = "emerging_industry") + @ApiModelProperty(value = "新兴产业") + private String emergingIndustry; + /** + * 传统产业 + */ + @Excel(name = "传统产业", width = 15, dicCode = "traditional_industry") + @Dict(dicCode = "traditional_industry") + @ApiModelProperty(value = "传统产业") + private String traditionalIndustry; + /** + * 技术来源 + */ + @Excel(name = "技术来源", width = 15, dicCode = "technical_source") + @Dict(dicCode = "technical_source") + @ApiModelProperty(value = "技术来源") + private String technicalSource; + /** + * 技术水平 + */ + @Excel(name = "技术水平", width = 15, dicCode = "technical_level") + @Dict(dicCode = "technical_level") + @ApiModelProperty(value = "技术水平") + private String technicalLevel; + /** + * 预期主要成果形式 + */ + @Excel(name = "预期主要成果形式", width = 15, dicCode = "result_form") + @Dict(dicCode = "result_form") + @ApiModelProperty(value = "预期主要成果形式") + private String resultForm; + /** + * 经费投入(万元) + */ + @Excel(name = "经费投入(万元)", width = 15) + @ApiModelProperty(value = "经费投入(万元)") + private BigDecimal fundInput; + /** + * 申请省财政拨款(万元) + */ + @Excel(name = "申请省财政拨款(万元)", width = 15) + @ApiModelProperty(value = "申请省财政拨款(万元)") + private BigDecimal applyFund; + /** + * 如无经费支持是否接受指导项目立项 + */ + @Excel(name = "如无经费支持是否接受指导项目立项", width = 15, replace = {"是_Y", "否_N"}) + @ApiModelProperty(value = "如无经费支持是否接受指导项目立项") + private String isAcceptInitProject; + /** + * 所属实验室、研究中心 + */ + @Excel(name = "所属实验室、研究中心", width = 15) + @ApiModelProperty(value = "所属实验室、研究中心") + private String laboratory; + /** + * 地方投入 + */ + @Excel(name = "地方投入", width = 15) + @ApiModelProperty(value = "地方投入") + private BigDecimal localInput; + /** + * 银行贷款 + */ + @Excel(name = "银行贷款", width = 15) + @ApiModelProperty(value = "银行贷款") + private BigDecimal bankLoan; + /** + * 自筹 + */ + @Excel(name = "自筹", width = 15) + @ApiModelProperty(value = "自筹") + private BigDecimal selfRaise; + /** + * 项目开始时间 + */ + @Excel(name = "项目开始时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "项目开始时间") + private Date startTime; + /** + * 项目结束时间 + */ + @Excel(name = "项目结束时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "项目结束时间") + private Date endTime; + /** + * 年生产能力 + */ + @Excel(name = "年生产能力", width = 15) + @ApiModelProperty(value = "年生产能力") + private BigDecimal yearlyCapacity; + /** + * 就业人数 + */ + @Excel(name = "就业人数", width = 15) + @ApiModelProperty(value = "就业人数") + private String employmentFigure; + /** + * 年销售收入 + */ + @Excel(name = "年销售收入", width = 15) + @ApiModelProperty(value = "年销售收入") + private BigDecimal annualSalesRevenue; + /** + * 年出口创汇 + */ + @Excel(name = "年出口创汇", width = 15) + @ApiModelProperty(value = "年出口创汇") + private BigDecimal annualExportEarnings; + /** + * 年纳税总额 + */ + @Excel(name = "年纳税总额", width = 15) + @ApiModelProperty(value = "年纳税总额") + private BigDecimal totalAnnualTaxPayment; + /** + * 年净利润 + */ + @Excel(name = "年净利润", width = 15) + @ApiModelProperty(value = "年净利润") + private BigDecimal annualProfit; + /** + * 申请专利数 + */ + @Excel(name = "申请专利数", width = 15) + @ApiModelProperty(value = "申请专利数") + private String applyPatentNumber; + /** + * 发明专利数 + */ + @Excel(name = "发明专利数", width = 15) + @ApiModelProperty(value = "发明专利数") + private String invevtionPatentNumber; + /** + * 授权专利数 + */ + @Excel(name = "授权专利数", width = 15) + @ApiModelProperty(value = "授权专利数") + private String creditPatentNumber; + /** + * 项目类别表id + */ + @Excel(name = "项目类别表id", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @ApiModelProperty(value = "项目类别表id") + @Dict(dictTable = "project_type", dicCode = "id", dicText = "type_name") + private String projectTypeid; + /** + * 批次 + */ + @Excel(name = "批次", width = 15) + @ApiModelProperty(value = "批次") + private String batchNo; + /** + * 项目书状态 + */ + @Excel(name = "项目书状态", width = 15, dicCode = "project_status") + @Dict(dicCode = "project_status") + @ApiModelProperty(value = "项目书状态") + private String projectStatus; + /** + * 预算书状态 + */ + @Excel(name = "预算书状态", width = 15, dicCode = "budget_status") + @Dict(dicCode = "budget_status") + @ApiModelProperty(value = "预算书状态") + private String budgetStatus; + /** + * 负责人 + */ + @Excel(name = "负责人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @ApiModelProperty(value = "负责人") + private String projectCharger; + + + /** + * 用户表id + */ + @Excel(name = "用户表id", width = 15) + @ApiModelProperty(value = "用户表id") + private String userId; + /** + * 性别 + */ + @Excel(name = "性别", width = 15, dicCode = "sex") + @Dict(dicCode = "sex") + @ApiModelProperty(value = "性别") + private String sex; + /** + * 年龄 + */ + @Excel(name = "年龄", width = 15) + @ApiModelProperty(value = "年龄") + private Integer age; + /** + * 民族 + */ + @Excel(name = "民族", width = 15) + @ApiModelProperty(value = "民族") + private String nation; + /** + * 党派 + */ + @Excel(name = "党派", width = 15) + @ApiModelProperty(value = "党派") + private String political; + /** + * 职称 + */ + @Excel(name = "职称", width = 15) + @ApiModelProperty(value = "职称") + private String title; + /** + * 职务 + */ + @Excel(name = "职务", width = 15) + @ApiModelProperty(value = "职务") + private String job; + /** + * 现从事专业 + */ + @Excel(name = "现从事专业", width = 15) + @ApiModelProperty(value = "现从事专业") + private String currentPerfession; + + + /** + * 部门表id + */ + @Excel(name = "部门表id", width = 15) + @ApiModelProperty(value = "部门表id") + private String departId; + /** + * 单位性质 + */ + @Excel(name = "单位性质", width = 15, dicCode = "depart_category") + @Dict(dicCode = "depart_category") + @ApiModelProperty(value = "单位性质") + private String category; + /** + * 企业登记注册类型 + */ + @Excel(name = "企业登记注册类型", width = 15) + @ApiModelProperty(value = "企业登记注册类型") + private String type; + /** + * 开户银行 + */ + @Excel(name = "开户银行", width = 15) + @ApiModelProperty(value = "开户银行") + private String bankName; + /** + * 账号 + */ + @Excel(name = "账号", width = 15) + @ApiModelProperty(value = "账号") + private String bankNo; + /** + * 职工总数 + */ + @Excel(name = "职工总数", width = 15) + @ApiModelProperty(value = "职工总数") + private String employeeNum; + /** + * 上年度研发经费 + */ + @Excel(name = "上年度研发经费", width = 15) + @ApiModelProperty(value = "上年度研发经费") + private BigDecimal lastYearFee; + /** + * 注册时间 + */ + @Excel(name = "注册时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "注册时间") + private Date registerDate; + /** + * 联系人 + */ + @Excel(name = "联系人", width = 15) + @ApiModelProperty(value = "联系人") + private String linkmanName; + /** + * 手机 + */ + @Excel(name = "手机", width = 15) + @ApiModelProperty(value = "手机") + private String linkmanPhone; + /** + * 电子邮箱 + */ + @Excel(name = "电子邮箱", width = 15) + @ApiModelProperty(value = "电子邮箱") + private String linkmanEmail; +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/IProjectService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/IProjectService.java index c950733..6ed80e6 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/IProjectService.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/IProjectService.java @@ -1,5 +1,6 @@ package org.jeecg.modules.demo.project.service; +import org.jeecg.modules.demo.project.dto.ProjectShenBaoDto; import org.jeecg.modules.demo.project.entity.Project; import com.baomidou.mybatisplus.extension.service.IService; @@ -11,4 +12,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IProjectService extends IService { + void save4shenbao(ProjectShenBaoDto dto); } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java index e4be285..e65d872 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/project/service/impl/ProjectServiceImpl.java @@ -1,5 +1,6 @@ package org.jeecg.modules.demo.project.service.impl; +import org.jeecg.modules.demo.project.dto.ProjectShenBaoDto; import org.jeecg.modules.demo.project.entity.Project; import org.jeecg.modules.demo.project.mapper.ProjectMapper; import org.jeecg.modules.demo.project.service.IProjectService; @@ -16,4 +17,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class ProjectServiceImpl extends ServiceImpl implements IProjectService { + @Override + public void save4shenbao(ProjectShenBaoDto dto) { + System.out.println("dto = " + dto); + } } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/controller/UserExtController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/controller/UserExtController.java new file mode 100644 index 0000000..b5ed03c --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/controller/UserExtController.java @@ -0,0 +1,162 @@ +package org.jeecg.modules.demo.userext.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.demo.userext.entity.UserExt; +import org.jeecg.modules.demo.userext.service.IUserExtService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + +/** + * @Description: 用户扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +@Api(tags = "用户扩展表") +@RestController +@RequestMapping("/userext/userExt") +@Slf4j +public class UserExtController extends JeecgController { + @Autowired + private IUserExtService userExtService; + + /** + * 分页列表查询 + * + * @param userExt + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "用户扩展表-分页列表查询") + @ApiOperation(value = "用户扩展表-分页列表查询", notes = "用户扩展表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(UserExt userExt, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(userExt, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = userExtService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param userExt + * @return + */ + @AutoLog(value = "用户扩展表-添加") + @ApiOperation(value = "用户扩展表-添加", notes = "用户扩展表-添加") +// @RequiresPermissions("userext:user_ext:add") + @PostMapping(value = "/add") + public Result add(@RequestBody UserExt userExt) { + userExtService.save(userExt); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param userExt + * @return + */ + @AutoLog(value = "用户扩展表-编辑") + @ApiOperation(value = "用户扩展表-编辑", notes = "用户扩展表-编辑") +// @RequiresPermissions("userext:user_ext:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody UserExt userExt) { + userExtService.updateById(userExt); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "用户扩展表-通过id删除") + @ApiOperation(value = "用户扩展表-通过id删除", notes = "用户扩展表-通过id删除") +// @RequiresPermissions("userext:user_ext:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + userExtService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "用户扩展表-批量删除") + @ApiOperation(value = "用户扩展表-批量删除", notes = "用户扩展表-批量删除") +// @RequiresPermissions("userext:user_ext:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.userExtService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "用户扩展表-通过id查询") + @ApiOperation(value = "用户扩展表-通过id查询", notes = "用户扩展表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + UserExt userExt = userExtService.getById(id); + if (userExt == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(userExt); + } + + /** + * 导出excel + * + * @param request + * @param userExt + */ +// @RequiresPermissions("userext:user_ext:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, UserExt userExt) { + return super.exportXls(request, userExt, UserExt.class, "用户扩展表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("userext:user_ext:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, UserExt.class); + } + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/entity/UserExt.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/entity/UserExt.java new file mode 100644 index 0000000..c00337f --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/entity/UserExt.java @@ -0,0 +1,112 @@ +package org.jeecg.modules.demo.userext.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 用户扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +@Data +@TableName("user_ext") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "user_ext对象", description = "用户扩展表") +public class UserExt implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private Date updateTime; + /** + * 用户表id + */ + @Excel(name = "用户表id", width = 15) + @ApiModelProperty(value = "用户表id") + private String userId; + /** + * 性别 + */ + @Excel(name = "性别", width = 15, dicCode = "sex") + @Dict(dicCode = "sex") + @ApiModelProperty(value = "性别") + private String sex; + /** + * 年龄 + */ + @Excel(name = "年龄", width = 15) + @ApiModelProperty(value = "年龄") + private Integer age; + /** + * 民族 + */ + @Excel(name = "民族", width = 15) + @ApiModelProperty(value = "民族") + private String nation; + /** + * 党派 + */ + @Excel(name = "党派", width = 15) + @ApiModelProperty(value = "党派") + private String political; + /** + * 职称 + */ + @Excel(name = "职称", width = 15) + @ApiModelProperty(value = "职称") + private String title; + /** + * 职务 + */ + @Excel(name = "职务", width = 15) + @ApiModelProperty(value = "职务") + private String job; + /** + * 现从事专业 + */ + @Excel(name = "现从事专业", width = 15) + @ApiModelProperty(value = "现从事专业") + private String currentPerfession; +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/mapper/UserExtMapper.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/mapper/UserExtMapper.java new file mode 100644 index 0000000..5108cb3 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/mapper/UserExtMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.userext.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.userext.entity.UserExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 用户扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +public interface UserExtMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/mapper/xml/UserExtMapper.xml b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/mapper/xml/UserExtMapper.xml new file mode 100644 index 0000000..3d06f97 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/mapper/xml/UserExtMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/service/IUserExtService.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/service/IUserExtService.java new file mode 100644 index 0000000..3f15a0a --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/service/IUserExtService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.demo.userext.service; + +import org.jeecg.modules.demo.userext.entity.UserExt; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 用户扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +public interface IUserExtService extends IService { + +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/service/impl/UserExtServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/service/impl/UserExtServiceImpl.java new file mode 100644 index 0000000..c23d85f --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/userext/service/impl/UserExtServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.demo.userext.service.impl; + +import org.jeecg.modules.demo.userext.entity.UserExt; +import org.jeecg.modules.demo.userext.mapper.UserExtMapper; +import org.jeecg.modules.demo.userext.service.IUserExtService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 用户扩展表 + * @Author: jeecg-boot + * @Date: 2024-10-18 + * @Version: V1.0 + */ +@Service +public class UserExtServiceImpl extends ServiceImpl implements IUserExtService { + +} diff --git a/jeecgboot-vue3/src/views/departExt/DepartExt.api.ts b/jeecgboot-vue3/src/views/departExt/DepartExt.api.ts new file mode 100644 index 0000000..c4d2081 --- /dev/null +++ b/jeecgboot-vue3/src/views/departExt/DepartExt.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/departext/departExt/list', + save='/departext/departExt/add', + edit='/departext/departExt/edit', + deleteOne = '/departext/departExt/delete', + deleteBatch = '/departext/departExt/deleteBatch', + importExcel = '/departext/departExt/importExcel', + exportXls = '/departext/departExt/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/departExt/DepartExt.data.ts b/jeecgboot-vue3/src/views/departExt/DepartExt.data.ts new file mode 100644 index 0000000..065369c --- /dev/null +++ b/jeecgboot-vue3/src/views/departExt/DepartExt.data.ts @@ -0,0 +1,184 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '单位性质', + align:"center", + dataIndex: 'category_dictText' + }, + { + title: '企业登记注册类型', + align:"center", + dataIndex: 'type' + }, + { + title: '开户银行', + align:"center", + dataIndex: 'bankName' + }, + { + title: '账号', + align:"center", + dataIndex: 'bankNo' + }, + { + title: '职工总数', + align:"center", + dataIndex: 'employeeNum' + }, + { + title: '上年度研发经费', + align:"center", + dataIndex: 'lastYearFee' + }, + { + title: '注册时间', + align:"center", + dataIndex: 'registerDate', + customRender:({text}) =>{ + text = !text ? "" : (text.length > 10 ? text.substr(0,10) : text); + return text; + }, + }, + { + title: '联系人', + align:"center", + dataIndex: 'linkmanName' + }, + { + title: '手机', + align:"center", + dataIndex: 'linkmanPhone' + }, + { + title: '电子邮箱', + align:"center", + dataIndex: 'linkmanEmail' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '单位性质', + field: 'category', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"depart_category" + }, + }, + { + label: '企业登记注册类型', + field: 'type', + component: 'Input', + }, + { + label: '开户银行', + field: 'bankName', + component: 'Input', + }, + { + label: '账号', + field: 'bankNo', + component: 'Input', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'}, + ]; + }, + }, + { + label: '职工总数', + field: 'employeeNum', + component: 'Input', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^-?\d+$/, message: '请输入整数!'}, + ]; + }, + }, + { + label: '上年度研发经费', + field: 'lastYearFee', + component: 'InputNumber', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^(([1-9][0-9]*)|([0]\.\d{0,2}|[1-9][0-9]*\.\d{0,2}))$/, message: '请输入正确的金额!'}, + ]; + }, + }, + { + label: '注册时间', + field: 'registerDate', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD' + }, + }, + { + label: '联系人', + field: 'linkmanName', + component: 'Input', + }, + { + label: '手机', + field: 'linkmanPhone', + component: 'Input', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码!'}, + ]; + }, + }, + { + label: '电子邮箱', + field: 'linkmanEmail', + component: 'Input', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^([\w]+\.*)([\w]+)@[\w]+\.\w{3}(\.\w{2}|)$/, message: '请输入正确的电子邮件!'}, + ]; + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + category: {title: '单位性质',order: 0,view: 'list', type: 'string',dictCode: 'depart_category',}, + type: {title: '企业登记注册类型',order: 1,view: 'text', type: 'string',}, + bankName: {title: '开户银行',order: 2,view: 'text', type: 'string',}, + bankNo: {title: '账号',order: 3,view: 'text', type: 'string',}, + employeeNum: {title: '职工总数',order: 4,view: 'text', type: 'string',}, + lastYearFee: {title: '上年度研发经费',order: 5,view: 'number', type: 'number',}, + registerDate: {title: '注册时间',order: 6,view: 'date', type: 'string',}, + linkmanName: {title: '联系人',order: 7,view: 'text', type: 'string',}, + linkmanPhone: {title: '手机',order: 8,view: 'text', type: 'string',}, + linkmanEmail: {title: '电子邮箱',order: 9,view: 'text', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/departExt/DepartExtList.vue b/jeecgboot-vue3/src/views/departExt/DepartExtList.vue new file mode 100644 index 0000000..288053c --- /dev/null +++ b/jeecgboot-vue3/src/views/departExt/DepartExtList.vue @@ -0,0 +1,190 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/departExt/V20241018_1__menu_insert_DepartExt.sql b/jeecgboot-vue3/src/views/departExt/V20241018_1__menu_insert_DepartExt.sql new file mode 100644 index 0000000..88f0841 --- /dev/null +++ b/jeecgboot-vue3/src/views/departExt/V20241018_1__menu_insert_DepartExt.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/departext文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2024101809494770060', NULL, '部门扩展表', '/departext/departExtList', 'departext/DepartExtList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2024-10-18 09:49:06', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809494770061', '2024101809494770060', '添加部门扩展表', NULL, NULL, 0, NULL, NULL, 2, 'departext:depart_ext:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:49:06', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809494770062', '2024101809494770060', '编辑部门扩展表', NULL, NULL, 0, NULL, NULL, 2, 'departext:depart_ext:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:49:06', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809494770063', '2024101809494770060', '删除部门扩展表', NULL, NULL, 0, NULL, NULL, 2, 'departext:depart_ext:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:49:06', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809494770064', '2024101809494770060', '批量删除部门扩展表', NULL, NULL, 0, NULL, NULL, 2, 'departext:depart_ext:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:49:06', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809494770065', '2024101809494770060', '导出excel_部门扩展表', NULL, NULL, 0, NULL, NULL, 2, 'departext:depart_ext:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:49:06', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809494770066', '2024101809494770060', '导入excel_部门扩展表', NULL, NULL, 0, NULL, NULL, 2, 'departext:depart_ext:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:49:06', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/departExt/components/DepartExtForm.vue b/jeecgboot-vue3/src/views/departExt/components/DepartExtForm.vue new file mode 100644 index 0000000..566b80e --- /dev/null +++ b/jeecgboot-vue3/src/views/departExt/components/DepartExtForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/departExt/components/DepartExtModal.vue b/jeecgboot-vue3/src/views/departExt/components/DepartExtModal.vue new file mode 100644 index 0000000..71cb60e --- /dev/null +++ b/jeecgboot-vue3/src/views/departExt/components/DepartExtModal.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/data.api.ts b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/data.api.ts new file mode 100644 index 0000000..7b8f828 --- /dev/null +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/data.api.ts @@ -0,0 +1,77 @@ +import {defHttp} from '/@/utils/http/axios'; +import {useMessage} from "/@/hooks/web/useMessage"; + +const {createConfirm} = useMessage(); + +enum Api { + list = '/project/project/list', + save = '/project/project/add', + shenbao = '/project/project/save4shenbao', + edit = '/project/project/edit', + deleteOne = '/project/project/delete', + deleteBatch = '/project/project/deleteBatch', + importExcel = '/project/project/importExcel', + exportXls = '/project/project/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params, handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({ + url: Api.deleteBatch, + data: params + }, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +// export const saveOrUpdate = (params, isUpdate) => { +// // let url = isUpdate ? Api.edit : Api.save; +// return defHttp.post({url: url, params}); +// } + +/** + * 保存或者更新 + * @param params + */ +export const save4shenbao = (params) => { + return defHttp.post({url: Api.shenbao, params}); +}; diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/data.ts b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/data.ts index 0eca28a..ef8b944 100644 --- a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/data.ts +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/data.ts @@ -1,87 +1,53 @@ import { FormSchema } from '@/components/Form'; import { useUserStore } from '/@/store/modules/user'; - //项目基本信息schema export const projectBaseInfoSchemas: FormSchema[] = [ { - field: 'projectType', - component: 'Input', label: '项目类别', - required: true, + field: 'projectTypeid', + component: 'Input', + dynamicDisabled: true, + defaultValue: '科技攻关', }, { field: 'annualId', component: 'Input', label: '计划年度', - required: true, + dynamicDisabled: true, + defaultValue: '2025', }, { field: 'batchNo', component: 'Input', label: '批次', + dynamicDisabled: true, defaultValue: 1, - required: true, }, { field: 'projectName', - component: 'Input', + component: 'InputTextArea', label: '项目名称', required: true, }, - /*{ - field: 'f2', - component: 'Input', - label: '仓库域名2', - required: true, - componentProps: { - addonBefore: 'http://', - addonAfter: 'com', - }, - colProps: { - offset: 2, - }, - },{ - field: 'f3', - component: 'Select', - label: '仓库管理员2', - componentProps: { - options: basicOptions, - }, - required: true, - colProps: { - offset: 2, - }, - },{ - field: 'f4', - component: 'Select', - label: '审批人', - componentProps: { - options: basicOptions, - }, - required: true, - },*/ { - field: 'f5', - component: 'RangePicker', - label: '生效日期', + label: '项目开始时间', + field: 'startTime', + component: 'DatePicker', + // componentProps: { + // valueFormat: 'YYYY-MM-DD', + // }, required: true, - /*colProps: { - offset: 2, - },*/ - }, - /*{ - field: 'f6', - component: 'Select', - label: '仓库类型', - componentProps: { - options: storeTypeOptions, - }, + }, + { + label: '项目结束时间', + field: 'endTime', + component: 'DatePicker', + // componentProps: { + // valueFormat: 'YYYY-MM-DD', + // }, required: true, - colProps: { - offset: 2, - }, - },*/ + }, ]; //项目负责人schema @@ -92,7 +58,7 @@ export const userSchemas: FormSchema[] = [ label: '姓名', required: true, defaultValue: useUserStore().getUserInfo?.realname, - dynamicDisabled: true + dynamicDisabled: true, }, { field: 'sex', @@ -108,7 +74,13 @@ export const userSchemas: FormSchema[] = [ field: 'age', component: 'Input', label: '年龄', - required: true, + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'}, + ]; + }, + // required: true, // colProps: { span: 6 }, }, { @@ -161,7 +133,8 @@ export const departSchemas: FormSchema[] = [ component: 'Input', label: '单位名称', required: true, - defaultValue: useUserStore().getUserInfo?.orgCode + defaultValue: useUserStore().getUserInfo?.orgCode, + dynamicDisabled: true, }, { field: 'category', @@ -183,18 +156,67 @@ export const departSchemas: FormSchema[] = [ // colProps: { span: 6 }, }, { - field: 'address', + field: 'registerDate', + component: 'DatePicker', + label: '注册时间', + component: 'DatePicker', + // componentProps: { + // valueFormat: 'YYYY-MM-DD', + // }, + }, + { + field: 'departNameAbbr', component: 'Input', + label: '组织机构代码', + // required: true, + // colProps: { span: 6 }, + }, + { + field: 'address', + component: 'InputTextArea', label: '注册地址', // required: true, // colProps: { span: 6 }, }, + { + label: '联系人', + field: 'linkmanName', + component: 'Input', + }, + { + label: '手机', + field: 'linkmanPhone', + component: 'Input', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码!'}, + ]; + }, + }, + { + label: '电子邮箱', + field: 'linkmanEmail', + component: 'Input', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^([\w]+\.*)([\w]+)@[\w]+\.\w{3}(\.\w{2}|)$/, message: '请输入正确的电子邮件!'}, + ]; + }, + }, { field: 'fax', component: 'Input', label: '传真', // required: true, // colProps: { span: 6 }, + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'}, + ]; + }, }, { field: 'bankName', @@ -207,13 +229,23 @@ export const departSchemas: FormSchema[] = [ field: 'bankNo', component: 'Input', label: '账号', - // required: true, - // colProps: { span: 6 }, + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'}, + ]; + }, }, { field: 'employeeNum', component: 'Input', label: '职工总数', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^-?\d+$/, message: '请输入整数!'}, + ]; + }, // required: true, // colProps: { span: 6 }, }, @@ -221,7 +253,11 @@ export const departSchemas: FormSchema[] = [ field: 'lastYearFee', component: 'Input', label: '上年度研发经费', - // required: true, - // colProps: { span: 6 }, + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'}, + ]; + }, }, ]; diff --git a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/projectApplicationList.vue b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/projectApplicationList.vue index ac08d62..94af987 100644 --- a/jeecgboot-vue3/src/views/projectApplication/kejigongguan/projectApplicationList.vue +++ b/jeecgboot-vue3/src/views/projectApplication/kejigongguan/projectApplicationList.vue @@ -22,6 +22,8 @@ import { PageWrapper } from '@/components/Page'; import { projectBaseInfoSchemas, userSchemas, departSchemas } from './data'; import { Card } from 'ant-design-vue'; + import {defHttp} from "@/utils/http/axios"; + import {save4shenbao} from './data.api'; export default defineComponent({ name: 'FormHightPage', @@ -57,16 +59,39 @@ showActionButtonGroup: false, }); + // async function submitForm() { + // let data = getFieldsValue(); + // let params = Object.assign({}, formData, data); + // console.log('表单数据', params) + // await saveOrUpdate(params, true) + // } + async function submitAll() { try { // if (tableRef.value) { // console.log('table data:', tableRef.value.getDataSource()); // } const [projectBaseInfoValues, userValues, deaprtValues] = await Promise.all([validateProjectInfoForm(), validateUserForm(), validateDepartForm()]); + const param = await Promise.resolve([validateProjectInfoForm(), validateUserForm(), validateDepartForm()]); console.log('projectBaseInfoValues form data:', projectBaseInfoValues); console.log('userValuesform data:', userValues); console.log('deaprtValues form data:', deaprtValues); + // saveOrUpdate(,false); + console.log(222222); + console.log(222222); + // let param = { id: record.id, useStatus: '1' }; + + // let param = JSON.parse(projectBaseInfoValues); + console.log("param:",JSON.stringify(param)); + console.log(333); + // const params = {}; + console.log("projectBaseInfoValues:"+projectBaseInfoValues); + save4shenbao(projectBaseInfoValues); + // await reload(); + // defHttp.post({ url: "/project/project/save4shenbao", projectBaseInfoValues}, { isTransformResponse: false }); } catch (error) {} + + } // return { register, registerUser, registerDepart, submitAll, tableRef }; diff --git a/jeecgboot-vue3/src/views/userExt/UserExt.api.ts b/jeecgboot-vue3/src/views/userExt/UserExt.api.ts new file mode 100644 index 0000000..773dadf --- /dev/null +++ b/jeecgboot-vue3/src/views/userExt/UserExt.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/userext/userExt/list', + save='/userext/userExt/add', + edit='/userext/userExt/edit', + deleteOne = '/userext/userExt/delete', + deleteBatch = '/userext/userExt/deleteBatch', + importExcel = '/userext/userExt/importExcel', + exportXls = '/userext/userExt/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/userExt/UserExt.data.ts b/jeecgboot-vue3/src/views/userExt/UserExt.data.ts new file mode 100644 index 0000000..a608cf3 --- /dev/null +++ b/jeecgboot-vue3/src/views/userExt/UserExt.data.ts @@ -0,0 +1,131 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户表id', + align:"center", + dataIndex: 'userId' + }, + { + title: '性别', + align:"center", + dataIndex: 'sex_dictText' + }, + { + title: '年龄', + align:"center", + dataIndex: 'age' + }, + { + title: '民族', + align:"center", + dataIndex: 'nation' + }, + { + title: '党派', + align:"center", + dataIndex: 'political' + }, + { + title: '职称', + align:"center", + dataIndex: 'title' + }, + { + title: '职务', + align:"center", + dataIndex: 'job' + }, + { + title: '现从事专业', + align:"center", + dataIndex: 'currentPerfession' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户表id', + field: 'userId', + component: 'Input', + }, + { + label: '性别', + field: 'sex', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"sex" + }, + }, + { + label: '年龄', + field: 'age', + component: 'InputNumber', + dynamicRules: ({model,schema}) => { + return [ + { required: false}, + { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!'}, + ]; + }, + }, + { + label: '民族', + field: 'nation', + component: 'Input', + }, + { + label: '党派', + field: 'political', + component: 'Input', + }, + { + label: '职称', + field: 'title', + component: 'Input', + }, + { + label: '职务', + field: 'job', + component: 'Input', + }, + { + label: '现从事专业', + field: 'currentPerfession', + component: 'Input', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户表id',order: 0,view: 'text', type: 'string',}, + sex: {title: '性别',order: 1,view: 'list', type: 'string',dictCode: 'sex',}, + age: {title: '年龄',order: 2,view: 'number', type: 'number',}, + nation: {title: '民族',order: 3,view: 'text', type: 'string',}, + political: {title: '党派',order: 4,view: 'text', type: 'string',}, + title: {title: '职称',order: 5,view: 'text', type: 'string',}, + job: {title: '职务',order: 6,view: 'text', type: 'string',}, + currentPerfession: {title: '现从事专业',order: 7,view: 'text', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/userExt/UserExtList.vue b/jeecgboot-vue3/src/views/userExt/UserExtList.vue new file mode 100644 index 0000000..a97d61a --- /dev/null +++ b/jeecgboot-vue3/src/views/userExt/UserExtList.vue @@ -0,0 +1,190 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/userExt/V20241018_1__menu_insert_UserExt.sql b/jeecgboot-vue3/src/views/userExt/V20241018_1__menu_insert_UserExt.sql new file mode 100644 index 0000000..322a0a9 --- /dev/null +++ b/jeecgboot-vue3/src/views/userExt/V20241018_1__menu_insert_UserExt.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/userext文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2024101809598440560', NULL, '用户扩展表', '/userext/userExtList', 'userext/UserExtList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2024-10-18 09:59:56', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809598440561', '2024101809598440560', '添加用户扩展表', NULL, NULL, 0, NULL, NULL, 2, 'userext:user_ext:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:59:56', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809598440562', '2024101809598440560', '编辑用户扩展表', NULL, NULL, 0, NULL, NULL, 2, 'userext:user_ext:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:59:56', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809598440563', '2024101809598440560', '删除用户扩展表', NULL, NULL, 0, NULL, NULL, 2, 'userext:user_ext:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:59:56', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809598440564', '2024101809598440560', '批量删除用户扩展表', NULL, NULL, 0, NULL, NULL, 2, 'userext:user_ext:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:59:56', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809598440565', '2024101809598440560', '导出excel_用户扩展表', NULL, NULL, 0, NULL, NULL, 2, 'userext:user_ext:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:59:56', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2024101809598440566', '2024101809598440560', '导入excel_用户扩展表', NULL, NULL, 0, NULL, NULL, 2, 'userext:user_ext:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-10-18 09:59:56', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/userExt/components/UserExtForm.vue b/jeecgboot-vue3/src/views/userExt/components/UserExtForm.vue new file mode 100644 index 0000000..9b58927 --- /dev/null +++ b/jeecgboot-vue3/src/views/userExt/components/UserExtForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/userExt/components/UserExtModal.vue b/jeecgboot-vue3/src/views/userExt/components/UserExtModal.vue new file mode 100644 index 0000000..2a413d4 --- /dev/null +++ b/jeecgboot-vue3/src/views/userExt/components/UserExtModal.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file