fuliqi
2024-11-22 09d73d3bfc6b0136dd96224b361b79c0e513401b
项目库初始化
14个文件已添加
1814 ■■■■■ 已修改文件
business/src/main/java/com/ycl/controller/ProjectInfoController.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/entity/ProjectInfo.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/form/ProjectInfoForm.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/query/ProjectInfoQuery.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vue/ProjectInfoDialog.vue 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vue/ProjectInfoTable.vue 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vue/ProjectInfoView.vue 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vue/index.js 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/vue/projectInfo.js 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/ProjectInfoService.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/resources/mapper/ProjectInfoMapper.xml 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/controller/ProjectInfoController.java
New file
@@ -0,0 +1,82 @@
package com.ycl.controller;
import com.ycl.common.base.Result;
import com.ycl.common.group.Add;
import com.ycl.common.group.Update;
import com.ycl.domain.form.ProjectInfoForm;
import com.ycl.domain.query.ProjectInfoQuery;
import com.ycl.service.ProjectInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
 * 项目管理基础信息表 前端控制器
 *
 * @author flq
 * @since 2024-11-22
 */
@Validated
@RequiredArgsConstructor
@Api(value = "项目管理基础信息表", tags = "项目管理基础信息表管理")
@RestController
@RequestMapping("/api/project-info")
public class ProjectInfoController {
    private final ProjectInfoService projectInfoService;
    @PostMapping
    @ApiOperation(value = "添加", notes = "添加")
    @PreAuthorize("hasAuthority('projectInfo:add')")
    public Result add(@RequestBody @Validated(Add.class) ProjectInfoForm form) {
        return projectInfoService.add(form);
    }
    @PutMapping
    @ApiOperation(value = "修改", notes = "修改")
    @PreAuthorize("hasAuthority('projectInfo:edit')")
    public Result update(@RequestBody @Validated(Update.class) ProjectInfoForm form) {
        return projectInfoService.update(form);
    }
    @DeleteMapping("/{id}")
    @ApiOperation(value = "ID删除", notes = "ID删除")
    @PreAuthorize("hasAuthority('projectInfo:del')")
    public Result removeById(@PathVariable("id") String id) {
        return projectInfoService.removeById(id);
    }
    @DeleteMapping("/batch")
    @ApiOperation(value = "批量删除", notes = "批量删除")
    @PreAuthorize("hasAuthority('projectInfo:del:batch')")
    public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) {
        return projectInfoService.remove(ids);
    }
    @GetMapping("/page")
    @ApiOperation(value = "分页", notes = "分页")
    @PreAuthorize("hasAuthority('projectInfo:page')")
    public Result page(ProjectInfoQuery query) {
        return projectInfoService.page(query);
    }
    @GetMapping("/{id}")
    @ApiOperation(value = "详情", notes = "详情")
    @PreAuthorize("hasAuthority('projectInfo:detail')")
    public Result detail(@PathVariable("id") Integer id) {
        return projectInfoService.detail(id);
    }
    @GetMapping("/list")
    @PreAuthorize("hasAuthority('projectInfo:list')")
    @ApiOperation(value = "列表", notes = "列表")
    public Result list() {
        return projectInfoService.all();
    }
}
business/src/main/java/com/ycl/domain/entity/ProjectInfo.java
New file
@@ -0,0 +1,156 @@
package com.ycl.domain.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ycl.system.domain.base.AbsEntity;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * 项目管理基础信息表
 *
 * @author flq
 * @since 2024-11-22
 */
@Data
@TableName("t_project_info")
public class ProjectInfo extends AbsEntity {
    private static final long serialVersionUID = 1L;
    @TableField("project_name")
    /** 项目名称 */
    private String projectName;
    @TableField("project_code")
    /** 项目代码 */
    private String projectCode;
    @TableField("content")
    /** 建设内容 */
    private String content;
    @TableField("project_type")
    /** 项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他) */
    private String projectType;
    @TableField("project_status")
    /** 项目状态  (0未开工,1已开工,2已竣工,3暂停) */
    private String projectStatus;
    @TableField("fund_type")
    /** 资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债) */
    private String fundType;
    @TableField("invest_type")
    /** 投资类别(0企业投资,1政府投资,2外商投资,3境外投资) */
    private String investType;
    @TableField("project_phase")
    /** 项目阶段(0储备规划阶段,  1项目前期阶段,  2实施阶段,  3竣工投用阶段) */
    private String projectPhase;
    @TableField("tag")
    /** 标签 */
    private String tag;
    @TableField("competent_department")
    /** 主管部门(对应审批部门id) */
    private Integer competentDepartment;
    @TableField("area_code")
    /** 行政区域 */
    private String areaCode;
    @TableField("management_centralization")
    /** 管理归口  (0基本建设(发改),  1更新改造(经信),  2单纯购置(发改),  3信息化(发改),  4其他投资) */
    private String managementCentralization;
    @TableField("project_approval_type")
    /** 项目审批类型 */
    private String projectApprovalType;
    @TableField("investment_catalogue")
    /** 投资目录(?) */
    private String investmentCatalogue;
    @TableField("importance_type")
    /** 重点分类  (0省重点项目,  1遂宁市重点项目,  2.射洪市重点项目,  3.一般项目) */
    private String importanceType;
    @TableField("year")
    /** 年度投资计划 */
    private String year;
    @TableField("year_invest_amount")
    /** 年度投资金额 */
    private BigDecimal yearInvestAmount;
    @TableField("create_project_time")
    /** 立项时间 */
    private LocalDateTime createProjectTime;
    @TableField("plan_start_time")
    /** 计划开工时间 */
    private LocalDateTime planStartTime;
    @TableField("plan_complete_time")
    /** 计划竣工时间 */
    private LocalDateTime planCompleteTime;
    @TableField("win_unit")
    /** 中标单位 */
    private String winUnit;
    @TableField("win_amount")
    /** 中标金额 */
    private String winAmount;
    @TableField("win_time")
    /** 中标时间 */
    private LocalDateTime winTime;
    @TableField("project_address")
    /** 详细地址 */
    private String projectAddress;
    @TableField("longitude")
    /** 经度 */
    private String longitude;
    @TableField("latitude")
    /** 纬度 */
    private String latitude;
    @TableField("project_owner_unit")
    /** 项目业主单位 */
    private String projectOwnerUnit;
    @TableField("project_contact_person")
    /** 项目联系人 */
    private String projectContactPerson;
    @TableField("contact")
    /** 联系方式 */
    private String contact;
    @TableField("gmt_create_time")
    /** 创建时间 */
    private LocalDateTime gmtCreateTime;
    @TableField("gmt_update_time")
    /** 更新时间 */
    private LocalDateTime gmtUpdateTime;
    @TableField("update_by")
    /** 更新人 */
    private Long updateBy;
    @TableField("create_by")
    /** 创建人 */
    private Long createBy;
}
business/src/main/java/com/ycl/domain/form/ProjectInfoForm.java
New file
@@ -0,0 +1,168 @@
package com.ycl.domain.form;
import com.ycl.common.group.Add;
import com.ycl.common.group.Update;
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.system.domain.base.AbsForm;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 项目管理基础信息表表单
 *
 * @author flq
 * @since 2024-11-22
 */
@Data
@ApiModel(value = "ProjectInfo表单", description = "项目管理基础信息表表单")
public class ProjectInfoForm extends AbsForm {
    @NotBlank(message = "项目名称不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目名称")
    private String projectName;
    @NotBlank(message = "项目代码不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目代码")
    private String projectCode;
    @NotBlank(message = "建设内容不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("建设内容")
    private String content;
    @NotBlank(message = "项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他)")
    private String projectType;
    @NotBlank(message = "项目状态  (0未开工,1已开工,2已竣工,3暂停)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目状态  (0未开工,1已开工,2已竣工,3暂停)")
    private String projectStatus;
    @NotBlank(message = "资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债)")
    private String fundType;
    @NotBlank(message = "投资类别(0企业投资,1政府投资,2外商投资,3境外投资)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("投资类别(0企业投资,1政府投资,2外商投资,3境外投资)")
    private String investType;
    @NotBlank(message = "项目阶段(0储备规划阶段,  1项目前期阶段,  2实施阶段,  3竣工投用阶段)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目阶段(0储备规划阶段,  1项目前期阶段,  2实施阶段,  3竣工投用阶段)")
    private String projectPhase;
    @NotBlank(message = "标签不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("标签")
    private String tag;
    @NotNull(message = "主管部门(对应审批部门id)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("主管部门(对应审批部门id)")
    private Integer competentDepartment;
    @NotBlank(message = "行政区域不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("行政区域")
    private String areaCode;
    @NotBlank(message = "管理归口  (0基本建设(发改),  1更新改造(经信),  2单纯购置(发改),  3信息化(发改),  4其他投资)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("管理归口  (0基本建设(发改),  1更新改造(经信),  2单纯购置(发改),  3信息化(发改),  4其他投资)")
    private String managementCentralization;
    @NotBlank(message = "项目审批类型不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目审批类型")
    private String projectApprovalType;
    @NotBlank(message = "投资目录(?)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("投资目录(?)")
    private String investmentCatalogue;
    @NotBlank(message = "重点分类  (0省重点项目,  1遂宁市重点项目,  2.射洪市重点项目,  3.一般项目)不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("重点分类  (0省重点项目,  1遂宁市重点项目,  2.射洪市重点项目,  3.一般项目)")
    private String importanceType;
    @NotBlank(message = "年度投资计划不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("年度投资计划")
    private String year;
    @NotNull(message = "年度投资金额不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("年度投资金额")
    private BigDecimal yearInvestAmount;
    @NotNull(message = "立项时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("立项时间")
    private Date createProjectTime;
    @NotNull(message = "计划开工时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("计划开工时间")
    private Date planStartTime;
    @NotNull(message = "计划竣工时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("计划竣工时间")
    private Date planCompleteTime;
    @NotBlank(message = "中标单位不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("中标单位")
    private String winUnit;
    @NotBlank(message = "中标金额不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("中标金额")
    private String winAmount;
    @NotNull(message = "中标时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("中标时间")
    private Date winTime;
    @NotBlank(message = "详细地址不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("详细地址")
    private String projectAddress;
    @NotBlank(message = "经度不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("经度")
    private String longitude;
    @NotBlank(message = "纬度不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("纬度")
    private String latitude;
    @NotBlank(message = "项目业主单位不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目业主单位")
    private String projectOwnerUnit;
    @NotBlank(message = "项目联系人不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("项目联系人")
    private String projectContactPerson;
    @NotBlank(message = "联系方式不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("联系方式")
    private String contact;
    @NotNull(message = "创建时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("创建时间")
    private Date gmtCreateTime;
    @NotNull(message = "更新时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("更新时间")
    private Date gmtUpdateTime;
    @NotNull(message = "更新人不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("更新人")
    private Long updateBy;
    @NotNull(message = "创建人不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("创建人")
    private Long createBy;
    public static ProjectInfo getEntityByForm(@NonNull ProjectInfoForm form, ProjectInfo entity) {
        if(entity == null) {
          entity = new ProjectInfo();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
business/src/main/java/com/ycl/domain/query/ProjectInfoQuery.java
New file
@@ -0,0 +1,17 @@
package com.ycl.domain.query;
import com.ycl.system.domain.base.AbsQuery;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * 项目管理基础信息表查询
 *
 * @author flq
 * @since 2024-11-22
 */
@Data
@ApiModel(value = "ProjectInfo查询参数", description = "项目管理基础信息表查询参数")
public class ProjectInfoQuery extends AbsQuery {
}
business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java
New file
@@ -0,0 +1,164 @@
package com.ycl.domain.vo;
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.system.domain.base.AbsVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 项目管理基础信息表展示
 *
 * @author flq
 * @since 2024-11-22
 */
@Data
@ApiModel(value = "项目管理基础信息表响应数据", description = "项目管理基础信息表响应数据")
public class ProjectInfoVO extends AbsVo {
    /** 项目名称 */
    @ApiModelProperty("项目名称")
    private String projectName;
    /** 项目代码 */
    @ApiModelProperty("项目代码")
    private String projectCode;
    /** 建设内容 */
    @ApiModelProperty("建设内容")
    private String content;
    /** 项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他) */
    @ApiModelProperty("项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他)")
    private String projectType;
    /** 项目状态  (0未开工,1已开工,2已竣工,3暂停) */
    @ApiModelProperty("项目状态  (0未开工,1已开工,2已竣工,3暂停)")
    private String projectStatus;
    /** 资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债) */
    @ApiModelProperty("资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债)")
    private String fundType;
    /** 投资类别(0企业投资,1政府投资,2外商投资,3境外投资) */
    @ApiModelProperty("投资类别(0企业投资,1政府投资,2外商投资,3境外投资)")
    private String investType;
    /** 项目阶段(0储备规划阶段,  1项目前期阶段,  2实施阶段,  3竣工投用阶段) */
    @ApiModelProperty("项目阶段(0储备规划阶段,  1项目前期阶段,  2实施阶段,  3竣工投用阶段)")
    private String projectPhase;
    /** 标签 */
    @ApiModelProperty("标签")
    private String tag;
    /** 主管部门(对应审批部门id) */
    @ApiModelProperty("主管部门(对应审批部门id)")
    private Integer competentDepartment;
    /** 行政区域 */
    @ApiModelProperty("行政区域")
    private String areaCode;
    /** 管理归口  (0基本建设(发改),  1更新改造(经信),  2单纯购置(发改),  3信息化(发改),  4其他投资) */
    @ApiModelProperty("管理归口  (0基本建设(发改),  1更新改造(经信),  2单纯购置(发改),  3信息化(发改),  4其他投资)")
    private String managementCentralization;
    /** 项目审批类型 */
    @ApiModelProperty("项目审批类型")
    private String projectApprovalType;
    /** 投资目录(?) */
    @ApiModelProperty("投资目录(?)")
    private String investmentCatalogue;
    /** 重点分类  (0省重点项目,  1遂宁市重点项目,  2.射洪市重点项目,  3.一般项目) */
    @ApiModelProperty("重点分类  (0省重点项目,  1遂宁市重点项目,  2.射洪市重点项目,  3.一般项目)")
    private String importanceType;
    /** 年度投资计划 */
    @ApiModelProperty("年度投资计划")
    private String year;
    /** 年度投资金额 */
    @ApiModelProperty("年度投资金额")
    private BigDecimal yearInvestAmount;
    /** 立项时间 */
    @ApiModelProperty("立项时间")
    private Date createProjectTime;
    /** 计划开工时间 */
    @ApiModelProperty("计划开工时间")
    private Date planStartTime;
    /** 计划竣工时间 */
    @ApiModelProperty("计划竣工时间")
    private Date planCompleteTime;
    /** 中标单位 */
    @ApiModelProperty("中标单位")
    private String winUnit;
    /** 中标金额 */
    @ApiModelProperty("中标金额")
    private String winAmount;
    /** 中标时间 */
    @ApiModelProperty("中标时间")
    private Date winTime;
    /** 详细地址 */
    @ApiModelProperty("详细地址")
    private String projectAddress;
    /** 经度 */
    @ApiModelProperty("经度")
    private String longitude;
    /** 纬度 */
    @ApiModelProperty("纬度")
    private String latitude;
    /** 项目业主单位 */
    @ApiModelProperty("项目业主单位")
    private String projectOwnerUnit;
    /** 项目联系人 */
    @ApiModelProperty("项目联系人")
    private String projectContactPerson;
    /** 联系方式 */
    @ApiModelProperty("联系方式")
    private String contact;
    /** 创建时间 */
    @ApiModelProperty("创建时间")
    private Date gmtCreateTime;
    /** 更新时间 */
    @ApiModelProperty("更新时间")
    private Date gmtUpdateTime;
    /** 更新人 */
    @ApiModelProperty("更新人")
    private Long updateBy;
    /** 创建人 */
    @ApiModelProperty("创建人")
    private Long createBy;
    public static ProjectInfoVO getVoByEntity(@NonNull ProjectInfo entity, ProjectInfoVO vo) {
        if(vo == null) {
            vo = new ProjectInfoVO();
        }
        BeanUtils.copyProperties(entity, vo);
        return vo;
    }
}
business/src/main/java/com/ycl/domain/vue/ProjectInfoDialog.vue
New file
@@ -0,0 +1,315 @@
<template>
  <div>
    <el-dialog width="35%" :title="dialogTitle" @close="closeDialog" :visible.sync="dialogFormVisible" :destroy-on-close="true" :append-to-body="true" :close-on-click-modal="false">
      <el-form :model="projectInfoForm" :rules="projectInfoRules" ref="projectInfoForm">
        <el-form-item label="项目名称" :label-width="formLabelWidth" prop="projectName">
          <el-input v-model="projectInfoForm.projectName" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="项目代码" :label-width="formLabelWidth" prop="projectCode">
          <el-input v-model="projectInfoForm.projectCode" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="建设内容" :label-width="formLabelWidth" prop="content">
          <el-input v-model="projectInfoForm.content" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他)" :label-width="formLabelWidth" prop="projectType">
          <el-input v-model="projectInfoForm.projectType" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="项目状态  (0未开工,1已开工,2已竣工,3暂停)" :label-width="formLabelWidth" prop="projectStatus">
          <el-input v-model="projectInfoForm.projectStatus" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债)" :label-width="formLabelWidth" prop="fundType">
          <el-input v-model="projectInfoForm.fundType" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="投资类别(0企业投资,1政府投资,2外商投资,3境外投资)" :label-width="formLabelWidth" prop="investType">
          <el-input v-model="projectInfoForm.investType" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="项目阶段(0储备规划阶段,  1项目前期阶段,  2实施阶段,  3竣工投用阶段)" :label-width="formLabelWidth" prop="projectPhase">
          <el-input v-model="projectInfoForm.projectPhase" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="标签" :label-width="formLabelWidth" prop="tag">
          <el-input v-model="projectInfoForm.tag" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="主管部门(对应审批部门id)" :label-width="formLabelWidth" prop="competentDepartment">
          <el-input v-model="projectInfoForm.competentDepartment" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="行政区域" :label-width="formLabelWidth" prop="areaCode">
          <el-input v-model="projectInfoForm.areaCode" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="管理归口  (0基本建设(发改),  1更新改造(经信),  2单纯购置(发改),  3信息化(发改),  4其他投资)" :label-width="formLabelWidth" prop="managementCentralization">
          <el-input v-model="projectInfoForm.managementCentralization" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="项目审批类型" :label-width="formLabelWidth" prop="projectApprovalType">
          <el-input v-model="projectInfoForm.projectApprovalType" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="投资目录(?)" :label-width="formLabelWidth" prop="investmentCatalogue">
          <el-input v-model="projectInfoForm.investmentCatalogue" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="重点分类  (0省重点项目,  1遂宁市重点项目,  2.射洪市重点项目,  3.一般项目)" :label-width="formLabelWidth" prop="importanceType">
          <el-input v-model="projectInfoForm.importanceType" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="年度投资计划" :label-width="formLabelWidth" prop="year">
          <el-input v-model="projectInfoForm.year" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="年度投资金额" :label-width="formLabelWidth" prop="yearInvestAmount">
          <el-input v-model="projectInfoForm.yearInvestAmount" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="立项时间" :label-width="formLabelWidth" prop="createProjectTime">
          <el-input v-model="projectInfoForm.createProjectTime" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="计划开工时间" :label-width="formLabelWidth" prop="planStartTime">
          <el-input v-model="projectInfoForm.planStartTime" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="计划竣工时间" :label-width="formLabelWidth" prop="planCompleteTime">
          <el-input v-model="projectInfoForm.planCompleteTime" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="中标单位" :label-width="formLabelWidth" prop="winUnit">
          <el-input v-model="projectInfoForm.winUnit" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="中标金额" :label-width="formLabelWidth" prop="winAmount">
          <el-input v-model="projectInfoForm.winAmount" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="中标时间" :label-width="formLabelWidth" prop="winTime">
          <el-input v-model="projectInfoForm.winTime" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="详细地址" :label-width="formLabelWidth" prop="projectAddress">
          <el-input v-model="projectInfoForm.projectAddress" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="经度" :label-width="formLabelWidth" prop="longitude">
          <el-input v-model="projectInfoForm.longitude" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="纬度" :label-width="formLabelWidth" prop="latitude">
          <el-input v-model="projectInfoForm.latitude" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="项目业主单位" :label-width="formLabelWidth" prop="projectOwnerUnit">
          <el-input v-model="projectInfoForm.projectOwnerUnit" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="项目联系人" :label-width="formLabelWidth" prop="projectContactPerson">
          <el-input v-model="projectInfoForm.projectContactPerson" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="联系方式" :label-width="formLabelWidth" prop="contact">
          <el-input v-model="projectInfoForm.contact" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="创建时间" :label-width="formLabelWidth" prop="gmtCreateTime">
          <el-input v-model="projectInfoForm.gmtCreateTime" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="更新时间" :label-width="formLabelWidth" prop="gmtUpdateTime">
          <el-input v-model="projectInfoForm.gmtUpdateTime" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="更新人" :label-width="formLabelWidth" prop="updateBy">
          <el-input v-model="projectInfoForm.updateBy" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="创建人" :label-width="formLabelWidth" prop="createBy">
          <el-input v-model="projectInfoForm.createBy" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="closeDialog">取 消</el-button>
        <el-button type="primary" @click="addOrEditProjectInfo">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
  import {Message} from "element-ui";
  import {getDictDataByType} from "@/api/dict-data";
  import {addProjectInfo, editProjectInfo, getProjectInfos} from "@/api/projectInfo";
  export default {
    name: "ProjectInfoDialog",
    data() {
      return {
        formLabelWidth: '120px',
        projectInfoRules: {
            projectName: [
              { required: true, message: '请输入项目名称', trigger: 'blur' }
            ],
            projectCode: [
              { required: true, message: '请输入项目代码', trigger: 'blur' }
            ],
            content: [
              { required: true, message: '请输入建设内容', trigger: 'blur' }
            ],
            projectType: [
              { required: true, message: '请输入项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他)', trigger: 'blur' }
            ],
            projectStatus: [
              { required: true, message: '请输入项目状态  (0未开工,1已开工,2已竣工,3暂停)', trigger: 'blur' }
            ],
            fundType: [
              { required: true, message: '请输入资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债)', trigger: 'blur' }
            ],
            investType: [
              { required: true, message: '请输入投资类别(0企业投资,1政府投资,2外商投资,3境外投资)', trigger: 'blur' }
            ],
            projectPhase: [
              { required: true, message: '请输入项目阶段(0储备规划阶段,  1项目前期阶段,  2实施阶段,  3竣工投用阶段)', trigger: 'blur' }
            ],
            tag: [
              { required: true, message: '请输入标签', trigger: 'blur' }
            ],
            competentDepartment: [
              { required: true, message: '请输入主管部门(对应审批部门id)', trigger: 'blur' }
            ],
            areaCode: [
              { required: true, message: '请输入行政区域', trigger: 'blur' }
            ],
            managementCentralization: [
              { required: true, message: '请输入管理归口  (0基本建设(发改),  1更新改造(经信),  2单纯购置(发改),  3信息化(发改),  4其他投资)', trigger: 'blur' }
            ],
            projectApprovalType: [
              { required: true, message: '请输入项目审批类型', trigger: 'blur' }
            ],
            investmentCatalogue: [
              { required: true, message: '请输入投资目录(?)', trigger: 'blur' }
            ],
            importanceType: [
              { required: true, message: '请输入重点分类  (0省重点项目,  1遂宁市重点项目,  2.射洪市重点项目,  3.一般项目)', trigger: 'blur' }
            ],
            year: [
              { required: true, message: '请输入年度投资计划', trigger: 'blur' }
            ],
            yearInvestAmount: [
              { required: true, message: '请输入年度投资金额', trigger: 'blur' }
            ],
            createProjectTime: [
              { required: true, message: '请输入立项时间', trigger: 'blur' }
            ],
            planStartTime: [
              { required: true, message: '请输入计划开工时间', trigger: 'blur' }
            ],
            planCompleteTime: [
              { required: true, message: '请输入计划竣工时间', trigger: 'blur' }
            ],
            winUnit: [
              { required: true, message: '请输入中标单位', trigger: 'blur' }
            ],
            winAmount: [
              { required: true, message: '请输入中标金额', trigger: 'blur' }
            ],
            winTime: [
              { required: true, message: '请输入中标时间', trigger: 'blur' }
            ],
            projectAddress: [
              { required: true, message: '请输入详细地址', trigger: 'blur' }
            ],
            longitude: [
              { required: true, message: '请输入经度', trigger: 'blur' }
            ],
            latitude: [
              { required: true, message: '请输入纬度', trigger: 'blur' }
            ],
            projectOwnerUnit: [
              { required: true, message: '请输入项目业主单位', trigger: 'blur' }
            ],
            projectContactPerson: [
              { required: true, message: '请输入项目联系人', trigger: 'blur' }
            ],
            contact: [
              { required: true, message: '请输入联系方式', trigger: 'blur' }
            ],
            gmtCreateTime: [
              { required: true, message: '请输入创建时间', trigger: 'blur' }
            ],
            gmtUpdateTime: [
              { required: true, message: '请输入更新时间', trigger: 'blur' }
            ],
            updateBy: [
              { required: true, message: '请输入更新人', trigger: 'blur' }
            ],
            createBy: [
              { required: true, message: '请输入创建人', trigger: 'blur' }
            ],
      }
      }
    },
    computed: {
      dialogFormVisible: {
        get() {
          return this.$store.state.projectInfo.dialogFormVisible;
        },
        set(value) {
          this.$store.state.projectInfo.dialogFormVisible = value;
        }
      },
      dialogTitle: {
        get() {
          return this.$store.state.projectInfo.dialogTitle;
        },
        set(value) {
          this.$store.state.projectInfo.dialogTitle = value;
        }
      },
      projectInfoForm: {
        get() {
          return this.$store.state.projectInfo.projectInfoForm;
        },
        set(value) {
          this.$store.state.projectInfo.projectInfoForm = value;
        }
      }
    },
    mounted() {
    },
    methods: {
      getDictData(value) {
        let params = {
          keyword: value,
          dictTypeId: value,
          current: 1,
          size: 200
        }
        getDictDataByType(params).then(res => {
          this.dictTypeList = res.data.data
        })
      },
      refreshData() {
        var params = {
          "current": this.$store.state.projectInfo.currentPage,
          "size": this.$store.state.projectInfo.pageSize
        };
        // 刷新
        getProjectInfos(params).then((res) => {
          this.$store.state.projectInfo.tableData = res.data.data;
          this.$store.state.projectInfo.total = res.data.total;
          this.clearForm();
        })
      },
      clearForm() {
        Object.keys(this.projectInfoForm).forEach((key) => {
          this.projectInfoForm[key] = null;
        })
      },
      closeDialog() {
        this.$store.state.projectInfo.dialogFormVisible = false;
        this.clearForm();
      },
      addOrEditProjectInfo() {
        this.$refs["projectInfoForm"].validate((valid) => {
          if (valid) {
            if (this.dialogTitle === "添加项目管理基础信息表") {
              addProjectInfo(this.projectInfoForm).then((res) => {
                Message.success(res.data.msg);
                this.dialogFormVisible = false;
                this.refreshData();
              })
            } else {
              editProjectInfo(this.projectInfoForm).then((res) => {
                Message.success(res.data.msg);
                this.dialogFormVisible = false;
                this.refreshData();
              })
            }
        } else {
          console.log('error submit!!');
          return false;
        }
        });
      }
    }
  }
</script>
<style scoped>
</style>
business/src/main/java/com/ycl/domain/vue/ProjectInfoTable.vue
New file
@@ -0,0 +1,320 @@
<template>
  <div>
    <el-table
        :data="tableData"
        :class="{tableTopLevel1: topLevel === 1, tableTopLevel2: topLevel === 2, tableTopLevel3: topLevel === 3, tableTopLevelDefault: topLevel === -1}"
        row-key="id"
        border
        @selection-change="handleSelectionChange">
      <el-table-column
          type="selection"
          width="55">
      </el-table-column>
      <el-table-column
          prop="projectName"
          label="项目名称"
          >
      </el-table-column>
      <el-table-column
          prop="projectCode"
          label="项目代码"
          >
      </el-table-column>
      <el-table-column
          prop="content"
          label="建设内容"
          >
      </el-table-column>
      <el-table-column
          prop="projectType"
          label="项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他)"
          >
      </el-table-column>
      <el-table-column
          prop="projectStatus"
          label="项目状态  (0未开工,1已开工,2已竣工,3暂停)"
          >
      </el-table-column>
      <el-table-column
          prop="fundType"
          label="资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债)"
          >
      </el-table-column>
      <el-table-column
          prop="investType"
          label="投资类别(0企业投资,1政府投资,2外商投资,3境外投资)"
          >
      </el-table-column>
      <el-table-column
          prop="projectPhase"
          label="项目阶段(0储备规划阶段,  1项目前期阶段,  2实施阶段,  3竣工投用阶段)"
          >
      </el-table-column>
      <el-table-column
          prop="tag"
          label="标签"
          >
      </el-table-column>
      <el-table-column
          prop="competentDepartment"
          label="主管部门(对应审批部门id)"
          >
      </el-table-column>
      <el-table-column
          prop="areaCode"
          label="行政区域"
          >
      </el-table-column>
      <el-table-column
          prop="managementCentralization"
          label="管理归口  (0基本建设(发改),  1更新改造(经信),  2单纯购置(发改),  3信息化(发改),  4其他投资)"
          >
      </el-table-column>
      <el-table-column
          prop="projectApprovalType"
          label="项目审批类型"
          >
      </el-table-column>
      <el-table-column
          prop="investmentCatalogue"
          label="投资目录(?)"
          >
      </el-table-column>
      <el-table-column
          prop="importanceType"
          label="重点分类  (0省重点项目,  1遂宁市重点项目,  2.射洪市重点项目,  3.一般项目)"
          >
      </el-table-column>
      <el-table-column
          prop="year"
          label="年度投资计划"
          >
      </el-table-column>
      <el-table-column
          prop="yearInvestAmount"
          label="年度投资金额"
          >
      </el-table-column>
      <el-table-column
          prop="createProjectTime"
          label="立项时间"
          >
      </el-table-column>
      <el-table-column
          prop="planStartTime"
          label="计划开工时间"
          >
      </el-table-column>
      <el-table-column
          prop="planCompleteTime"
          label="计划竣工时间"
          >
      </el-table-column>
      <el-table-column
          prop="winUnit"
          label="中标单位"
          >
      </el-table-column>
      <el-table-column
          prop="winAmount"
          label="中标金额"
          >
      </el-table-column>
      <el-table-column
          prop="winTime"
          label="中标时间"
          >
      </el-table-column>
      <el-table-column
          prop="projectAddress"
          label="详细地址"
          >
      </el-table-column>
      <el-table-column
          prop="longitude"
          label="经度"
          >
      </el-table-column>
      <el-table-column
          prop="latitude"
          label="纬度"
          >
      </el-table-column>
      <el-table-column
          prop="projectOwnerUnit"
          label="项目业主单位"
          >
      </el-table-column>
      <el-table-column
          prop="projectContactPerson"
          label="项目联系人"
          >
      </el-table-column>
      <el-table-column
          prop="contact"
          label="联系方式"
          >
      </el-table-column>
      <el-table-column
          prop="gmtCreateTime"
          label="创建时间"
          >
      </el-table-column>
      <el-table-column
          prop="gmtUpdateTime"
          label="更新时间"
          >
      </el-table-column>
      <el-table-column
          prop="updateBy"
          label="更新人"
          >
      </el-table-column>
      <el-table-column
          prop="createBy"
          label="创建人"
          >
      </el-table-column>
      <el-table-column
          label="操作">
        <template slot-scope="scope">
          <el-button v-if="editShow" type="primary" @click="editProjectInfo(scope.row.id)" size="mini">修改</el-button>
          <el-button v-if="delShow" type="primary" @click="deleteProjectInfo(scope.row.id)" size="mini">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <PageC
            :top-level="topLevel"
            :handleSizeChange="handleSizeChange"
            :handleCurrentChange="handleCurrentChange"
            :pageSize="pageSize"
            :total="total"
            :currentPage="currentPage"></PageC>
  </div>
</template>
<script>
  import PageC from "@/components/PageC";
  import {deleteProjectInfoById, getProjectInfos} from "@/api/projectInfo";
  import {Message} from "element-ui";
  export default {
    name: "ProjectInfoTable",
    components: {PageC},
    computed: {
      tableData: {
        get() {
          return this.$store.state.projectInfo.tableData;
        },
        set(value) {
          this.$store.state.projectInfo.tableData = value;
        }
      },
      // 选中行id
      multipleSelection: {
        get() {
          return this.$store.state.projectInfo.multipleSelection;
        },
        set(value) {
          this.$store.state.projectInfo.multipleSelection = value;
        }
      },
      total: {
        get() {
          return this.$store.state.projectInfo.total;
        },
        set(value) {
          this.$store.state.projectInfo.total = value;
        }
      },
      pageSize: {
        get() {
          return this.$store.state.projectInfo.pageSize;
        },
        set(value) {
          this.$store.state.projectInfo.pageSize = value;
        }
      },
      currentPage: {
        get() {
          return this.$store.state.projectInfo.currentPage;
        },
        set(value) {
          this.$store.state.projectInfo.currentPage = value;
        }
      }
    },
    props: {
      topLevel: {
        required: false,
        default: -1,
        type: Number
      },
      editShow: {
        required: true,
        default: false,
        type: Boolean
      },
      delShow: {
        required: true,
        default: false,
        type: Boolean
      },
    },
    methods: {
      handleSelectionChange(val) {
        this.multipleSelection = val.map((item) => {return item.id;})
      },
      getProjectInfos(params) {
        if (! params) {
          params = {
            "current": this.currentPage,
            "size": this.pageSize
          };
        } else {
          params.current = this.currentPage;
          params.size = this.pageSize;
        }
        // 刷新
        getProjectInfos(params).then((res) => {
          this.tableData = res.data.data;
          this.total = res.data.total;
        })
      },
      editProjectInfo(id) {
        this.$store.dispatch("projectInfo/editProjectInfo", id);
      },
      deleteProjectInfo(id) {
        this.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          deleteProjectInfoById(id).then((res) => {
            Message.success(res.data.msg);
            this.getProjectInfos();
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消删除'
          });
        });
      },
      handleSizeChange(val) {
        this.pageSize = val;
        this.getProjectInfos();
      },
      handleCurrentChange(val) {
        this.currentPage = val;
        this.getProjectInfos();
      }
    },
    created() {
      this.getProjectInfos();
    }
  }
</script>
<style scoped>
</style>
business/src/main/java/com/ycl/domain/vue/ProjectInfoView.vue
New file
@@ -0,0 +1,102 @@
<template>
  <div class="view">
    <div class="search-warp">
      <el-form :inline="true" :model="searchForm" class="demo-form-inline">
        <el-form-item>
          <el-button size="small" type="primary" @click="search">查找</el-button>
        </el-form-item>
      </el-form>
    </div>
    <OperateC
            :top-level="topLevel"
            :add="addProjectInfo"
            :edit="editProjectInfo"
            :remove="removeProjectInfo"
            :add-show="this.$getButtonAuth('projectInfo:add')"
            :remove-show="this.$getButtonAuth('projectInfo:del:batch')"
    ></OperateC>
    <ProjectInfoTable
            :top-level="topLevel"
            ref="ProjectInfoTableRef"
            :edit-show="this.$getButtonAuth('projectInfo:edit')"
            :del-show="this.$getButtonAuth('projectInfo:del')"
    ></ProjectInfoTable>
    <ProjectInfoDialog></ProjectInfoDialog>
  </div>
</template>
<script>
  import ProjectInfoDialog from "@/components/dialog/ProjectInfoDialog";
  import OperateC from "@/components/OperateC";
  import ProjectInfoTable from "@/components/table/ProjectInfoTable";
  import {deleteProjectInfoByIds, getProjectInfos} from "@/api/projectInfo";
  export default {
    name: "ProjectInfoView",
    components: {ProjectInfoDialog, OperateC, ProjectInfoTable},
    data() {
      return {
        searchForm: {
        },
        topLevel: -1
      }
    },
    methods: {
      search() {
        this.$refs.ProjectInfoTableRef.getProjectInfos(this.searchForm)
      },
      addProjectInfo() {
        let params = {
          dialogFormVisible: true,
          dialogTitle: "添加项目管理基础信息表"
        }
        this.$store.commit("projectInfo/openDialogForm", params);
      },
      editProjectInfo() {
        let selected = this.$store.state.projectInfo.multipleSelection;
        if (selected.length < 1) {
          this.$message.warning("你还没有选中数据哦!");
          return;
        }
        if (selected.length > 1) {
          this.$message.warning("一次只能修改一条数据哦!")
          return;
        }
        this.$store.dispatch("projectInfo/editProjectInfo", selected[0]);
      },
      removeProjectInfo() {
        let selected = this.$store.state.projectInfo.multipleSelection;
        if (selected.length < 1) {
          this.$message.warning("请先选择要删除的数据哦!");
          return;
        }
        this.$confirm('确定删除吗?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          deleteProjectInfoByIds(selected).then((res) => {
            this.$message.success(res.data.msg);
            // 刷新
            let params = {
              "current": this.$store.state.projectInfo.currentPage,
              "size": this.$store.state.projectInfo.pageSize
            };
            getProjectInfos(params).then((res) => {
              this.$store.state.projectInfo.tableData = res.data.data;
              this.$store.state.projectInfo.total = res.data.total;
            })
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消删除'
          });
        });
      },
    }
  }
</script>
<style scoped>
</style>
business/src/main/java/com/ycl/domain/vue/index.js
New file
@@ -0,0 +1,79 @@
import {getProjectInfoById} from "@/api/projectInfo";
export default {
    namespaced: true,
    state: {
        dialogFormVisible: false,
        dialogTitle: '',
        pageSize: 10,
        currentPage: 1,
        total: 0,
        // 修改添加的表单数据
        projectInfoForm: {
            id: null,
            projectName: "" ,
            projectCode: "" ,
            content: "" ,
            projectType: "" ,
            projectStatus: "" ,
            fundType: "" ,
            investType: "" ,
            projectPhase: "" ,
            tag: "" ,
            competentDepartment: null ,
            areaCode: "" ,
            managementCentralization: "" ,
            projectApprovalType: "" ,
            investmentCatalogue: "" ,
            importanceType: "" ,
            year: "" ,
            yearInvestAmount: null ,
            createProjectTime: null ,
            planStartTime: null ,
            planCompleteTime: null ,
            winUnit: "" ,
            winAmount: "" ,
            winTime: null ,
            projectAddress: "" ,
            longitude: "" ,
            latitude: "" ,
            projectOwnerUnit: "" ,
            projectContactPerson: "" ,
            contact: "" ,
            gmtCreateTime: null ,
            gmtUpdateTime: null ,
            updateBy: null ,
            createBy: null ,
        },
        // 表格数据
        tableData: [],
        // 表格选中数据
        multipleSelection: [],
    },
    getters: {},
    mutations: {
        openDialogForm(state, value) {
            state.dialogFormVisible = value.dialogFormVisible;
            state.dialogTitle = value.dialogTitle;
        },
        EditProjectInfo(state, value) {
            state.dialogFormVisible = value.dialogFormVisible;
            state.dialogTitle = value.dialogTitle;
            Object.keys(state.projectInfoForm).forEach((key) => {
                state.projectInfoForm[key] = value.projectInfoForm[key]
            })
        }
    },
    actions: {
        editProjectInfo(state, id) {
            getProjectInfoById(id).then((res) => {
                var params = {
                    dialogFormVisible: true,
                    dialogTitle: "修改项目管理基础信息表",
                    projectInfoForm: res.data.data
                }
                state.commit("EditProjectInfo", params);
            })
        }
    },
}
business/src/main/java/com/ycl/domain/vue/projectInfo.js
New file
@@ -0,0 +1,61 @@
import axios from "./request";
// 获取项目管理基础信息表分页
export const getProjectInfos = (params) => {
    return axios({
        url: "/api/project-info/page",
        method: "GET",
        params: params
    })
}
// 获取项目管理基础信息表列表
export const getProjectInfoList = () => {
    return axios({
        url: "/api/project-info/list",
        method: "GET"
    })
}
// 通过id获取项目管理基础信息表
export const getProjectInfoById = (params) => {
    return axios({
        url: "/api/project-info/" + params,
        method: "GET"
    })
}
// 通过id删除项目管理基础信息表
export const deleteProjectInfoById = (params) => {
    return axios({
        url: "/api/project-info/" + params,
        method: "DELETE"
    })
}
// 批量删除项目管理基础信息表
export const deleteProjectInfoByIds = (params) => {
    return axios({
        url: "/api/project-info/batch",
        method: "DELETE",
        data: params
    })
}
// 修改项目管理基础信息表
export const editProjectInfo = (params) => {
    return axios({
        url: "/api/project-info/",
        method: "PUT",
        data: params
    })
}
// 添加项目管理基础信息表
export const addProjectInfo = (params) => {
    return axios({
        url: "/api/project-info/",
        method: "POST",
        data: params
    })
}
business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
New file
@@ -0,0 +1,32 @@
package com.ycl.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.query.ProjectInfoQuery;
import com.ycl.domain.vo.ProjectInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * 项目管理基础信息表 Mapper 接口
 *
 * @author flq
 * @since 2024-11-22
 */
@Mapper
public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
    /**
     * id查找项目管理基础信息表
     * @param id
     * @return
     */
    ProjectInfoVO getById(Integer id);
    /**
    *  分页
    */
    IPage getPage(IPage page, @Param("query") ProjectInfoQuery query);
}
business/src/main/java/com/ycl/service/ProjectInfoService.java
New file
@@ -0,0 +1,66 @@
package com.ycl.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.common.base.Result;
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.form.ProjectInfoForm;
import com.ycl.domain.query.ProjectInfoQuery;
import java.util.List;
/**
 * 项目管理基础信息表 服务类
 *
 * @author flq
 * @since 2024-11-22
 */
public interface ProjectInfoService extends IService<ProjectInfo> {
    /**
     * 添加
     * @param form
     * @return
     */
    Result add(ProjectInfoForm form);
    /**
     * 修改
     * @param form
     * @return
     */
    Result update(ProjectInfoForm form);
    /**
     * 批量删除
     * @param ids
     * @return
     */
    Result remove(List<String> ids);
    /**
     * id删除
     * @param id
     * @return
     */
    Result removeById(String id);
    /**
     * 分页查询
     * @param query
     * @return
     */
    Result page(ProjectInfoQuery query);
    /**
     * 根据id查找
     * @param id
     * @return
     */
    Result detail(Integer id);
    /**
     * 列表
     * @return
     */
    Result all();
}
business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
New file
@@ -0,0 +1,119 @@
package com.ycl.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.common.base.Result;
import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.form.ProjectInfoForm;
import com.ycl.domain.query.ProjectInfoQuery;
import com.ycl.domain.vo.ProjectInfoVO;
import com.ycl.framework.utils.PageUtil;
import com.ycl.mapper.ProjectInfoMapper;
import com.ycl.service.ProjectInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 项目管理基础信息表 服务实现类
 *
 * @author flq
 * @since 2024-11-22
 */
@Service
@RequiredArgsConstructor
public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, ProjectInfo> implements ProjectInfoService {
    private final ProjectInfoMapper projectInfoMapper;
    /**
     * 添加
     * @param form
     * @return
     */
    @Override
    public Result add(ProjectInfoForm form) {
        ProjectInfo entity = ProjectInfoForm.getEntityByForm(form, null);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
    /**
     * 修改
     * @param form
     * @return
     */
    @Override
    public Result update(ProjectInfoForm form) {
        ProjectInfo entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        baseMapper.updateById(entity);
        return Result.ok("修改成功");
    }
    /**
     * 批量删除
     * @param ids
     * @return
     */
    @Override
    public Result remove(List<String> ids) {
        baseMapper.deleteBatchIds(ids);
        return Result.ok("删除成功");
    }
    /**
     * id删除
     * @param id
     * @return
     */
    @Override
    public Result removeById(String id) {
        baseMapper.deleteById(id);
        return Result.ok("删除成功");
    }
    /**
     * 分页查询
     * @param query
     * @return
     */
    @Override
    public Result page(ProjectInfoQuery query) {
        IPage<ProjectInfoVO> page = PageUtil.getPage(query, ProjectInfoVO.class);
        baseMapper.getPage(page, query);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    /**
     * 根据id查找
     * @param id
     * @return
     */
    @Override
    public Result detail(Integer id) {
        ProjectInfoVO vo = baseMapper.getById(id);
        Assert.notNull(vo, "记录不存在");
        return Result.ok().data(vo);
    }
    /**
     * 列表
     * @return
     */
    @Override
    public Result all() {
        List<ProjectInfo> entities = baseMapper.selectList(null);
        List<ProjectInfoVO> vos = entities.stream()
                .map(entity -> ProjectInfoVO.getVoByEntity(entity, null))
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
}
business/src/main/resources/mapper/ProjectInfoMapper.xml
New file
@@ -0,0 +1,133 @@
<?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.ycl.mapper.ProjectInfoMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProjectInfoVO">
        <result column="project_name" property="projectName" />
        <result column="project_code" property="projectCode" />
        <result column="content" property="content" />
        <result column="project_type" property="projectType" />
        <result column="project_status" property="projectStatus" />
        <result column="fund_type" property="fundType" />
        <result column="invest_type" property="investType" />
        <result column="project_phase" property="projectPhase" />
        <result column="tag" property="tag" />
        <result column="competent_department" property="competentDepartment" />
        <result column="area_code" property="areaCode" />
        <result column="management_centralization" property="managementCentralization" />
        <result column="project_approval_type" property="projectApprovalType" />
        <result column="investment_catalogue" property="investmentCatalogue" />
        <result column="importance_type" property="importanceType" />
        <result column="year" property="year" />
        <result column="year_invest_amount" property="yearInvestAmount" />
        <result column="create_project_time" property="createProjectTime" />
        <result column="plan_start_time" property="planStartTime" />
        <result column="plan_complete_time" property="planCompleteTime" />
        <result column="win_unit" property="winUnit" />
        <result column="win_amount" property="winAmount" />
        <result column="win_time" property="winTime" />
        <result column="project_address" property="projectAddress" />
        <result column="longitude" property="longitude" />
        <result column="latitude" property="latitude" />
        <result column="project_owner_unit" property="projectOwnerUnit" />
        <result column="project_contact_person" property="projectContactPerson" />
        <result column="contact" property="contact" />
        <result column="gmt_create_time" property="gmtCreateTime" />
        <result column="gmt_update_time" property="gmtUpdateTime" />
        <result column="update_by" property="updateBy" />
        <result column="create_by" property="createBy" />
    </resultMap>
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            TPI.project_name,
            TPI.project_code,
            TPI.content,
            TPI.project_type,
            TPI.project_status,
            TPI.fund_type,
            TPI.invest_type,
            TPI.project_phase,
            TPI.tag,
            TPI.competent_department,
            TPI.area_code,
            TPI.management_centralization,
            TPI.project_approval_type,
            TPI.investment_catalogue,
            TPI.importance_type,
            TPI.year,
            TPI.year_invest_amount,
            TPI.create_project_time,
            TPI.plan_start_time,
            TPI.plan_complete_time,
            TPI.win_unit,
            TPI.win_amount,
            TPI.win_time,
            TPI.project_address,
            TPI.longitude,
            TPI.latitude,
            TPI.project_owner_unit,
            TPI.project_contact_person,
            TPI.contact,
            TPI.gmt_create_time,
            TPI.gmt_update_time,
            TPI.update_by,
            TPI.create_by,
            TPI.id
        FROM
            t_project_info TPI
        WHERE
            TPI.id = #{id} AND TPI.deleted = 0
    </select>
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
            TPI.project_name,
            TPI.project_code,
            TPI.content,
            TPI.project_type,
            TPI.project_status,
            TPI.fund_type,
            TPI.invest_type,
            TPI.project_phase,
            TPI.tag,
            TPI.competent_department,
            TPI.area_code,
            TPI.management_centralization,
            TPI.project_approval_type,
            TPI.investment_catalogue,
            TPI.importance_type,
            TPI.year,
            TPI.year_invest_amount,
            TPI.create_project_time,
            TPI.plan_start_time,
            TPI.plan_complete_time,
            TPI.win_unit,
            TPI.win_amount,
            TPI.win_time,
            TPI.project_address,
            TPI.longitude,
            TPI.latitude,
            TPI.project_owner_unit,
            TPI.project_contact_person,
            TPI.contact,
            TPI.gmt_create_time,
            TPI.gmt_update_time,
            TPI.update_by,
            TPI.create_by,
            TPI.id
        FROM
            t_project_info TPI
        WHERE
            TPI.deleted = 0
    </select>
</mapper>