Browse Source

Merge branch '20221014_sun业务新增项目申报模块' of sckj/mz-cloud into master

15143018065 1 year ago
parent
commit
fe1b73703a
47 changed files with 8293 additions and 2 deletions
  1. 26 0
      ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/XmsbFwzxStatus.java
  2. 25 0
      ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/XmsbStatus.java
  3. 26 0
      ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/XmsbSzStatus.java
  4. 26 0
      ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/XmsbYldyStatus.java
  5. 1 1
      ruoyi-modules/mz-business-lrgl/src/main/java/com/ruoyi/business/service/impl/ZwywLrSlhgzServiceImpl.java
  6. 1 1
      ruoyi-modules/mz-business-lrgl/src/main/resources/mapper/business/ZwywLrSlhgzMapper.xml
  7. 64 0
      ruoyi-modules/mz-business-xmsb/pom.xml
  8. 215 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/domain/ZwywXmsbFwzx.java
  9. 290 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/domain/ZwywXmsbJgjs.java
  10. 269 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/domain/ZwywXmsbSz.java
  11. 229 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/domain/ZwywXmsbYldy.java
  12. 22 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/mapper/ZwywXmsbFwzxMapper.java
  13. 22 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/mapper/ZwywXmsbJgjsMapper.java
  14. 24 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/mapper/ZwywXmsbSzMapper.java
  15. 22 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/mapper/ZwywXmsbYldyMapper.java
  16. 58 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/IZwywXmsbFwzxService.java
  17. 58 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/IZwywXmsbJgjsService.java
  18. 58 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/IZwywXmsbSzService.java
  19. 58 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/IZwywXmsbYldyService.java
  20. 142 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/impl/ZwywXmsbFwzxServiceImpl.java
  21. 140 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/impl/ZwywXmsbJgjsServiceImpl.java
  22. 145 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/impl/ZwywXmsbSzServiceImpl.java
  23. 167 0
      ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/impl/ZwywXmsbYldyServiceImpl.java
  24. 54 0
      ruoyi-modules/mz-business-xmsb/src/main/resources/mapper/business/ZwywXmsbFwzxMapper.xml
  25. 68 0
      ruoyi-modules/mz-business-xmsb/src/main/resources/mapper/business/ZwywXmsbJgjsMapper.xml
  26. 60 0
      ruoyi-modules/mz-business-xmsb/src/main/resources/mapper/business/ZwywXmsbSzMapper.xml
  27. 58 0
      ruoyi-modules/mz-business-xmsb/src/main/resources/mapper/business/ZwywXmsbYldyMapper.xml
  28. 7 0
      ruoyi-modules/mz-business/pom.xml
  29. 117 0
      ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywXmsbFwzxController.java
  30. 117 0
      ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywXmsbJgjsController.java
  31. 117 0
      ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywXmsbSzController.java
  32. 117 0
      ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywXmsbYldyController.java
  33. 1 0
      ruoyi-modules/pom.xml
  34. 60 0
      ruoyi-ui/src/api/business/xmsb/fwzx.js
  35. 60 0
      ruoyi-ui/src/api/business/xmsb/jgjs.js
  36. 60 0
      ruoyi-ui/src/api/business/xmsb/sz.js
  37. 60 0
      ruoyi-ui/src/api/business/xmsb/yldy.js
  38. 596 0
      ruoyi-ui/src/views/business/xmsb/fwzx/index.vue
  39. 638 0
      ruoyi-ui/src/views/business/xmsb/fwzxsh/index.vue
  40. 699 0
      ruoyi-ui/src/views/business/xmsb/jgjs/index.vue
  41. 702 0
      ruoyi-ui/src/views/business/xmsb/jgjssh/index.vue
  42. 0 0
      ruoyi-ui/src/views/business/xmsb/lnst/index.vue
  43. 0 0
      ruoyi-ui/src/views/business/xmsb/lnstsh/index.vue
  44. 626 0
      ruoyi-ui/src/views/business/xmsb/sz/index.vue
  45. 657 0
      ruoyi-ui/src/views/business/xmsb/szsh/index.vue
  46. 611 0
      ruoyi-ui/src/views/business/xmsb/yldy/index.vue
  47. 720 0
      ruoyi-ui/src/views/business/xmsb/yldysh/index.vue

+ 26 - 0
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/XmsbFwzxStatus.java

@@ -0,0 +1,26 @@
+package com.ruoyi.system.api.enums;
+
+public enum XmsbFwzxStatus {
+    CG("0", "草稿"), XZSH("1", "待乡镇政府审核"),
+    MZSH("2", "待民政部门审核") ,SHTG("3", "审核通过")
+    , SHBTG("4", "审核不通过");
+
+    private final String code;
+    private final String info;
+
+    XmsbFwzxStatus(String code, String info)
+    {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getInfo()
+    {
+        return info;
+    }
+}

+ 25 - 0
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/XmsbStatus.java

@@ -0,0 +1,25 @@
+package com.ruoyi.system.api.enums;
+
+public enum XmsbStatus {
+    CG("0", "草稿"), DSH("1", "待审核"), SHTG("2", "审核通过")
+    , SHBTG("3", "审核不通过");
+
+    private final String code;
+    private final String info;
+
+    XmsbStatus(String code, String info)
+    {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getInfo()
+    {
+        return info;
+    }
+}

+ 26 - 0
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/XmsbSzStatus.java

@@ -0,0 +1,26 @@
+package com.ruoyi.system.api.enums;
+
+public enum XmsbSzStatus {
+    CG("0", "草稿"), JGSH("1", "待机构审核"),
+    MZSH("2", "待民政部门审核") ,SHTG("3", "审核通过")
+    , SHBTG("4", "审核不通过");
+
+    private final String code;
+    private final String info;
+
+    XmsbSzStatus(String code, String info)
+    {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getInfo()
+    {
+        return info;
+    }
+}

+ 26 - 0
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/enums/XmsbYldyStatus.java

@@ -0,0 +1,26 @@
+package com.ruoyi.system.api.enums;
+
+public enum XmsbYldyStatus {
+    CG("0", "草稿"), CWHSH("1", "待村民委员会审核"), XZSH("2", "待乡镇政府审核"),
+    MZSH("3", "待民政部门审核") ,SHTG("4", "审核通过")
+    , SHBTG("5", "审核不通过");
+
+    private final String code;
+    private final String info;
+
+    XmsbYldyStatus(String code, String info)
+    {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getInfo()
+    {
+        return info;
+    }
+}

+ 1 - 1
ruoyi-modules/mz-business-lrgl/src/main/java/com/ruoyi/business/service/impl/ZwywLrSlhgzServiceImpl.java

@@ -66,7 +66,7 @@ public class ZwywLrSlhgzServiceImpl implements IZwywLrSlhgzService
     @Override
     public List<ZwywLrSlhgz> selectPortalZwywLrSlhgzList(ZwywLrSlhgz zwywLrSlhgz)
     {
-        if (StringUtils.isEmpty(zwywLrSlhgz.getXm()) || StringUtils.isEmpty(zwywLrSlhgz.getLxdh())) {
+        if (StringUtils.isEmpty(zwywLrSlhgz.getTbrXm()) || StringUtils.isEmpty(zwywLrSlhgz.getTbrSjhm())) {
             throw new ServiceException("请输入姓名和联系电话");
         }
         return zwywLrSlhgzMapper.selectPortalZwywLrSlhgzList(zwywLrSlhgz);

+ 1 - 1
ruoyi-modules/mz-business-lrgl/src/main/resources/mapper/business/ZwywLrSlhgzMapper.xml

@@ -72,7 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectPortalZwywLrSlhgzList" parameterType="ZwywLrSlhgz" resultMap="ZwywLrSlhgzResult">
         <include refid="selectZwywLrSlhgzVo"/>
         <where>
-            <if test="tbrXm != null and tbrXm != ''"> and tbr_xm = #{tbrSjhm} </if>
+            <if test="tbrXm != null and tbrXm != ''"> and tbr_xm = #{tbrXm} </if>
             <if test="tbrSjhm != null  and tbrSjhm != ''"> and tbr_sjhm = #{tbrSjhm}</if>
         </where>
     </select>

+ 64 - 0
ruoyi-modules/mz-business-xmsb/pom.xml

@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.ruoyi</groupId>
+        <artifactId>ruoyi-modules</artifactId>
+        <version>3.6.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruoyi-modules-business-xmsb</artifactId>
+
+    <description>
+        ruoyi-modules-business-xmsb 项目申报功能
+    </description>
+
+    <dependencies>
+
+        <!-- SpringBoot Web容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!-- Mysql Connector -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common DataSource -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-datasource</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common DataScope -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-datascope</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common Log -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-log</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common Swagger -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-swagger</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-modules-system-ext</artifactId>
+            <version>${ruoyi.version}</version>
+        </dependency>
+    </dependencies>
+
+
+</project>

+ 215 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/domain/ZwywXmsbFwzx.java

@@ -0,0 +1,215 @@
+package com.ruoyi.business.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.ruoyi.system.validate.DictV;
+import com.ruoyi.system.validate.MobileV;
+import com.ruoyi.system.validate.NumberV;
+import com.ruoyi.system.validate.group.AddGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+
+/**
+ * 项目申报综合嵌入式社区居家养老服务中心项目信息对象 zwyw_xmsb_fwzx
+ *
+ * @author sun
+ * @date 2022-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("zwyw_xmsb_fwzx")
+@ApiModel("项目申报综合嵌入式社区居家养老服务中心项目信息")
+public class ZwywXmsbFwzx extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键标识 */
+    @Excel(name = "主键标识")
+    @TableId(value = "id",type = IdType.ASSIGN_UUID)
+    @ApiModelProperty(value = "主键标识")
+    private String id;
+
+    /** 申报单位 */
+    @Excel(name = "申报单位")
+    @ApiModelProperty(value = "申报单位", required = true)
+    @NotBlank(message = "{申报单位}",groups = AddGroup.class)
+    @Size(min = 1, max = 100, message = "{申报单位}")
+
+    private String sbdw;
+
+    /** 项目名称 */
+    @Excel(name = "项目名称")
+    @ApiModelProperty(value = "项目名称", required = true)
+    @NotBlank(message = "{项目名称}",groups = AddGroup.class)
+    @Size(min = 1, max = 120, message = "{项目名称}")
+
+    private String xmmc;
+
+    /** 项目地址 */
+    @Excel(name = "项目地址")
+    @ApiModelProperty(value = "项目地址", required = true)
+    @NotBlank(message = "{项目地址}",groups = AddGroup.class)
+    @Size(min = 1, max = 100, message = "{项目地址}")
+
+    private String xmdz;
+
+    /** 联系人 */
+    @Excel(name = "联系人")
+    @ApiModelProperty(value = "联系人", required = true)
+    @NotBlank(message = "{联系人}",groups = AddGroup.class)
+    @Size(min = 1, max = 72, message = "{联系人}")
+
+    private String lxr;
+
+    /** 手机号 */
+    @Excel(name = "手机号")
+    @ApiModelProperty(value = "手机号", required = true)
+    @NotBlank(message = "{手机号}",groups = AddGroup.class)
+    @MobileV(message = "{手机号}")
+    private String sjh;
+
+    /** 建筑面积 */
+    @Excel(name = "建筑面积")
+    @ApiModelProperty(value = "建筑面积", required = true)
+    @NotBlank(message = "{建筑面积}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{建筑面积}")
+    @Digits(integer = 10,fraction = 2,message = "{建筑面积}")
+    private String jzmj;
+
+    /** 床位总数 */
+    @Excel(name = "床位总数")
+    @ApiModelProperty(value = "床位总数", required = true)
+    @NotBlank(message = "{床位总数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{床位总数}")
+    @NumberV(message = "{床位总数}")
+    private String cwzs;
+
+    /** 护理型床位数 */
+    @Excel(name = "护理型床位数")
+    @ApiModelProperty(value = "护理型床位数", required = true)
+    @NotBlank(message = "{护理型床位数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{护理型床位数}")
+    @NumberV(message = "{护理型床位数}")
+    private String hlxcws;
+
+    /** 建成后拟采取运营模式(XZ100) */
+    @Excel(name = "建成后拟采取运营模式", dictType = "XZ100")
+    @ApiModelProperty(value = "建成后拟采取运营模式(XZ100)", required = true)
+    @NotBlank(message = "{建成后拟采取运营模式}",groups = AddGroup.class)
+    @DictV(type = "XZ100",message = "{建成后拟采取运营模式}")
+    private String yyms;
+
+    /** 建设期开始 */
+    @Excel(name = "建设期开始")
+    @ApiModelProperty(value = "建设期开始", required = true)
+    @NotBlank(message = "{建设期开始}",groups = AddGroup.class)
+    @Size(min = 1, max = 6, message = "{建设期开始}")
+
+    private String jsqks;
+
+    /** 建设期结束 */
+    @Excel(name = "建设期结束")
+    @ApiModelProperty(value = "建设期结束", required = true)
+    @NotBlank(message = "{建设期结束}",groups = AddGroup.class)
+    @Size(min = 1, max = 6, message = "{建设期结束}")
+
+    private String jsqjs;
+
+    /** 总投资 */
+    @Excel(name = "总投资")
+    @ApiModelProperty(value = "总投资", required = true)
+    @NotBlank(message = "{总投资}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{总投资}")
+    @Digits(integer = 10,fraction = 2,message = "{总投资}")
+    private String ztz;
+
+    /** 资金来源(地方匹配资金) */
+    @Excel(name = "资金来源(地方匹配资金)")
+    @ApiModelProperty(value = "资金来源(地方匹配资金)", required = true)
+    @NotBlank(message = "{资金来源(地方匹配资金)}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{资金来源(地方匹配资金)}")
+    @Digits(integer = 10,fraction = 2,message = "{资金来源(地方匹配资金)}")
+    private String dfppzj;
+
+    /** 资金来源(申请省级资金) */
+    @Excel(name = "资金来源(申请省级资金)")
+    @ApiModelProperty(value = "资金来源(申请省级资金)", required = true)
+    @NotBlank(message = "{资金来源(申请省级资金)}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{资金来源(申请省级资金)}")
+    @Digits(integer = 10,fraction = 2,message = "{资金来源(申请省级资金)}")
+    private String sqsjzj;
+
+    /** 项目概况 */
+    @Excel(name = "项目概况")
+    @ApiModelProperty(value = "项目概况", required = true)
+    @NotBlank(message = "{项目概况}",groups = AddGroup.class)
+    @Size(min = 1, max = 400, message = "{项目概况}")
+
+    private String xmgk;
+
+    /** 项目概况附件 */
+    @Excel(name = "项目概况附件")
+    @ApiModelProperty(value = "项目概况附件")
+    @Size(max = 400, message = "{项目概况附件}")
+
+    private String xmgkFj;
+
+    /** 街道审核结果(CZ002) */
+    @Excel(name = "街道审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "街道审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{街道审核结果}")
+    private String jdShjg;
+
+    /** 街道审核意见 */
+    @Excel(name = "街道审核意见")
+    @ApiModelProperty(value = "街道审核意见")
+    @Size(max = 200, message = "{街道审核意见}")
+
+    private String jdShyj;
+
+    /** 街道审核时间 */
+    @Excel(name = "街道审核时间")
+    @ApiModelProperty(value = "街道审核时间")
+    @Size(max = 8, message = "{街道审核时间}")
+
+    private String jdShsj;
+
+    /** 民政局审核结果(CZ002) */
+    @Excel(name = "民政局审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "民政局审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{民政局审核结果}")
+    private String mzShjg;
+
+    /** 民政局审核意见 */
+    @Excel(name = "民政局审核意见")
+    @ApiModelProperty(value = "民政局审核意见")
+    @Size(max = 200, message = "{民政局审核意见}")
+
+    private String mzShyj;
+
+    /** 民政局审核时间 */
+    @Excel(name = "民政局审核时间")
+    @ApiModelProperty(value = "民政局审核时间")
+    @Size(max = 8, message = "{民政局审核时间}")
+    private String mzShsj;
+
+    @Excel(name = "数据状态")
+    @ApiModelProperty(value = "数据状态")
+    private String status;
+
+    @TableField(exist = false)
+    private String editFlg;
+}

+ 290 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/domain/ZwywXmsbJgjs.java

@@ -0,0 +1,290 @@
+package com.ruoyi.business.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.ruoyi.system.validate.DictV;
+import com.ruoyi.system.validate.MobileV;
+import com.ruoyi.system.validate.NumberV;
+import com.ruoyi.system.validate.group.AddGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+
+/**
+ * 项目申报公办养老机构建设项目信息对象 zwyw_xmsb_jgjs
+ *
+ * @author sun
+ * @date 2022-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("zwyw_xmsb_jgjs")
+@ApiModel("项目申报公办养老机构建设项目信息")
+public class ZwywXmsbJgjs extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键标识 */
+    @Excel(name = "主键标识")
+    @TableId(value = "id",type = IdType.ASSIGN_UUID)
+    @ApiModelProperty(value = "主键标识")
+    private String id;
+
+    /** 地区 */
+    @Excel(name = "地区")
+    @ApiModelProperty(value = "地区", required = true)
+    @NotBlank(message = "{地区}",groups = AddGroup.class)
+    private String xzqhId;
+
+    /** 项目单位 */
+    @Excel(name = "项目单位")
+    @ApiModelProperty(value = "项目单位", required = true)
+    @NotBlank(message = "{项目单位}",groups = AddGroup.class)
+    @Size(min = 1, max = 100, message = "{项目单位}")
+
+    private String xmdw;
+
+    /** 单位地址 */
+    @Excel(name = "单位地址")
+    @ApiModelProperty(value = "单位地址", required = true)
+    @NotBlank(message = "{单位地址}",groups = AddGroup.class)
+    @Size(min = 1, max = 100, message = "{单位地址}")
+
+    private String dwdz;
+
+    /** 项目性质(XZ098) */
+    @Excel(name = "项目性质", dictType = "XZ098")
+    @ApiModelProperty(value = "项目性质(XZ098)", required = true)
+    @NotBlank(message = "{项目性质}",groups = AddGroup.class)
+    @DictV(type = "XZ098",message = "{项目性质}")
+    private String xmxz;
+
+    /** 负责人 */
+    @Excel(name = "负责人")
+    @ApiModelProperty(value = "负责人", required = true)
+    @NotBlank(message = "{负责人}",groups = AddGroup.class)
+    @Size(min = 1, max = 72, message = "{负责人}")
+
+    private String fzr;
+
+    /** 手机号 */
+    @Excel(name = "手机号")
+    @ApiModelProperty(value = "手机号", required = true)
+    @NotBlank(message = "{手机号}",groups = AddGroup.class)
+    @MobileV(message = "{手机号}")
+    private String sjh;
+
+    /** 建筑面积 */
+    @Excel(name = "建筑面积")
+    @ApiModelProperty(value = "建筑面积", required = true)
+    @NotBlank(message = "{建筑面积}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{建筑面积}")
+    @Digits(integer = 10,fraction = 2,message = "{建筑面积}")
+    private String jzmj;
+
+    /** 床位数量 */
+    @Excel(name = "床位数量")
+    @ApiModelProperty(value = "床位数量", required = true)
+    @NotBlank(message = "{床位数量}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{床位数量}")
+    @NumberV(message = "{床位数量}")
+    private String cwsl;
+
+    /** 入住老年人数 */
+    @Excel(name = "入住老年人数")
+    @ApiModelProperty(value = "入住老年人数", required = true)
+    @NotBlank(message = "{入住老年人数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{入住老年人数}")
+    @NumberV(message = "{入住老年人数}")
+    private String rzrs;
+
+    /** 特困供养人数 */
+    @Excel(name = "特困供养人数")
+    @ApiModelProperty(value = "特困供养人数", required = true)
+    @NotBlank(message = "{特困供养人数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{特困供养人数}")
+    @NumberV(message = "{特困供养人数}")
+    private String tkgyrs;
+
+    /** 失能半失能 */
+    @Excel(name = "失能半失能")
+    @ApiModelProperty(value = "失能半失能", required = true)
+    @NotBlank(message = "{失能半失能}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{失能半失能}")
+    @NumberV(message = "{失能半失能}")
+    private String snbsn;
+
+    /** 自理人数 */
+    @Excel(name = "自理人数")
+    @ApiModelProperty(value = "自理人数", required = true)
+    @NotBlank(message = "{自理人数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{自理人数}")
+    @NumberV(message = "{自理人数}")
+    private String zlrs;
+
+    /** 建设期开始 */
+    @Excel(name = "建设期开始")
+    @ApiModelProperty(value = "建设期开始", required = true)
+    @NotBlank(message = "{建设期开始}",groups = AddGroup.class)
+    @Size(min = 1, max = 8, message = "{建设期开始}")
+
+    private String jsqks;
+
+    /** 建设期结束 */
+    @Excel(name = "建设期结束")
+    @ApiModelProperty(value = "建设期结束", required = true)
+    @NotBlank(message = "{建设期结束}",groups = AddGroup.class)
+    @Size(min = 1, max = 8, message = "{建设期结束}")
+
+    private String jsqjs;
+
+    /** 预算资金 */
+    @Excel(name = "预算资金")
+    @ApiModelProperty(value = "预算资金", required = true)
+    @NotBlank(message = "{预算资金}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{预算资金}")
+    @Digits(integer = 10,fraction = 2,message = "{预算资金}")
+    private String yszj;
+
+    /** 资金来源(当地政府投入) */
+    @Excel(name = "资金来源(当地政府投入)")
+    @ApiModelProperty(value = "资金来源(当地政府投入)", required = true)
+    @NotBlank(message = "{资金来源(当地政府投入)}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{资金来源(当地政府投入)}")
+    @Digits(integer = 10,fraction = 2,message = "{资金来源(当地政府投入)}")
+    private String ddzftr;
+
+    /** 资金来源(自筹资金) */
+    @Excel(name = "资金来源(自筹资金)")
+    @ApiModelProperty(value = "资金来源(自筹资金)", required = true)
+    @NotBlank(message = "{资金来源(自筹资金)}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{资金来源(自筹资金)}")
+    @Digits(integer = 10,fraction = 2,message = "{资金来源(自筹资金)}")
+    private String zczj;
+
+    /** 资金来源(申请省级支持资金) */
+    @Excel(name = "资金来源(申请省级支持资金)")
+    @ApiModelProperty(value = "资金来源(申请省级支持资金)", required = true)
+    @NotBlank(message = "{资金来源(申请省级支持资金)}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{资金来源(申请省级支持资金)}")
+    @Digits(integer = 10,fraction = 2,message = "{资金来源(申请省级支持资金)}")
+    private String sqsjzczj;
+
+    /** 附件1 */
+    @Excel(name = "附件1")
+    @ApiModelProperty(value = "附件1")
+    @Size(max = 100, message = "{附件1}")
+
+    private String fjFirst;
+
+    /** 附件2 */
+    @Excel(name = "附件2")
+    @ApiModelProperty(value = "附件2")
+    @Size(max = 100, message = "{附件2}")
+
+    private String fjSecond;
+
+    /** 附件3 */
+    @Excel(name = "附件3")
+    @ApiModelProperty(value = "附件3")
+    @Size(max = 100, message = "{附件3}")
+
+    private String fjThird;
+
+    /** 附件4 */
+    @Excel(name = "附件4")
+    @ApiModelProperty(value = "附件4")
+    @Size(max = 100, message = "{附件4}")
+
+    private String fjFourth;
+
+    /** 附件5 */
+    @Excel(name = "附件5")
+    @ApiModelProperty(value = "附件5")
+    @Size(max = 100, message = "{附件5}")
+
+    private String fjFifth;
+
+    /** 附件6 */
+    @Excel(name = "附件6")
+    @ApiModelProperty(value = "附件6")
+    @Size(max = 100, message = "{附件6}")
+
+    private String fjSixth;
+
+    /** 附件7 */
+    @Excel(name = "附件7")
+    @ApiModelProperty(value = "附件7")
+    @Size(max = 100, message = "{附件7}")
+
+    private String fjSeventh;
+
+    /** 附件8 */
+    @Excel(name = "附件8")
+    @ApiModelProperty(value = "附件8")
+    @Size(max = 100, message = "{附件8}")
+
+    private String fjEighth;
+
+    /** 民政部门审核结果(CZ002) */
+    @Excel(name = "民政部门审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "民政部门审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{民政部门审核结果}")
+    private String mzShjg;
+
+    /** 民政部门审核意见 */
+    @Excel(name = "民政部门审核意见")
+    @ApiModelProperty(value = "民政部门审核意见")
+    @Size(max = 200, message = "{民政部门审核意见}")
+
+    private String mzShyj;
+
+    /** 民政部门审核时间 */
+    @Excel(name = "民政部门审核时间")
+    @ApiModelProperty(value = "民政部门审核时间")
+    @Size(max = 8, message = "{民政部门审核时间}")
+
+    private String mzShsj;
+
+    /** 财政部门审核结果(CZ002) */
+    @Excel(name = "财政部门审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "财政部门审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{财政部门审核结果}")
+    private String czShjg;
+
+    /** 财政部门审核意见 */
+    @Excel(name = "财政部门审核意见")
+    @ApiModelProperty(value = "财政部门审核意见")
+    @Size(max = 200, message = "{财政部门审核意见}")
+
+    private String czShyj;
+
+    /** 财政部门审核时间 */
+    @Excel(name = "财政部门审核时间")
+    @ApiModelProperty(value = "财政部门审核时间")
+    @Size(max = 8, message = "{财政部门审核时间}")
+
+    private String czShsj;
+
+    @Excel(name = "数据状态")
+    @ApiModelProperty(value = "数据状态")
+    private String status;
+
+    @TableField(exist = false)
+    private String editFlg;
+
+    @TableField(exist = false)
+    private String xzqhName;
+}

+ 269 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/domain/ZwywXmsbSz.java

@@ -0,0 +1,269 @@
+package com.ruoyi.business.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.ruoyi.system.validate.DictV;
+import com.ruoyi.system.validate.MobileV;
+import com.ruoyi.system.validate.NumberV;
+import com.ruoyi.system.validate.group.AddGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+
+/**
+ * 项目申报失智照护专区建设项目信息对象 zwyw_xmsb_sz
+ *
+ * @author sun
+ * @date 2022-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("zwyw_xmsb_sz")
+@ApiModel("项目申报失智照护专区建设项目信息")
+public class ZwywXmsbSz extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键标识 */
+    @Excel(name = "主键标识")
+    @TableId(value = "id",type = IdType.ASSIGN_UUID)
+    @ApiModelProperty(value = "主键标识")
+    private String id;
+
+    @Excel(name = "机构主键标识")
+    @ApiModelProperty(value = "机构主键标识")
+    private String jgId;
+
+    /** 机构名称 */
+    @Excel(name = "机构名称")
+    @ApiModelProperty(value = "机构名称", required = true)
+    @NotBlank(message = "{机构名称}",groups = AddGroup.class)
+    @Size(min = 1, max = 100, message = "{机构名称}")
+
+    private String jgmc;
+
+    /** 地址 */
+    @Excel(name = "地址")
+    @ApiModelProperty(value = "地址", required = true)
+    @NotBlank(message = "{地址}",groups = AddGroup.class)
+    @Size(min = 1, max = 120, message = "{地址}")
+
+    private String dz;
+
+    /** 联系人 */
+    @Excel(name = "联系人")
+    @ApiModelProperty(value = "联系人", required = true)
+    @NotBlank(message = "{联系人}",groups = AddGroup.class)
+    @Size(min = 1, max = 72, message = "{联系人}")
+
+    private String lxr;
+
+    /** 手机号 */
+    @Excel(name = "手机号")
+    @ApiModelProperty(value = "手机号", required = true)
+    @NotBlank(message = "{手机号}",groups = AddGroup.class)
+    @MobileV(message = "{手机号}")
+    private String sjh;
+
+    /** 总床位数 */
+    @Excel(name = "总床位数")
+    @ApiModelProperty(value = "总床位数", required = true)
+    @NotBlank(message = "{总床位数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{总床位数}")
+    @NumberV(message = "{总床位数}")
+    private String zcws;
+
+    /** 护理型床位数 */
+    @Excel(name = "护理型床位数")
+    @ApiModelProperty(value = "护理型床位数", required = true)
+    @NotBlank(message = "{护理型床位数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{护理型床位数}")
+    @NumberV(message = "{护理型床位数}")
+    private String hlxcws;
+
+    /** 专区总床位数 */
+    @Excel(name = "专区总床位数")
+    @ApiModelProperty(value = "专区总床位数", required = true)
+    @NotBlank(message = "{专区总床位数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{专区总床位数}")
+    @NumberV(message = "{专区总床位数}")
+    private String zqzcws;
+
+    /** 现有失智人员数量 */
+    @Excel(name = "现有失智人员数量")
+    @ApiModelProperty(value = "现有失智人员数量", required = true)
+    @NotBlank(message = "{现有失智人员数量}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{现有失智人员数量}")
+    @NumberV(message = "{现有失智人员数量}")
+    private String xyszrys;
+
+    /** 总投资数 */
+    @Excel(name = "总投资数")
+    @ApiModelProperty(value = "总投资数", required = true)
+    @NotBlank(message = "{总投资数}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{总投资数}")
+    @Digits(integer = 10,fraction = 2,message = "{总投资数}")
+    private String ztzs;
+
+    /** 配备护理人员数 */
+    @Excel(name = "配备护理人员数")
+    @ApiModelProperty(value = "配备护理人员数", required = true)
+    @NotBlank(message = "{配备护理人员数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{配备护理人员数}")
+    @NumberV(message = "{配备护理人员数}")
+    private String pbhlrys;
+
+    /** 安装电磁感应门 */
+    @Excel(name = "安装电磁感应门")
+    @ApiModelProperty(value = "安装电磁感应门", required = true)
+    @NotBlank(message = "{安装电磁感应门}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{安装电磁感应门}")
+    @Digits(integer = 10,fraction = 2,message = "{安装电磁感应门}")
+    private String azdcgym;
+
+    /** 配备护理型床 */
+    @Excel(name = "配备护理型床")
+    @ApiModelProperty(value = "配备护理型床", required = true)
+    @NotBlank(message = "{配备护理型床}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{配备护理型床}")
+    @Digits(integer = 10,fraction = 2,message = "{配备护理型床}")
+    private String pbhlxc;
+
+    /** 窗户安全设施 */
+    @Excel(name = "窗户安全设施")
+    @ApiModelProperty(value = "窗户安全设施", required = true)
+    @NotBlank(message = "{窗户安全设施}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{窗户安全设施}")
+    @Digits(integer = 10,fraction = 2,message = "{窗户安全设施}")
+    private String chaqss;
+
+    /** 室内软装 */
+    @Excel(name = "室内软装")
+    @ApiModelProperty(value = "室内软装", required = true)
+    @NotBlank(message = "{室内软装}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{室内软装}")
+    @Digits(integer = 10,fraction = 2,message = "{室内软装}")
+    private String snrz;
+
+    /** 墙壁装饰 */
+    @Excel(name = "墙壁装饰")
+    @ApiModelProperty(value = "墙壁装饰", required = true)
+    @NotBlank(message = "{墙壁装饰}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{墙壁装饰}")
+    @Digits(integer = 10,fraction = 2,message = "{墙壁装饰}")
+    private String qbzs;
+
+    /** 设置认知康复空间 */
+    @Excel(name = "设置认知康复空间")
+    @ApiModelProperty(value = "设置认知康复空间", required = true)
+    @NotBlank(message = "{设置认知康复空间}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{设置认知康复空间}")
+    @Digits(integer = 10,fraction = 2,message = "{设置认知康复空间}")
+    private String szrzkfkj;
+
+    /** 设置疗愈性园林景观小品 */
+    @Excel(name = "设置疗愈性园林景观小品")
+    @ApiModelProperty(value = "设置疗愈性园林景观小品", required = true)
+    @NotBlank(message = "{设置疗愈性园林景观小品}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{设置疗愈性园林景观小品}")
+    @Digits(integer = 10,fraction = 2,message = "{设置疗愈性园林景观小品}")
+    private String szlyxyljgxp;
+
+    /** 安装监控设施 */
+    @Excel(name = "安装监控设施")
+    @ApiModelProperty(value = "安装监控设施", required = true)
+    @NotBlank(message = "{安装监控设施}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{安装监控设施}")
+    @Digits(integer = 10,fraction = 2,message = "{安装监控设施}")
+    private String azjkss;
+
+    /** 室内认知症活动空间 */
+    @Excel(name = "室内认知症活动空间")
+    @ApiModelProperty(value = "室内认知症活动空间", required = true)
+    @NotBlank(message = "{室内认知症活动空间}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{室内认知症活动空间}")
+    @Digits(integer = 10,fraction = 2,message = "{室内认知症活动空间}")
+    private String snrzzhdkj;
+
+    /** 其他 */
+    @Excel(name = "其他")
+    @ApiModelProperty(value = "其他", required = true)
+    @NotBlank(message = "{其他}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{其他}")
+    @Digits(integer = 10,fraction = 2,message = "{其他}")
+    private String qt;
+
+    /** 项目概况 */
+    @Excel(name = "项目概况")
+    @ApiModelProperty(value = "项目概况", required = true)
+    @NotBlank(message = "{项目概况}",groups = AddGroup.class)
+    @Size(min = 1, max = 1000, message = "{项目概况}")
+
+    private String xmgk;
+
+    /** 养老机构审核结果(CZ002) */
+    @Excel(name = "养老机构审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "养老机构审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{养老机构审核结果}")
+    private String jgShjg;
+
+    /** 养老机构审核意见 */
+    @Excel(name = "养老机构审核意见")
+    @ApiModelProperty(value = "养老机构审核意见")
+    @Size(max = 200, message = "{养老机构审核意见}")
+
+    private String jgShyj;
+
+    /** 养老机构审核时间 */
+    @Excel(name = "养老机构审核时间")
+    @ApiModelProperty(value = "养老机构审核时间")
+    @Size(max = 8, message = "{养老机构审核时间}")
+
+    private String jgShsj;
+
+    /** 民政部门审核结果(CZ002) */
+    @Excel(name = "民政部门审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "民政部门审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{民政部门审核结果}")
+    private String mzShjg;
+
+    /** 民政部门审核意见 */
+    @Excel(name = "民政部门审核意见")
+    @ApiModelProperty(value = "民政部门审核意见")
+    @Size(max = 200, message = "{民政部门审核意见}")
+
+    private String mzShyj;
+
+    /** 民政部门审核时间 */
+    @Excel(name = "民政部门审核时间")
+    @ApiModelProperty(value = "民政部门审核时间")
+    @Size(max = 8, message = "{民政部门审核时间}")
+
+    private String mzShsj;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    @Size(max = 1000, message = "{备注}")
+
+    private String bz;
+
+    @Excel(name = "数据状态")
+    @ApiModelProperty(value = "数据状态")
+    private String status;
+
+    @TableField(exist = false)
+    private String editFlg;
+}

+ 229 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/domain/ZwywXmsbYldy.java

@@ -0,0 +1,229 @@
+package com.ruoyi.business.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+import com.ruoyi.system.validate.DictV;
+import com.ruoyi.system.validate.MobileV;
+import com.ruoyi.system.validate.NumberV;
+import com.ruoyi.system.validate.group.AddGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+
+/**
+ * 项目申报农村养老大院项目信息对象 zwyw_xmsb_yldy
+ *
+ * @author sun
+ * @date 2022-10-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@TableName("zwyw_xmsb_yldy")
+@ApiModel("项目申报农村养老大院项目信息")
+public class ZwywXmsbYldy extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键标识 */
+    @Excel(name = "主键标识")
+    @TableId(value = "id",type = IdType.ASSIGN_UUID)
+    @ApiModelProperty(value = "主键标识")
+    private String id;
+
+    /** 地区 */
+    @Excel(name = "地区")
+    @ApiModelProperty(value = "地区", required = true)
+    @NotBlank(message = "{地区}",groups = AddGroup.class)
+    private String xzqhId;
+
+    /** 行政村 */
+    @Excel(name = "行政村")
+    @ApiModelProperty(value = "行政村", required = true)
+    @NotBlank(message = "{行政村}",groups = AddGroup.class)
+    @Size(min = 1, max = 100, message = "{行政村}")
+
+    private String xzc;
+
+    /** 全村总人口 */
+    @Excel(name = "全村总人口")
+    @ApiModelProperty(value = "全村总人口", required = true)
+    @NotBlank(message = "{全村总人口}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{全村总人口}")
+    @NumberV(message = "{全村总人口}")
+    private String qczrk;
+
+    /** 全村老年人口 */
+    @Excel(name = "全村老年人口")
+    @ApiModelProperty(value = "全村老年人口", required = true)
+    @NotBlank(message = "{全村老年人口}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{全村老年人口}")
+    @NumberV(message = "{全村老年人口}")
+    private String qclnrk;
+
+    /** 建筑面积 */
+    @Excel(name = "建筑面积")
+    @ApiModelProperty(value = "建筑面积", required = true)
+    @NotBlank(message = "{建筑面积}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{建筑面积}")
+    @Digits(integer = 10,fraction = 2,message = "{建筑面积}")
+    private String jzmj;
+
+    /** 设置床位数 */
+    @Excel(name = "设置床位数")
+    @ApiModelProperty(value = "设置床位数", required = true)
+    @NotBlank(message = "{设置床位数}",groups = AddGroup.class)
+    @Range(min=0,max=100,message = "{设置床位数}")
+    @NumberV(message = "{设置床位数}")
+    private String szcws;
+
+    /** 设施来源(XZ099) */
+    @Excel(name = "设施来源", dictType = "XZ099")
+    @ApiModelProperty(value = "设施来源(XZ099)", required = true)
+    @NotBlank(message = "{设施来源}",groups = AddGroup.class)
+    @DictV(type = "XZ099",message = "{设施来源}")
+    private String ssly;
+
+    /** 预算资金 */
+    @Excel(name = "预算资金")
+    @ApiModelProperty(value = "预算资金", required = true)
+    @NotBlank(message = "{预算资金}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{预算资金}")
+    @Digits(integer = 10,fraction = 2,message = "{预算资金}")
+    private String yszj;
+
+    /** 资金来源(村委会自筹) */
+    @Excel(name = "资金来源(村委会自筹)")
+    @ApiModelProperty(value = "资金来源(村委会自筹)", required = true)
+    @NotBlank(message = "{资金来源(村委会自筹)}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{资金来源(村委会自筹)}")
+    @Digits(integer = 10,fraction = 2,message = "{资金来源(村委会自筹)}")
+    private String cwhzc;
+
+    /** 资金来源(当地财政收入) */
+    @Excel(name = "资金来源(当地财政收入)")
+    @ApiModelProperty(value = "资金来源(当地财政收入)", required = true)
+    @NotBlank(message = "{资金来源(当地财政收入)}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{资金来源(当地财政收入)}")
+    @Digits(integer = 10,fraction = 2,message = "{资金来源(当地财政收入)}")
+    private String ddczsr;
+
+    /** 资金来源(申请省级支持资金) */
+    @Excel(name = "资金来源(申请省级支持资金)")
+    @ApiModelProperty(value = "资金来源(申请省级支持资金)", required = true)
+    @NotBlank(message = "{资金来源(申请省级支持资金)}",groups = AddGroup.class)
+    @Range(min=0,max=10000000000L,message = "{资金来源(申请省级支持资金)}")
+    @Digits(integer = 10,fraction = 2,message = "{资金来源(申请省级支持资金)}")
+    private String sqsjzczj;
+
+    /** 联系人 */
+    @Excel(name = "联系人")
+    @ApiModelProperty(value = "联系人", required = true)
+    @NotBlank(message = "{联系人}",groups = AddGroup.class)
+    @Size(min = 1, max = 72, message = "{联系人}")
+
+    private String lxr;
+
+    /** 手机号 */
+    @Excel(name = "手机号")
+    @ApiModelProperty(value = "手机号", required = true)
+    @NotBlank(message = "{手机号}",groups = AddGroup.class)
+    @MobileV(message = "{手机号}")
+    private String sjh;
+
+    /** 建设方案 */
+    @Excel(name = "建设方案")
+    @ApiModelProperty(value = "建设方案", required = true)
+    @NotBlank(message = "{建设方案}",groups = AddGroup.class)
+    @Size(min = 1, max = 400, message = "{建设方案}")
+
+    private String jsfa;
+
+    /** 建设方案附件 */
+    @Excel(name = "建设方案附件")
+    @ApiModelProperty(value = "建设方案附件")
+    @Size(max = 1000, message = "{建设方案附件}")
+
+    private String jsfaFj;
+
+    /** 村委会审核结果(CZ002) */
+    @Excel(name = "村委会审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "村委会审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{村委会审核结果}")
+    private String cwhShjg;
+
+    /** 村委会审核意见 */
+    @Excel(name = "村委会审核意见")
+    @ApiModelProperty(value = "村委会审核意见")
+    @Size(max = 200, message = "{村委会审核意见}")
+
+    private String cwhShyj;
+
+    /** 村委会审核时间 */
+    @Excel(name = "村委会审核时间")
+    @ApiModelProperty(value = "村委会审核时间")
+    @Size(max = 8, message = "{村委会审核时间}")
+
+    private String cwhShsj;
+
+    /** 乡镇政府审核结果(CZ002) */
+    @Excel(name = "乡镇政府审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "乡镇政府审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{乡镇政府审核结果}")
+    private String xzShjg;
+
+    /** 乡镇政府审核意见 */
+    @Excel(name = "乡镇政府审核意见")
+    @ApiModelProperty(value = "乡镇政府审核意见")
+    @Size(max = 200, message = "{乡镇政府审核意见}")
+
+    private String xzShyj;
+
+    /** 乡镇政府审核时间 */
+    @Excel(name = "乡镇政府审核时间")
+    @ApiModelProperty(value = "乡镇政府审核时间")
+    @Size(max = 8, message = "{乡镇政府审核时间}")
+
+    private String xzShsj;
+
+    /** 民政部门审核结果(CZ002) */
+    @Excel(name = "民政部门审核结果", dictType = "CZ002")
+    @ApiModelProperty(value = "民政部门审核结果(CZ002)")
+    @DictV(type = "CZ002",message = "{民政部门审核结果}")
+    private String mzShjg;
+
+    /** 民政部门审核意见 */
+    @Excel(name = "民政部门审核意见")
+    @ApiModelProperty(value = "民政部门审核意见")
+    @Size(max = 200, message = "{民政部门审核意见}")
+
+    private String mzShyj;
+
+    /** 民政部门审核时间 */
+    @Excel(name = "民政部门审核时间")
+    @ApiModelProperty(value = "民政部门审核时间")
+    @Size(max = 8, message = "{民政部门审核时间}")
+
+    private String mzShsj;
+
+    @Excel(name = "数据状态")
+    @ApiModelProperty(value = "数据状态")
+    private String status;
+
+    @TableField(exist = false)
+    private String editFlg;
+
+    @TableField(exist = false)
+    private String xzqhName;
+}

+ 22 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/mapper/ZwywXmsbFwzxMapper.java

@@ -0,0 +1,22 @@
+package com.ruoyi.business.mapper;
+
+import com.ruoyi.business.domain.ZwywXmsbFwzx;
+import com.ruoyi.common.datascope.handler.DataColumn;
+import com.ruoyi.common.datascope.handler.DataPermission;
+import com.ruoyi.common.datascope.utils.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 项目申报综合嵌入式社区居家养老服务中心项目信息Mapper接口
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@DataPermission({
+        @DataColumn(key = "deptName", value = "create_unit")
+})
+public interface ZwywXmsbFwzxMapper extends BaseMapperPlus<ZwywXmsbFwzx> {
+
+    public List<ZwywXmsbFwzx> selectShList(ZwywXmsbFwzx yldy);
+}

+ 22 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/mapper/ZwywXmsbJgjsMapper.java

@@ -0,0 +1,22 @@
+package com.ruoyi.business.mapper;
+
+import com.ruoyi.business.domain.ZwywXmsbJgjs;
+import com.ruoyi.common.datascope.handler.DataColumn;
+import com.ruoyi.common.datascope.handler.DataPermission;
+import com.ruoyi.common.datascope.utils.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 项目申报公办养老机构建设项目信息Mapper接口
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@DataPermission({
+        @DataColumn(key = "deptName", value = "create_unit")
+})
+public interface ZwywXmsbJgjsMapper extends BaseMapperPlus<ZwywXmsbJgjs> {
+
+    public List<ZwywXmsbJgjs> selectShList(ZwywXmsbJgjs yldy);
+}

+ 24 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/mapper/ZwywXmsbSzMapper.java

@@ -0,0 +1,24 @@
+package com.ruoyi.business.mapper;
+
+import com.ruoyi.business.domain.ZwywXmsbSz;
+import com.ruoyi.common.datascope.handler.DataColumn;
+import com.ruoyi.common.datascope.handler.DataPermission;
+import com.ruoyi.common.datascope.utils.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 项目申报失智照护专区建设项目信息Mapper接口
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@DataPermission({
+        @DataColumn(key = "xzqhName", value = "create_area_code"),
+//        @DataColumn(key = "deptName", value = "create_unit"),
+        @DataColumn(key = "jgName", value = "jg_id")
+})
+public interface ZwywXmsbSzMapper extends BaseMapperPlus<ZwywXmsbSz> {
+
+    public List<ZwywXmsbSz> selectShList(ZwywXmsbSz yldy);
+}

+ 22 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/mapper/ZwywXmsbYldyMapper.java

@@ -0,0 +1,22 @@
+package com.ruoyi.business.mapper;
+
+import com.ruoyi.business.domain.ZwywXmsbYldy;
+import com.ruoyi.common.datascope.handler.DataColumn;
+import com.ruoyi.common.datascope.handler.DataPermission;
+import com.ruoyi.common.datascope.utils.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 项目申报农村养老大院项目信息Mapper接口
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@DataPermission({
+        @DataColumn(key = "deptName", value = "create_unit")
+})
+public interface ZwywXmsbYldyMapper extends BaseMapperPlus<ZwywXmsbYldy> {
+
+    public List<ZwywXmsbYldy> selectShList(ZwywXmsbYldy yldy);
+}

+ 58 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/IZwywXmsbFwzxService.java

@@ -0,0 +1,58 @@
+package com.ruoyi.business.service;
+
+import com.ruoyi.business.domain.ZwywXmsbFwzx;
+
+import java.util.List;
+
+/**
+ * 项目申报综合嵌入式社区居家养老服务中心项目信息Service接口
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+public interface IZwywXmsbFwzxService 
+{
+    /**
+     * 查询项目申报综合嵌入式社区居家养老服务中心项目信息
+     * 
+     * @param id 项目申报综合嵌入式社区居家养老服务中心项目信息主键
+     * @return 项目申报综合嵌入式社区居家养老服务中心项目信息
+     */
+    public ZwywXmsbFwzx selectZwywXmsbFwzxById(String id);
+
+    /**
+     * 查询项目申报综合嵌入式社区居家养老服务中心项目信息列表
+     * 
+     * @param zwywXmsbFwzx 项目申报综合嵌入式社区居家养老服务中心项目信息
+     * @return 项目申报综合嵌入式社区居家养老服务中心项目信息集合
+     */
+    public List<ZwywXmsbFwzx> selectZwywXmsbFwzxList(ZwywXmsbFwzx zwywXmsbFwzx);
+
+    public List<ZwywXmsbFwzx> selectZwywXmsbFwzxShList(ZwywXmsbFwzx zwywXmsbFwzx);
+
+    /**
+     * 新增项目申报综合嵌入式社区居家养老服务中心项目信息
+     * 
+     * @param zwywXmsbFwzx 项目申报综合嵌入式社区居家养老服务中心项目信息
+     * @return 结果
+     */
+    public int insertZwywXmsbFwzx(ZwywXmsbFwzx zwywXmsbFwzx);
+
+    /**
+     * 修改项目申报综合嵌入式社区居家养老服务中心项目信息
+     * 
+     * @param zwywXmsbFwzx 项目申报综合嵌入式社区居家养老服务中心项目信息
+     * @return 结果
+     */
+    public int updateZwywXmsbFwzx(ZwywXmsbFwzx zwywXmsbFwzx);
+
+    /**
+     * 批量删除项目申报综合嵌入式社区居家养老服务中心项目信息
+     * 
+     * @param ids 需要删除的项目申报综合嵌入式社区居家养老服务中心项目信息主键集合
+     * @return 结果
+     */
+    public int deleteZwywXmsbFwzxByIds(String[] ids);
+
+    public int changeStatus(String id);
+}

+ 58 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/IZwywXmsbJgjsService.java

@@ -0,0 +1,58 @@
+package com.ruoyi.business.service;
+
+import com.ruoyi.business.domain.ZwywXmsbJgjs;
+
+import java.util.List;
+
+/**
+ * 项目申报公办养老机构建设项目信息Service接口
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+public interface IZwywXmsbJgjsService 
+{
+    /**
+     * 查询项目申报公办养老机构建设项目信息
+     * 
+     * @param id 项目申报公办养老机构建设项目信息主键
+     * @return 项目申报公办养老机构建设项目信息
+     */
+    public ZwywXmsbJgjs selectZwywXmsbJgjsById(String id);
+
+    /**
+     * 查询项目申报公办养老机构建设项目信息列表
+     * 
+     * @param zwywXmsbJgjs 项目申报公办养老机构建设项目信息
+     * @return 项目申报公办养老机构建设项目信息集合
+     */
+    public List<ZwywXmsbJgjs> selectZwywXmsbJgjsList(ZwywXmsbJgjs zwywXmsbJgjs);
+
+    public List<ZwywXmsbJgjs> selectZwywXmsbJgjsShList(ZwywXmsbJgjs zwywXmsbJgjs);
+
+    /**
+     * 新增项目申报公办养老机构建设项目信息
+     * 
+     * @param zwywXmsbJgjs 项目申报公办养老机构建设项目信息
+     * @return 结果
+     */
+    public int insertZwywXmsbJgjs(ZwywXmsbJgjs zwywXmsbJgjs);
+
+    /**
+     * 修改项目申报公办养老机构建设项目信息
+     * 
+     * @param zwywXmsbJgjs 项目申报公办养老机构建设项目信息
+     * @return 结果
+     */
+    public int updateZwywXmsbJgjs(ZwywXmsbJgjs zwywXmsbJgjs);
+
+    /**
+     * 批量删除项目申报公办养老机构建设项目信息
+     * 
+     * @param ids 需要删除的项目申报公办养老机构建设项目信息主键集合
+     * @return 结果
+     */
+    public int deleteZwywXmsbJgjsByIds(String[] ids);
+
+    public int changeStatus(String id);
+}

+ 58 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/IZwywXmsbSzService.java

@@ -0,0 +1,58 @@
+package com.ruoyi.business.service;
+
+import com.ruoyi.business.domain.ZwywXmsbSz;
+
+import java.util.List;
+
+/**
+ * 项目申报失智照护专区建设项目信息Service接口
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+public interface IZwywXmsbSzService 
+{
+    /**
+     * 查询项目申报失智照护专区建设项目信息
+     * 
+     * @param id 项目申报失智照护专区建设项目信息主键
+     * @return 项目申报失智照护专区建设项目信息
+     */
+    public ZwywXmsbSz selectZwywXmsbSzById(String id);
+
+    /**
+     * 查询项目申报失智照护专区建设项目信息列表
+     * 
+     * @param zwywXmsbSz 项目申报失智照护专区建设项目信息
+     * @return 项目申报失智照护专区建设项目信息集合
+     */
+    public List<ZwywXmsbSz> selectZwywXmsbSzList(ZwywXmsbSz zwywXmsbSz);
+
+    public List<ZwywXmsbSz> selectZwywXmsbSzShList(ZwywXmsbSz zwywXmsbSz);
+
+    /**
+     * 新增项目申报失智照护专区建设项目信息
+     * 
+     * @param zwywXmsbSz 项目申报失智照护专区建设项目信息
+     * @return 结果
+     */
+    public int insertZwywXmsbSz(ZwywXmsbSz zwywXmsbSz);
+
+    /**
+     * 修改项目申报失智照护专区建设项目信息
+     * 
+     * @param zwywXmsbSz 项目申报失智照护专区建设项目信息
+     * @return 结果
+     */
+    public int updateZwywXmsbSz(ZwywXmsbSz zwywXmsbSz);
+
+    /**
+     * 批量删除项目申报失智照护专区建设项目信息
+     * 
+     * @param ids 需要删除的项目申报失智照护专区建设项目信息主键集合
+     * @return 结果
+     */
+    public int deleteZwywXmsbSzByIds(String[] ids);
+
+    public int changeStatus(String id);
+}

+ 58 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/IZwywXmsbYldyService.java

@@ -0,0 +1,58 @@
+package com.ruoyi.business.service;
+
+import com.ruoyi.business.domain.ZwywXmsbYldy;
+
+import java.util.List;
+
+/**
+ * 项目申报农村养老大院项目信息Service接口
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+public interface IZwywXmsbYldyService 
+{
+    /**
+     * 查询项目申报农村养老大院项目信息
+     * 
+     * @param id 项目申报农村养老大院项目信息主键
+     * @return 项目申报农村养老大院项目信息
+     */
+    public ZwywXmsbYldy selectZwywXmsbYldyById(String id);
+
+    /**
+     * 查询项目申报农村养老大院项目信息列表
+     * 
+     * @param zwywXmsbYldy 项目申报农村养老大院项目信息
+     * @return 项目申报农村养老大院项目信息集合
+     */
+    public List<ZwywXmsbYldy> selectZwywXmsbYldyList(ZwywXmsbYldy zwywXmsbYldy);
+
+    public List<ZwywXmsbYldy> selectZwywXmsbYldyShList(ZwywXmsbYldy zwywXmsbYldy);
+
+    /**
+     * 新增项目申报农村养老大院项目信息
+     * 
+     * @param zwywXmsbYldy 项目申报农村养老大院项目信息
+     * @return 结果
+     */
+    public int insertZwywXmsbYldy(ZwywXmsbYldy zwywXmsbYldy);
+
+    /**
+     * 修改项目申报农村养老大院项目信息
+     * 
+     * @param zwywXmsbYldy 项目申报农村养老大院项目信息
+     * @return 结果
+     */
+    public int updateZwywXmsbYldy(ZwywXmsbYldy zwywXmsbYldy);
+
+    /**
+     * 批量删除项目申报农村养老大院项目信息
+     * 
+     * @param ids 需要删除的项目申报农村养老大院项目信息主键集合
+     * @return 结果
+     */
+    public int deleteZwywXmsbYldyByIds(String[] ids);
+
+    public int changeStatus(String id);
+}

+ 142 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/impl/ZwywXmsbFwzxServiceImpl.java

@@ -0,0 +1,142 @@
+package com.ruoyi.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.business.domain.ZwywXmsbFwzx;
+import com.ruoyi.business.mapper.ZwywXmsbFwzxMapper;
+import com.ruoyi.business.service.IZwywXmsbFwzxService;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.enums.ExamineStatus;
+import com.ruoyi.system.api.enums.XmsbFwzxStatus;
+import com.ruoyi.system.api.enums.XmsbYldyStatus;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 项目申报综合嵌入式社区居家养老服务中心项目信息Service业务层处理
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@Service
+public class ZwywXmsbFwzxServiceImpl implements IZwywXmsbFwzxService 
+{
+    @Autowired
+    private ZwywXmsbFwzxMapper zwywXmsbFwzxMapper;
+
+    /**
+     * 查询项目申报综合嵌入式社区居家养老服务中心项目信息
+     * 
+     * @param id 项目申报综合嵌入式社区居家养老服务中心项目信息主键
+     * @return 项目申报综合嵌入式社区居家养老服务中心项目信息
+     */
+    @Override
+    public ZwywXmsbFwzx selectZwywXmsbFwzxById(String id)
+    {
+        return zwywXmsbFwzxMapper.selectById(id);
+    }
+
+    /**
+     * 查询项目申报综合嵌入式社区居家养老服务中心项目信息列表
+     * 
+     * @param zwywXmsbFwzx 项目申报综合嵌入式社区居家养老服务中心项目信息
+     * @return 项目申报综合嵌入式社区居家养老服务中心项目信息
+     */
+    @Override
+    public List<ZwywXmsbFwzx> selectZwywXmsbFwzxList(ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        LambdaQueryWrapper<ZwywXmsbFwzx> lqw = new LambdaQueryWrapper<>(zwywXmsbFwzx)
+                .eq(ZwywXmsbFwzx::getCreateAreaCode, SecurityUtils.getAreaCode());
+        return zwywXmsbFwzxMapper.selectList(lqw);
+    }
+
+    @Override
+    public List<ZwywXmsbFwzx> selectZwywXmsbFwzxShList(ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        List<String> deptLevel = Arrays.stream(SecurityUtils.getLoginUser().getSysUser().getDept().getAncestors()
+                .split(",")).collect(Collectors.toList());
+        List<ZwywXmsbFwzx> res = zwywXmsbFwzxMapper.selectShList(zwywXmsbFwzx);
+        res.forEach(r -> {
+            if (deptLevel.size() == 3) {
+                // 乡镇/街道
+                if (StringUtils.equals(r.getStatus(), XmsbFwzxStatus.XZSH.getCode())) {
+                    r.setEditFlg(ExamineStatus.SYES.getCode());
+                }
+            } else if (deptLevel.size() == 2) {
+                // 区县
+                if (StringUtils.equals(r.getStatus(), XmsbYldyStatus.MZSH.getCode())) {
+                    r.setEditFlg(ExamineStatus.SYES.getCode());
+                }
+            }
+        });
+        return res;
+    }
+
+    /**
+     * 新增项目申报综合嵌入式社区居家养老服务中心项目信息
+     * 
+     * @param zwywXmsbFwzx 项目申报综合嵌入式社区居家养老服务中心项目信息
+     * @return 结果
+     */
+    @Override
+    public int insertZwywXmsbFwzx(ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        return zwywXmsbFwzxMapper.insert(zwywXmsbFwzx);
+    }
+
+    /**
+     * 修改项目申报综合嵌入式社区居家养老服务中心项目信息
+     * 
+     * @param zwywXmsbFwzx 项目申报综合嵌入式社区居家养老服务中心项目信息
+     * @return 结果
+     */
+    @Override
+    public int updateZwywXmsbFwzx(ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        if (StringUtils.isNotEmpty(zwywXmsbFwzx.getJdShjg())) {
+            if (StringUtils.equals(zwywXmsbFwzx.getJdShjg(), ExamineStatus.YES.getCode())) {
+                zwywXmsbFwzx.setStatus(XmsbFwzxStatus.MZSH.getCode());
+            } else {
+                zwywXmsbFwzx.setStatus(XmsbFwzxStatus.SHBTG.getCode());
+            }
+        }
+        if (StringUtils.isNotEmpty(zwywXmsbFwzx.getMzShjg())) {
+            if (StringUtils.equals(zwywXmsbFwzx.getMzShjg(), ExamineStatus.YES.getCode())) {
+                zwywXmsbFwzx.setStatus(XmsbFwzxStatus.SHTG.getCode());
+            } else {
+                zwywXmsbFwzx.setStatus(XmsbFwzxStatus.SHBTG.getCode());
+            }
+        }
+        return zwywXmsbFwzxMapper.updateById(zwywXmsbFwzx);
+    }
+
+    /**
+     * 批量删除项目申报综合嵌入式社区居家养老服务中心项目信息
+     * 
+     * @param ids 需要删除的项目申报综合嵌入式社区居家养老服务中心项目信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteZwywXmsbFwzxByIds(String[] ids)
+    {
+        return zwywXmsbFwzxMapper.deleteBatchIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public int changeStatus(String id) {
+        int res = 0;
+        ZwywXmsbFwzx fwzx = zwywXmsbFwzxMapper.selectById(id);
+        if (ObjectUtils.isNotEmpty(fwzx)) {
+            if (StringUtils.equals(XmsbFwzxStatus.CG.getCode(), fwzx.getStatus())) {
+                fwzx.setStatus(XmsbFwzxStatus.XZSH.getCode());
+                res += zwywXmsbFwzxMapper.updateById(fwzx);
+            }
+        }
+        return res;
+    }
+}

+ 140 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/impl/ZwywXmsbJgjsServiceImpl.java

@@ -0,0 +1,140 @@
+package com.ruoyi.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.business.domain.ZwywXmsbJgjs;
+import com.ruoyi.business.mapper.ZwywXmsbJgjsMapper;
+import com.ruoyi.business.service.IZwywXmsbJgjsService;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.enums.ExamineStatus;
+import com.ruoyi.system.api.enums.XmsbStatus;
+import com.ruoyi.system.mapper.SysDeptJlMapper;
+import com.ruoyi.system.utils.SubCodeUtil;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 项目申报公办养老机构建设项目信息Service业务层处理
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@Service
+public class ZwywXmsbJgjsServiceImpl implements IZwywXmsbJgjsService 
+{
+    @Autowired
+    private ZwywXmsbJgjsMapper zwywXmsbJgjsMapper;
+
+    @Autowired
+    private SysDeptJlMapper sysDeptJlMapper;
+
+    /**
+     * 查询项目申报公办养老机构建设项目信息
+     * 
+     * @param id 项目申报公办养老机构建设项目信息主键
+     * @return 项目申报公办养老机构建设项目信息
+     */
+    @Override
+    public ZwywXmsbJgjs selectZwywXmsbJgjsById(String id)
+    {
+        ZwywXmsbJgjs res = zwywXmsbJgjsMapper.selectById(id);
+        res.setXzqhName(sysDeptJlMapper.getXzqhNames(res.getXzqhId()));
+        res.setXzqhId(sysDeptJlMapper.getXzqhCodes(res.getXzqhId()));
+        return res;
+    }
+
+    /**
+     * 查询项目申报公办养老机构建设项目信息列表
+     * 
+     * @param zwywXmsbJgjs 项目申报公办养老机构建设项目信息
+     * @return 项目申报公办养老机构建设项目信息
+     */
+    @Override
+    public List<ZwywXmsbJgjs> selectZwywXmsbJgjsList(ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        LambdaQueryWrapper<ZwywXmsbJgjs> lqw = new LambdaQueryWrapper<>(zwywXmsbJgjs)
+                .eq(ZwywXmsbJgjs::getCreateAreaCode, SecurityUtils.getAreaCode());
+        List<ZwywXmsbJgjs> res = zwywXmsbJgjsMapper.selectList(lqw);
+        res.forEach(r -> r.setXzqhName(sysDeptJlMapper.getXzqhNames(r.getXzqhId())));
+        return res;
+    }
+
+    @Override
+    public List<ZwywXmsbJgjs> selectZwywXmsbJgjsShList(ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        zwywXmsbJgjs.setEditFlg(ExamineStatus.SNO.getCode());
+        List<String> deptLevel = Arrays.stream(SecurityUtils.getLoginUser().getSysUser().getDept().getAncestors()
+                .split(",")).collect(Collectors.toList());
+        if (deptLevel.size() == 1) {
+            if (StringUtils.isEmpty(deptLevel.get(0))) {
+                zwywXmsbJgjs.setEditFlg(ExamineStatus.SYES.getCode());
+            }
+        }
+        if (StringUtils.isNotEmpty(zwywXmsbJgjs.getXzqhId())) {
+            zwywXmsbJgjs.setXzqhId(SubCodeUtil.getSubCode(zwywXmsbJgjs.getXzqhId()).get("code").toString());
+        }
+        zwywXmsbJgjs.setCreateUnit(SecurityUtils.getUserUnitId());
+        List<ZwywXmsbJgjs> res = zwywXmsbJgjsMapper.selectShList(zwywXmsbJgjs);
+        res.forEach(r -> r.setXzqhName(sysDeptJlMapper.getXzqhNames(r.getXzqhId())));
+        return res;
+    }
+
+    /**
+     * 新增项目申报公办养老机构建设项目信息
+     * 
+     * @param zwywXmsbJgjs 项目申报公办养老机构建设项目信息
+     * @return 结果
+     */
+    @Override
+    public int insertZwywXmsbJgjs(ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        return zwywXmsbJgjsMapper.insert(zwywXmsbJgjs);
+    }
+
+    /**
+     * 修改项目申报公办养老机构建设项目信息
+     * 
+     * @param zwywXmsbJgjs 项目申报公办养老机构建设项目信息
+     * @return 结果
+     */
+    @Override
+    public int updateZwywXmsbJgjs(ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        if (StringUtils.equals(ExamineStatus.YES.getCode(), zwywXmsbJgjs.getMzShjg())) {
+            zwywXmsbJgjs.setStatus(XmsbStatus.SHTG.getCode());
+        } else {
+            zwywXmsbJgjs.setStatus(XmsbStatus.SHBTG.getCode());
+        }
+        return zwywXmsbJgjsMapper.updateById(zwywXmsbJgjs);
+    }
+
+    /**
+     * 批量删除项目申报公办养老机构建设项目信息
+     * 
+     * @param ids 需要删除的项目申报公办养老机构建设项目信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteZwywXmsbJgjsByIds(String[] ids)
+    {
+        return zwywXmsbJgjsMapper.deleteBatchIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public int changeStatus(String id) {
+        int res = 0;
+        ZwywXmsbJgjs jgjs = zwywXmsbJgjsMapper.selectById(id);
+        if (ObjectUtils.isNotEmpty(jgjs)) {
+            if (StringUtils.equals(XmsbStatus.CG.getCode(), jgjs.getStatus())) {
+                jgjs.setStatus(XmsbStatus.DSH.getCode());
+                res += zwywXmsbJgjsMapper.updateById(jgjs);
+            }
+        }
+        return res;
+    }
+}

+ 145 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/impl/ZwywXmsbSzServiceImpl.java

@@ -0,0 +1,145 @@
+package com.ruoyi.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.business.domain.ZwywXmsbSz;
+import com.ruoyi.business.mapper.ZwywXmsbSzMapper;
+import com.ruoyi.business.service.IZwywXmsbSzService;
+import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.enums.*;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 项目申报失智照护专区建设项目信息Service业务层处理
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@Service
+public class ZwywXmsbSzServiceImpl implements IZwywXmsbSzService 
+{
+    @Autowired
+    private ZwywXmsbSzMapper zwywXmsbSzMapper;
+
+    /**
+     * 查询项目申报失智照护专区建设项目信息
+     * 
+     * @param id 项目申报失智照护专区建设项目信息主键
+     * @return 项目申报失智照护专区建设项目信息
+     */
+    @Override
+    public ZwywXmsbSz selectZwywXmsbSzById(String id)
+    {
+        return zwywXmsbSzMapper.selectById(id);
+    }
+
+    /**
+     * 查询项目申报失智照护专区建设项目信息列表
+     * 
+     * @param zwywXmsbSz 项目申报失智照护专区建设项目信息
+     * @return 项目申报失智照护专区建设项目信息
+     */
+    @Override
+    public List<ZwywXmsbSz> selectZwywXmsbSzList(ZwywXmsbSz zwywXmsbSz)
+    {
+        LambdaQueryWrapper<ZwywXmsbSz> lqw = new LambdaQueryWrapper<>(zwywXmsbSz)
+                .eq(ZwywXmsbSz::getCreateAreaCode, SecurityUtils.getAreaCode());
+        return zwywXmsbSzMapper.selectList(lqw);
+    }
+
+    @Override
+    public List<ZwywXmsbSz> selectZwywXmsbSzShList(ZwywXmsbSz zwywXmsbSz)
+    {
+        List<String> deptLevel = Arrays.stream(SecurityUtils.getLoginUser().getSysUser().getDept().getAncestors()
+                .split(",")).collect(Collectors.toList());
+        List<ZwywXmsbSz> res = zwywXmsbSzMapper.selectShList(zwywXmsbSz);
+        res.forEach(r -> {
+            if (StringUtils.equals(SecurityUtils.getUserType(), SysUserTypeStatus.SYS.getCode())) {
+                if (StringUtils.equals(r.getStatus(), XmsbSzStatus.MZSH.getCode())) {
+                    if (deptLevel.size() == 2) {
+                        r.setEditFlg(ExamineStatus.SYES.getCode());
+                    }
+                }
+            } else {
+                if (StringUtils.equals(r.getStatus(), XmsbSzStatus.JGSH.getCode())) {
+                    r.setEditFlg(ExamineStatus.SYES.getCode());
+                }
+            }
+        });
+        return res;
+    }
+
+    /**
+     * 新增项目申报失智照护专区建设项目信息
+     * 
+     * @param zwywXmsbSz 项目申报失智照护专区建设项目信息
+     * @return 结果
+     */
+    @Override
+    public int insertZwywXmsbSz(ZwywXmsbSz zwywXmsbSz)
+    {
+        if (StringUtils.equals(SecurityUtils.getUserType(), SysUserTypeStatus.SYS.getCode())) {
+            throw new ServiceException("需要机构用户开启申请");
+        }
+        zwywXmsbSz.setJgId(SecurityUtils.getJgId());
+        return zwywXmsbSzMapper.insert(zwywXmsbSz);
+    }
+
+    /**
+     * 修改项目申报失智照护专区建设项目信息
+     * 
+     * @param zwywXmsbSz 项目申报失智照护专区建设项目信息
+     * @return 结果
+     */
+    @Override
+    public int updateZwywXmsbSz(ZwywXmsbSz zwywXmsbSz)
+    {
+        if (StringUtils.isNotEmpty(zwywXmsbSz.getJgShjg())) {
+            if (StringUtils.equals(zwywXmsbSz.getJgShjg(), ExamineStatus.YES.getCode())) {
+                zwywXmsbSz.setStatus(XmsbSzStatus.MZSH.getCode());
+            } else {
+                zwywXmsbSz.setStatus(XmsbSzStatus.SHBTG.getCode());
+            }
+        }
+        if (StringUtils.isNotEmpty(zwywXmsbSz.getMzShjg())) {
+            if (StringUtils.equals(zwywXmsbSz.getMzShjg(), ExamineStatus.YES.getCode())) {
+                zwywXmsbSz.setStatus(XmsbSzStatus.SHTG.getCode());
+            } else {
+                zwywXmsbSz.setStatus(XmsbSzStatus.SHBTG.getCode());
+            }
+        }
+        return zwywXmsbSzMapper.updateById(zwywXmsbSz);
+    }
+
+    /**
+     * 批量删除项目申报失智照护专区建设项目信息
+     * 
+     * @param ids 需要删除的项目申报失智照护专区建设项目信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteZwywXmsbSzByIds(String[] ids)
+    {
+        return zwywXmsbSzMapper.deleteBatchIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public int changeStatus(String id) {
+        int res = 0;
+        ZwywXmsbSz sz = zwywXmsbSzMapper.selectById(id);
+        if (ObjectUtils.isNotEmpty(sz)) {
+            if (StringUtils.equals(XmsbSzStatus.CG.getCode(), sz.getStatus())) {
+                sz.setStatus(XmsbSzStatus.JGSH.getCode());
+                res += zwywXmsbSzMapper.updateById(sz);
+            }
+        }
+        return res;
+    }
+}

+ 167 - 0
ruoyi-modules/mz-business-xmsb/src/main/java/com/ruoyi/business/service/impl/ZwywXmsbYldyServiceImpl.java

@@ -0,0 +1,167 @@
+package com.ruoyi.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.business.domain.ZwywXmsbYldy;
+import com.ruoyi.business.mapper.ZwywXmsbYldyMapper;
+import com.ruoyi.business.service.IZwywXmsbYldyService;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.enums.ExamineStatus;
+import com.ruoyi.system.api.enums.XmsbYldyStatus;
+import com.ruoyi.system.mapper.SysDeptJlMapper;
+import com.ruoyi.system.utils.SubCodeUtil;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 项目申报农村养老大院项目信息Service业务层处理
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@Service
+public class ZwywXmsbYldyServiceImpl implements IZwywXmsbYldyService 
+{
+    @Autowired
+    private ZwywXmsbYldyMapper zwywXmsbYldyMapper;
+
+    @Autowired
+    private SysDeptJlMapper sysDeptJlMapper;
+
+    /**
+     * 查询项目申报农村养老大院项目信息
+     * 
+     * @param id 项目申报农村养老大院项目信息主键
+     * @return 项目申报农村养老大院项目信息
+     */
+    @Override
+    public ZwywXmsbYldy selectZwywXmsbYldyById(String id)
+    {
+        ZwywXmsbYldy res = zwywXmsbYldyMapper.selectById(id);
+        res.setXzqhName(sysDeptJlMapper.getXzqhNames(res.getXzqhId()));
+        res.setXzqhId(sysDeptJlMapper.getXzqhCodes(res.getXzqhId()));
+        return res;
+    }
+
+    /**
+     * 查询项目申报农村养老大院项目信息列表
+     * 
+     * @param zwywXmsbYldy 项目申报农村养老大院项目信息
+     * @return 项目申报农村养老大院项目信息
+     */
+    @Override
+    public List<ZwywXmsbYldy> selectZwywXmsbYldyList(ZwywXmsbYldy zwywXmsbYldy)
+    {
+        LambdaQueryWrapper<ZwywXmsbYldy> lqw = new LambdaQueryWrapper<>(zwywXmsbYldy)
+                .eq(ZwywXmsbYldy::getCreateAreaCode, SecurityUtils.getAreaCode());
+        List<ZwywXmsbYldy> res = zwywXmsbYldyMapper.selectList(lqw);
+        res.forEach(r -> r.setXzqhName(sysDeptJlMapper.getXzqhNames(r.getXzqhId())));
+        return res;
+    }
+
+    @Override
+    public List<ZwywXmsbYldy> selectZwywXmsbYldyShList(ZwywXmsbYldy zwywXmsbYldy)
+    {
+        List<String> deptLevel = Arrays.stream(SecurityUtils.getLoginUser().getSysUser().getDept().getAncestors()
+                .split(",")).collect(Collectors.toList());
+        if (StringUtils.isNotEmpty(zwywXmsbYldy.getXzqhId())) {
+            zwywXmsbYldy.setXzqhId(SubCodeUtil.getSubCode(zwywXmsbYldy.getXzqhId()).get("code").toString());
+        }
+        List<ZwywXmsbYldy> res = zwywXmsbYldyMapper.selectShList(zwywXmsbYldy);
+        res.forEach(r -> {
+            if (deptLevel.size() == 4) {
+                // 村/社区
+                if (StringUtils.equals(r.getStatus(), XmsbYldyStatus.CWHSH.getCode())) {
+                    r.setEditFlg(ExamineStatus.SYES.getCode());
+                }
+            } else if (deptLevel.size() == 3) {
+                // 乡镇/街道
+                if (StringUtils.equals(r.getStatus(), XmsbYldyStatus.XZSH.getCode())) {
+                    r.setEditFlg(ExamineStatus.SYES.getCode());
+                }
+            } else if (deptLevel.size() == 2) {
+                // 区县
+                if (StringUtils.equals(r.getStatus(), XmsbYldyStatus.MZSH.getCode())) {
+                    r.setEditFlg(ExamineStatus.SYES.getCode());
+                }
+            }
+            r.setXzqhName(sysDeptJlMapper.getXzqhNames(r.getXzqhId()));
+        });
+        return res;
+    }
+
+    /**
+     * 新增项目申报农村养老大院项目信息
+     * 
+     * @param zwywXmsbYldy 项目申报农村养老大院项目信息
+     * @return 结果
+     */
+    @Override
+    public int insertZwywXmsbYldy(ZwywXmsbYldy zwywXmsbYldy)
+    {
+        return zwywXmsbYldyMapper.insert(zwywXmsbYldy);
+    }
+
+    /**
+     * 修改项目申报农村养老大院项目信息
+     * 
+     * @param zwywXmsbYldy 项目申报农村养老大院项目信息
+     * @return 结果
+     */
+    @Override
+    public int updateZwywXmsbYldy(ZwywXmsbYldy zwywXmsbYldy)
+    {
+        if (StringUtils.isNotEmpty(zwywXmsbYldy.getCwhShjg())) {
+            if (StringUtils.equals(zwywXmsbYldy.getCwhShjg(), ExamineStatus.YES.getCode())) {
+                zwywXmsbYldy.setStatus(XmsbYldyStatus.XZSH.getCode());
+            } else {
+                zwywXmsbYldy.setStatus(XmsbYldyStatus.SHBTG.getCode());
+            }
+        }
+        if (StringUtils.isNotEmpty(zwywXmsbYldy.getXzShjg())) {
+            if (StringUtils.equals(zwywXmsbYldy.getXzShjg(), ExamineStatus.YES.getCode())) {
+                zwywXmsbYldy.setStatus(XmsbYldyStatus.MZSH.getCode());
+            } else {
+                zwywXmsbYldy.setStatus(XmsbYldyStatus.SHBTG.getCode());
+            }
+        }
+        if (StringUtils.isNotEmpty(zwywXmsbYldy.getMzShjg())) {
+            if (StringUtils.equals(zwywXmsbYldy.getMzShjg(), ExamineStatus.YES.getCode())) {
+                zwywXmsbYldy.setStatus(XmsbYldyStatus.SHTG.getCode());
+            } else {
+                zwywXmsbYldy.setStatus(XmsbYldyStatus.SHBTG.getCode());
+            }
+        }
+        return zwywXmsbYldyMapper.updateById(zwywXmsbYldy);
+    }
+
+    /**
+     * 批量删除项目申报农村养老大院项目信息
+     * 
+     * @param ids 需要删除的项目申报农村养老大院项目信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteZwywXmsbYldyByIds(String[] ids)
+    {
+        return zwywXmsbYldyMapper.deleteBatchIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public int changeStatus(String id) {
+        int res = 0;
+        ZwywXmsbYldy yldy = zwywXmsbYldyMapper.selectById(id);
+        if (ObjectUtils.isNotEmpty(yldy)) {
+            if (StringUtils.equals(XmsbYldyStatus.CG.getCode(), yldy.getStatus())) {
+                yldy.setStatus(XmsbYldyStatus.CWHSH.getCode());
+                res += zwywXmsbYldyMapper.updateById(yldy);
+            }
+        }
+        return res;
+    }
+}

+ 54 - 0
ruoyi-modules/mz-business-xmsb/src/main/resources/mapper/business/ZwywXmsbFwzxMapper.xml

@@ -0,0 +1,54 @@
+<?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.ruoyi.business.mapper.ZwywXmsbFwzxMapper">
+    
+    <resultMap type="ZwywXmsbFwzx" id="ZwywXmsbFwzxResult">
+        <result property="id"    column="id"    />
+        <result property="sbdw"    column="sbdw"    />
+        <result property="xmmc"    column="xmmc"    />
+        <result property="xmdz"    column="xmdz"    />
+        <result property="lxr"    column="lxr"    />
+        <result property="sjh"    column="sjh"    />
+        <result property="jzmj"    column="jzmj"    />
+        <result property="cwzs"    column="cwzs"    />
+        <result property="hlxcws"    column="hlxcws"    />
+        <result property="yyms"    column="yyms"    />
+        <result property="jsqks"    column="jsqks"    />
+        <result property="jsqjs"    column="jsqjs"    />
+        <result property="ztz"    column="ztz"    />
+        <result property="dfppzj"    column="dfppzj"    />
+        <result property="sqsjzj"    column="sqsjzj"    />
+        <result property="xmgk"    column="xmgk"    />
+        <result property="xmgkFj"    column="xmgk_fj"    />
+        <result property="jdShjg"    column="jd_shjg"    />
+        <result property="jdShyj"    column="jd_shyj"    />
+        <result property="jdShsj"    column="jd_shsj"    />
+        <result property="mzShjg"    column="mz_shjg"    />
+        <result property="mzShyj"    column="mz_shyj"    />
+        <result property="mzShsj"    column="mz_shsj"    />
+        <result property="status"    column="status"    />
+        <result property="createTimeStr"    column="create_time_str"    />
+        <result property="createAreaCode"    column="create_area_code"    />
+        <result property="createUserId"    column="create_user_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createUserType"    column="create_user_type"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="createUnitName"    column="create_unit_name"    />
+        <result property="updateTimeStr"    column="update_time_str"    />
+        <result property="updateUserId"    column="update_user_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateUnit"    column="update_unit"    />
+        <result property="updateUnitName"    column="update_unit_name"    />
+    </resultMap>
+
+    <select id="selectShList" parameterType="ZwywXmsbFwzx" resultMap="ZwywXmsbFwzxResult">
+        select *, '1' as editFlg from zwyw_xmsb_fwzx
+        <where>
+            status in ('1', '2', '3', '4')
+            <if test="sbdw != null  and sbdw != ''"> and sbdw like concat('%', #{sbdw}, '%')</if>
+            <if test="xmmc != null  and xmmc != ''"> and xmmc like concat('%', #{xmmc}, '%')</if>
+        </where>
+    </select>
+</mapper>

+ 68 - 0
ruoyi-modules/mz-business-xmsb/src/main/resources/mapper/business/ZwywXmsbJgjsMapper.xml

@@ -0,0 +1,68 @@
+<?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.ruoyi.business.mapper.ZwywXmsbJgjsMapper">
+    
+    <resultMap type="ZwywXmsbJgjs" id="ZwywXmsbJgjsResult">
+        <result property="id"    column="id"    />
+        <result property="xzqhId"    column="xzqh_id"    />
+        <result property="xmdw"    column="xmdw"    />
+        <result property="dwdz"    column="dwdz"    />
+        <result property="xmxz"    column="xmxz"    />
+        <result property="fzr"    column="fzr"    />
+        <result property="sjh"    column="sjh"    />
+        <result property="jzmj"    column="jzmj"    />
+        <result property="cwsl"    column="cwsl"    />
+        <result property="rzrs"    column="rzrs"    />
+        <result property="tkgyrs"    column="tkgyrs"    />
+        <result property="snbsn"    column="snbsn"    />
+        <result property="zlrs"    column="zlrs"    />
+        <result property="jsqks"    column="jsqks"    />
+        <result property="jsqjs"    column="jsqjs"    />
+        <result property="yszj"    column="yszj"    />
+        <result property="ddzftr"    column="ddzftr"    />
+        <result property="zczj"    column="zczj"    />
+        <result property="sqsjzczj"    column="sqsjzczj"    />
+        <result property="fjFirst"    column="fj_first"    />
+        <result property="fjSecond"    column="fj_second"    />
+        <result property="fjThird"    column="fj_third"    />
+        <result property="fjFourth"    column="fj_fourth"    />
+        <result property="fjFifth"    column="fj_fifth"    />
+        <result property="fjSixth"    column="fj_sixth"    />
+        <result property="fjSeventh"    column="fj_seventh"    />
+        <result property="fjEighth"    column="fj_eighth"    />
+        <result property="mzShjg"    column="mz_shjg"    />
+        <result property="mzShyj"    column="mz_shyj"    />
+        <result property="mzShsj"    column="mz_shsj"    />
+        <result property="czShjg"    column="cz_shjg"    />
+        <result property="czShyj"    column="cz_shyj"    />
+        <result property="czShsj"    column="cz_shsj"    />
+        <result property="status"    column="status"    />
+        <result property="createTimeStr"    column="create_time_str"    />
+        <result property="createAreaCode"    column="create_area_code"    />
+        <result property="createUserId"    column="create_user_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createUserType"    column="create_user_type"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="createUnitName"    column="create_unit_name"    />
+        <result property="updateTimeStr"    column="update_time_str"    />
+        <result property="updateUserId"    column="update_user_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateUnit"    column="update_unit"    />
+        <result property="updateUnitName"    column="update_unit_name"    />
+    </resultMap>
+
+
+    <select id="selectShList" parameterType="ZwywXmsbJgjs" resultMap="ZwywXmsbJgjsResult">
+        select * from zwyw_xmsb_jgjs
+        <where>
+            status in ('1', '2', '3')
+            <if test="xmdw != null  and xmdw != ''"> and xmdw like concat('%', #{xmdw}, '%')</if>
+            <if test="xmxz != null  and xmxz != ''"> and xmxz = #{xmxz}</if>
+            <if test="xzqhId != null  and xzqhId != ''"> and xzqh_id like concat(#{xzqhId}, '%')</if>
+            <if test='editFlg == "1"'> AND (create_unit IN (SELECT dept_id FROM sys_dept WHERE parent_id = #{createUnit}))</if>
+            <if test='editFlg == "0"'> AND (create_unit IN (SELECT dept_id FROM sys_dept WHERE dept_id = #{createUnit} OR parent_id = #{createUnit}))</if>
+        </where>
+    </select>
+</mapper>

+ 60 - 0
ruoyi-modules/mz-business-xmsb/src/main/resources/mapper/business/ZwywXmsbSzMapper.xml

@@ -0,0 +1,60 @@
+<?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.ruoyi.business.mapper.ZwywXmsbSzMapper">
+    
+    <resultMap type="ZwywXmsbSz" id="ZwywXmsbSzResult">
+        <result property="id"    column="id"    />
+        <result property="jgmc"    column="jgmc"    />
+        <result property="dz"    column="dz"    />
+        <result property="lxr"    column="lxr"    />
+        <result property="sjh"    column="sjh"    />
+        <result property="zcws"    column="zcws"    />
+        <result property="hlxcws"    column="hlxcws"    />
+        <result property="zqzcws"    column="zqzcws"    />
+        <result property="xyszrys"    column="xyszrys"    />
+        <result property="ztzs"    column="ztzs"    />
+        <result property="pbhlrys"    column="pbhlrys"    />
+        <result property="azdcgym"    column="azdcgym"    />
+        <result property="pbhlxc"    column="pbhlxc"    />
+        <result property="chaqss"    column="chaqss"    />
+        <result property="snrz"    column="snrz"    />
+        <result property="qbzs"    column="qbzs"    />
+        <result property="szrzkfkj"    column="szrzkfkj"    />
+        <result property="szlyxyljgxp"    column="szlyxyljgxp"    />
+        <result property="azjkss"    column="azjkss"    />
+        <result property="snrzzhdkj"    column="snrzzhdkj"    />
+        <result property="qt"    column="qt"    />
+        <result property="xmgk"    column="xmgk"    />
+        <result property="jgShjg"    column="jg_shjg"    />
+        <result property="jgShyj"    column="jg_shyj"    />
+        <result property="jgShsj"    column="jg_shsj"    />
+        <result property="mzShjg"    column="mz_shjg"    />
+        <result property="mzShyj"    column="mz_shyj"    />
+        <result property="mzShsj"    column="mz_shsj"    />
+        <result property="bz"    column="bz"    />
+        <result property="status"    column="status"    />
+        <result property="createTimeStr"    column="create_time_str"    />
+        <result property="createAreaCode"    column="create_area_code"    />
+        <result property="createUserId"    column="create_user_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createUserType"    column="create_user_type"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="createUnitName"    column="create_unit_name"    />
+        <result property="updateTimeStr"    column="update_time_str"    />
+        <result property="updateUserId"    column="update_user_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateUnit"    column="update_unit"    />
+        <result property="updateUnitName"    column="update_unit_name"    />
+    </resultMap>
+
+    <select id="selectShList" parameterType="ZwywXmsbSz" resultMap="ZwywXmsbSzResult">
+        select *, '1' as editFlg from zwyw_xmsb_sz
+        <where>
+            status in ('1', '2', '3', '4')
+            <if test="jgmc != null  and jgmc != ''"> and jgmc like concat('%', #{jgmc}, '%')</if>
+            <if test="lxr != null  and lxr != ''"> and lxr like concat('%', #{lxr}, '%')</if>
+        </where>
+    </select>
+</mapper>

+ 58 - 0
ruoyi-modules/mz-business-xmsb/src/main/resources/mapper/business/ZwywXmsbYldyMapper.xml

@@ -0,0 +1,58 @@
+<?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.ruoyi.business.mapper.ZwywXmsbYldyMapper">
+    
+    <resultMap type="ZwywXmsbYldy" id="ZwywXmsbYldyResult">
+        <result property="id"    column="id"    />
+        <result property="xzqhId"    column="xzqh_id"    />
+        <result property="xzc"    column="xzc"    />
+        <result property="qczrk"    column="qczrk"    />
+        <result property="qclnrk"    column="qclnrk"    />
+        <result property="jzmj"    column="jzmj"    />
+        <result property="szcws"    column="szcws"    />
+        <result property="ssly"    column="ssly"    />
+        <result property="yszj"    column="yszj"    />
+        <result property="cwhzc"    column="cwhzc"    />
+        <result property="ddczsr"    column="ddczsr"    />
+        <result property="sqsjzczj"    column="sqsjzczj"    />
+        <result property="lxr"    column="lxr"    />
+        <result property="sjh"    column="sjh"    />
+        <result property="jsfa"    column="jsfa"    />
+        <result property="jsfaFj"    column="jsfa_fj"    />
+        <result property="cwhShjg"    column="cwh_shjg"    />
+        <result property="cwhShyj"    column="cwh_shyj"    />
+        <result property="cwhShsj"    column="cwh_shsj"    />
+        <result property="xzShjg"    column="xz_shjg"    />
+        <result property="xzShyj"    column="xz_shyj"    />
+        <result property="xzShsj"    column="xz_shsj"    />
+        <result property="mzShjg"    column="mz_shjg"    />
+        <result property="mzShyj"    column="mz_shyj"    />
+        <result property="mzShsj"    column="mz_shsj"    />
+        <result property="status"    column="status"    />
+        <result property="createTimeStr"    column="create_time_str"    />
+        <result property="createAreaCode"    column="create_area_code"    />
+        <result property="createUserId"    column="create_user_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createUserType"    column="create_user_type"    />
+        <result property="createUnit"    column="create_unit"    />
+        <result property="createUnitName"    column="create_unit_name"    />
+        <result property="updateTimeStr"    column="update_time_str"    />
+        <result property="updateUserId"    column="update_user_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateUnit"    column="update_unit"    />
+        <result property="updateUnitName"    column="update_unit_name"    />
+    </resultMap>
+
+    <select id="selectShList" parameterType="ZwywXmsbYldy" resultMap="ZwywXmsbYldyResult">
+        select *, '1' as editFlg from zwyw_xmsb_yldy
+        <where>
+            status in ('1', '2', '3', '4', '5')
+            <if test="xzc != null  and xzc != ''"> and xzc like concat('%', #{xzc}, '%')</if>
+            <if test="ssly != null  and ssly != ''"> and ssly = #{ssly}</if>
+            <if test="xzqhId != null  and xzqhId != ''"> and xzqh_id like concat(#{xzqhId}, '%')</if>
+        </where>
+    </select>
+
+</mapper>

+ 7 - 0
ruoyi-modules/mz-business/pom.xml

@@ -92,6 +92,13 @@
             <version>${ruoyi.version}</version>
         </dependency>
 
+        <!-- business- xmsb-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-modules-business-xmsb</artifactId>
+            <version>${ruoyi.version}</version>
+        </dependency>
+
         <!-- business- djpd-->
         <dependency>
             <groupId>com.ruoyi</groupId>

+ 117 - 0
ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywXmsbFwzxController.java

@@ -0,0 +1,117 @@
+package com.ruoyi.business.controller;
+
+import com.ruoyi.business.domain.ZwywXmsbFwzx;
+import com.ruoyi.business.service.IZwywXmsbFwzxService;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.system.validate.group.AddGroup;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 项目申报综合嵌入式社区居家养老服务中心项目信息Controller
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@RestController
+@RequestMapping("/fwzx")
+public class ZwywXmsbFwzxController extends BaseController
+{
+    @Autowired
+    private IZwywXmsbFwzxService zwywXmsbFwzxService;
+
+    /**
+     * 查询项目申报综合嵌入式社区居家养老服务中心项目信息列表
+     */
+    @RequiresPermissions("business:fwzx:list")
+    @GetMapping("/list")
+    public TableDataInfo list(ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        startPage();
+        List<ZwywXmsbFwzx> list = zwywXmsbFwzxService.selectZwywXmsbFwzxList(zwywXmsbFwzx);
+        return getDataTable(list);
+    }
+
+    @RequiresPermissions("business:fwzxsh:list")
+    @GetMapping("/sh/list")
+    public TableDataInfo shlist(ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        startPage();
+        List<ZwywXmsbFwzx> list = zwywXmsbFwzxService.selectZwywXmsbFwzxShList(zwywXmsbFwzx);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出项目申报综合嵌入式社区居家养老服务中心项目信息列表
+     */
+    @RequiresPermissions("business:fwzx:export")
+    @Log(title = "项目申报综合嵌入式社区居家养老服务中心项目信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        List<ZwywXmsbFwzx> list = zwywXmsbFwzxService.selectZwywXmsbFwzxList(zwywXmsbFwzx);
+        ExcelUtil<ZwywXmsbFwzx> util = new ExcelUtil<ZwywXmsbFwzx>(ZwywXmsbFwzx.class);
+        util.exportExcel(response, list, "项目申报综合嵌入式社区居家养老服务中心项目信息数据");
+    }
+
+    /**
+     * 获取项目申报综合嵌入式社区居家养老服务中心项目信息详细信息
+     */
+    @RequiresPermissions(value = {"business:fwzx:query","business:fwzxsh:query"}, logical = Logical.OR)
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(zwywXmsbFwzxService.selectZwywXmsbFwzxById(id));
+    }
+
+    /**
+     * 新增项目申报综合嵌入式社区居家养老服务中心项目信息
+     */
+    @RequiresPermissions("business:fwzx:add")
+    @Log(title = "项目申报综合嵌入式社区居家养老服务中心项目信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated({AddGroup.class}) @RequestBody ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        return toAjax(zwywXmsbFwzxService.insertZwywXmsbFwzx(zwywXmsbFwzx),zwywXmsbFwzx.getId());
+    }
+
+    /**
+     * 修改项目申报综合嵌入式社区居家养老服务中心项目信息
+     */
+    @RequiresPermissions(value = {"business:fwzx:edit","business:fwzxsh:sh"}, logical = Logical.OR)
+    @Log(title = "项目申报综合嵌入式社区居家养老服务中心项目信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody ZwywXmsbFwzx zwywXmsbFwzx)
+    {
+        return toAjax(zwywXmsbFwzxService.updateZwywXmsbFwzx(zwywXmsbFwzx));
+    }
+
+    /**
+     * 删除项目申报综合嵌入式社区居家养老服务中心项目信息
+     */
+    @RequiresPermissions("business:fwzx:remove")
+    @Log(title = "项目申报综合嵌入式社区居家养老服务中心项目信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(zwywXmsbFwzxService.deleteZwywXmsbFwzxByIds(ids));
+    }
+
+    @RequiresPermissions("business:fwzx:edit")
+    @GetMapping(value = "/status/{id}")
+    public AjaxResult changeStatus(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(zwywXmsbFwzxService.changeStatus(id));
+    }
+}

+ 117 - 0
ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywXmsbJgjsController.java

@@ -0,0 +1,117 @@
+package com.ruoyi.business.controller;
+
+import com.ruoyi.business.domain.ZwywXmsbJgjs;
+import com.ruoyi.business.service.IZwywXmsbJgjsService;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.system.validate.group.AddGroup;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 项目申报公办养老机构建设项目信息Controller
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@RestController
+@RequestMapping("/jgjs")
+public class ZwywXmsbJgjsController extends BaseController
+{
+    @Autowired
+    private IZwywXmsbJgjsService zwywXmsbJgjsService;
+
+    /**
+     * 查询项目申报公办养老机构建设项目信息列表
+     */
+    @RequiresPermissions("business:jgjs:list")
+    @GetMapping("/list")
+    public TableDataInfo list(ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        startPage();
+        List<ZwywXmsbJgjs> list = zwywXmsbJgjsService.selectZwywXmsbJgjsList(zwywXmsbJgjs);
+        return getDataTable(list);
+    }
+
+    @RequiresPermissions("business:jgjssh:list")
+    @GetMapping("/sh/list")
+    public TableDataInfo shlist(ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        startPage();
+        List<ZwywXmsbJgjs> list = zwywXmsbJgjsService.selectZwywXmsbJgjsShList(zwywXmsbJgjs);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出项目申报公办养老机构建设项目信息列表
+     */
+    @RequiresPermissions("business:jgjs:export")
+    @Log(title = "项目申报公办养老机构建设项目信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        List<ZwywXmsbJgjs> list = zwywXmsbJgjsService.selectZwywXmsbJgjsList(zwywXmsbJgjs);
+        ExcelUtil<ZwywXmsbJgjs> util = new ExcelUtil<ZwywXmsbJgjs>(ZwywXmsbJgjs.class);
+        util.exportExcel(response, list, "项目申报公办养老机构建设项目信息数据");
+    }
+
+    /**
+     * 获取项目申报公办养老机构建设项目信息详细信息
+     */
+    @RequiresPermissions(value = {"business:jgjs:query","business:jgjssh:query"}, logical = Logical.OR)
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(zwywXmsbJgjsService.selectZwywXmsbJgjsById(id));
+    }
+
+    /**
+     * 新增项目申报公办养老机构建设项目信息
+     */
+    @RequiresPermissions("business:jgjs:add")
+    @Log(title = "项目申报公办养老机构建设项目信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated({AddGroup.class}) @RequestBody ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        return toAjax(zwywXmsbJgjsService.insertZwywXmsbJgjs(zwywXmsbJgjs),zwywXmsbJgjs.getId());
+    }
+
+    /**
+     * 修改项目申报公办养老机构建设项目信息
+     */
+    @RequiresPermissions(value = {"business:jgjs:edit","business:jgjssh:sh"}, logical = Logical.OR)
+    @Log(title = "项目申报公办养老机构建设项目信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody ZwywXmsbJgjs zwywXmsbJgjs)
+    {
+        return toAjax(zwywXmsbJgjsService.updateZwywXmsbJgjs(zwywXmsbJgjs));
+    }
+
+    /**
+     * 删除项目申报公办养老机构建设项目信息
+     */
+    @RequiresPermissions("business:jgjs:remove")
+    @Log(title = "项目申报公办养老机构建设项目信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(zwywXmsbJgjsService.deleteZwywXmsbJgjsByIds(ids));
+    }
+    @RequiresPermissions("business:jgjs:edit")
+    @GetMapping(value = "/status/{id}")
+    public AjaxResult changeStatus(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(zwywXmsbJgjsService.changeStatus(id));
+    }
+
+}

+ 117 - 0
ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywXmsbSzController.java

@@ -0,0 +1,117 @@
+package com.ruoyi.business.controller;
+
+import com.ruoyi.business.domain.ZwywXmsbSz;
+import com.ruoyi.business.service.IZwywXmsbSzService;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.system.validate.group.AddGroup;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 项目申报失智照护专区建设项目信息Controller
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@RestController
+@RequestMapping("/sz")
+public class ZwywXmsbSzController extends BaseController
+{
+    @Autowired
+    private IZwywXmsbSzService zwywXmsbSzService;
+
+    /**
+     * 查询项目申报失智照护专区建设项目信息列表
+     */
+    @RequiresPermissions("business:sz:list")
+    @GetMapping("/list")
+    public TableDataInfo list(ZwywXmsbSz zwywXmsbSz)
+    {
+        startPage();
+        List<ZwywXmsbSz> list = zwywXmsbSzService.selectZwywXmsbSzList(zwywXmsbSz);
+        return getDataTable(list);
+    }
+
+    @RequiresPermissions("business:szsh:list")
+    @GetMapping("/sh/list")
+    public TableDataInfo shlist(ZwywXmsbSz zwywXmsbSz)
+    {
+        startPage();
+        List<ZwywXmsbSz> list = zwywXmsbSzService.selectZwywXmsbSzShList(zwywXmsbSz);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出项目申报失智照护专区建设项目信息列表
+     */
+    @RequiresPermissions("business:sz:export")
+    @Log(title = "项目申报失智照护专区建设项目信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ZwywXmsbSz zwywXmsbSz)
+    {
+        List<ZwywXmsbSz> list = zwywXmsbSzService.selectZwywXmsbSzList(zwywXmsbSz);
+        ExcelUtil<ZwywXmsbSz> util = new ExcelUtil<ZwywXmsbSz>(ZwywXmsbSz.class);
+        util.exportExcel(response, list, "项目申报失智照护专区建设项目信息数据");
+    }
+
+    /**
+     * 获取项目申报失智照护专区建设项目信息详细信息
+     */
+    @RequiresPermissions(value = {"business:sz:query","business:szsh:query"}, logical = Logical.OR)
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(zwywXmsbSzService.selectZwywXmsbSzById(id));
+    }
+
+    /**
+     * 新增项目申报失智照护专区建设项目信息
+     */
+    @RequiresPermissions("business:sz:add")
+    @Log(title = "项目申报失智照护专区建设项目信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated({AddGroup.class}) @RequestBody ZwywXmsbSz zwywXmsbSz)
+    {
+        return toAjax(zwywXmsbSzService.insertZwywXmsbSz(zwywXmsbSz),zwywXmsbSz.getId());
+    }
+
+    /**
+     * 修改项目申报失智照护专区建设项目信息
+     */
+    @RequiresPermissions(value = {"business:sz:edit","business:szsh:sh"}, logical = Logical.OR)
+    @Log(title = "项目申报失智照护专区建设项目信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody ZwywXmsbSz zwywXmsbSz)
+    {
+        return toAjax(zwywXmsbSzService.updateZwywXmsbSz(zwywXmsbSz));
+    }
+
+    /**
+     * 删除项目申报失智照护专区建设项目信息
+     */
+    @RequiresPermissions("business:sz:remove")
+    @Log(title = "项目申报失智照护专区建设项目信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(zwywXmsbSzService.deleteZwywXmsbSzByIds(ids));
+    }
+
+    @RequiresPermissions("business:sz:edit")
+    @GetMapping(value = "/status/{id}")
+    public AjaxResult changeStatus(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(zwywXmsbSzService.changeStatus(id));
+    }
+}

+ 117 - 0
ruoyi-modules/mz-business/src/main/java/com/ruoyi/business/controller/ZwywXmsbYldyController.java

@@ -0,0 +1,117 @@
+package com.ruoyi.business.controller;
+
+import com.ruoyi.business.domain.ZwywXmsbYldy;
+import com.ruoyi.business.service.IZwywXmsbYldyService;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.system.validate.group.AddGroup;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 项目申报农村养老大院项目信息Controller
+ * 
+ * @author sun
+ * @date 2022-10-13
+ */
+@RestController
+@RequestMapping("/yldy")
+public class ZwywXmsbYldyController extends BaseController
+{
+    @Autowired
+    private IZwywXmsbYldyService zwywXmsbYldyService;
+
+    /**
+     * 查询项目申报农村养老大院项目信息列表
+     */
+    @RequiresPermissions("business:yldy:list")
+    @GetMapping("/list")
+    public TableDataInfo list(ZwywXmsbYldy zwywXmsbYldy)
+    {
+        startPage();
+        List<ZwywXmsbYldy> list = zwywXmsbYldyService.selectZwywXmsbYldyList(zwywXmsbYldy);
+        return getDataTable(list);
+    }
+
+    @RequiresPermissions("business:yldysh:list")
+    @GetMapping("/sh/list")
+    public TableDataInfo shlist(ZwywXmsbYldy zwywXmsbYldy)
+    {
+        startPage();
+        List<ZwywXmsbYldy> list = zwywXmsbYldyService.selectZwywXmsbYldyShList(zwywXmsbYldy);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出项目申报农村养老大院项目信息列表
+     */
+    @RequiresPermissions("business:yldy:export")
+    @Log(title = "项目申报农村养老大院项目信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ZwywXmsbYldy zwywXmsbYldy)
+    {
+        List<ZwywXmsbYldy> list = zwywXmsbYldyService.selectZwywXmsbYldyList(zwywXmsbYldy);
+        ExcelUtil<ZwywXmsbYldy> util = new ExcelUtil<ZwywXmsbYldy>(ZwywXmsbYldy.class);
+        util.exportExcel(response, list, "项目申报农村养老大院项目信息数据");
+    }
+
+    /**
+     * 获取项目申报农村养老大院项目信息详细信息
+     */
+    @RequiresPermissions(value = {"business:yldy:query","business:yldysh:query"}, logical = Logical.OR)
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(zwywXmsbYldyService.selectZwywXmsbYldyById(id));
+    }
+
+    /**
+     * 新增项目申报农村养老大院项目信息
+     */
+    @RequiresPermissions("business:yldy:add")
+    @Log(title = "项目申报农村养老大院项目信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated({AddGroup.class}) @RequestBody ZwywXmsbYldy zwywXmsbYldy)
+    {
+        return toAjax(zwywXmsbYldyService.insertZwywXmsbYldy(zwywXmsbYldy),zwywXmsbYldy.getId());
+    }
+
+    /**
+     * 修改项目申报农村养老大院项目信息
+     */
+    @RequiresPermissions(value = {"business:yldy:edit","business:yldysh:sh"}, logical = Logical.OR)
+    @Log(title = "项目申报农村养老大院项目信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody ZwywXmsbYldy zwywXmsbYldy)
+    {
+        return toAjax(zwywXmsbYldyService.updateZwywXmsbYldy(zwywXmsbYldy));
+    }
+
+    /**
+     * 删除项目申报农村养老大院项目信息
+     */
+    @RequiresPermissions("business:yldy:remove")
+    @Log(title = "项目申报农村养老大院项目信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(zwywXmsbYldyService.deleteZwywXmsbYldyByIds(ids));
+    }
+
+    @RequiresPermissions("business:yldy:edit")
+    @GetMapping(value = "/status/{id}")
+    public AjaxResult changeStatus(@PathVariable("id") String id)
+    {
+        return AjaxResult.success(zwywXmsbYldyService.changeStatus(id));
+    }
+}

+ 1 - 0
ruoyi-modules/pom.xml

@@ -24,6 +24,7 @@
         <module>mz-business-hljnds</module>
         <module>mz-business-tsxdxm</module>
         <module>mz-business-btgl</module>
+        <module>mz-business-xmsb</module>
         <module>mz-business-lrgl</module>
         <module>mz-business-lhcj</module>
         <module>mz-business-djpd</module>

+ 60 - 0
ruoyi-ui/src/api/business/xmsb/fwzx.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询项目申报综合嵌入式社区居家养老服务中心项目信息列表
+export function listFwzx(query) {
+  return request({
+    url: '/business/fwzx/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询项目申报综合嵌入式社区居家养老服务中心项目信息列表
+export function listFwzxSh(query) {
+  return request({
+    url: '/business/fwzx/sh/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询项目申报综合嵌入式社区居家养老服务中心项目信息详细
+export function getFwzx(id) {
+  return request({
+    url: '/business/fwzx/' + id,
+    method: 'get'
+  })
+}
+
+// 新增项目申报综合嵌入式社区居家养老服务中心项目信息
+export function addFwzx(data) {
+  return request({
+    url: '/business/fwzx',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改项目申报综合嵌入式社区居家养老服务中心项目信息
+export function updateFwzx(data) {
+  return request({
+    url: '/business/fwzx',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除项目申报综合嵌入式社区居家养老服务中心项目信息
+export function delFwzx(id) {
+  return request({
+    url: '/business/fwzx/' + id,
+    method: 'delete'
+  })
+}
+
+export function changeStatus(id) {
+  return request({
+    url: '/business/fwzx/status/' + id,
+    method: 'get'
+  })
+}

+ 60 - 0
ruoyi-ui/src/api/business/xmsb/jgjs.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询项目申报公办养老机构建设项目信息列表
+export function listJgjs(query) {
+  return request({
+    url: '/business/jgjs/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询项目申报公办养老机构建设项目信息列表
+export function listJgjsSh(query) {
+  return request({
+    url: '/business/jgjs/sh/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询项目申报公办养老机构建设项目信息详细
+export function getJgjs(id) {
+  return request({
+    url: '/business/jgjs/' + id,
+    method: 'get'
+  })
+}
+
+// 新增项目申报公办养老机构建设项目信息
+export function addJgjs(data) {
+  return request({
+    url: '/business/jgjs',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改项目申报公办养老机构建设项目信息
+export function updateJgjs(data) {
+  return request({
+    url: '/business/jgjs',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除项目申报公办养老机构建设项目信息
+export function delJgjs(id) {
+  return request({
+    url: '/business/jgjs/' + id,
+    method: 'delete'
+  })
+}
+
+export function changeStatus(id) {
+  return request({
+    url: '/business/jgjs/status/' + id,
+    method: 'get'
+  })
+}

+ 60 - 0
ruoyi-ui/src/api/business/xmsb/sz.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询项目申报失智照护专区建设项目信息列表
+export function listSz(query) {
+  return request({
+    url: '/business/sz/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询项目申报失智照护专区建设项目信息列表
+export function listSzSh(query) {
+  return request({
+    url: '/business/sz/sh/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询项目申报失智照护专区建设项目信息详细
+export function getSz(id) {
+  return request({
+    url: '/business/sz/' + id,
+    method: 'get'
+  })
+}
+
+// 新增项目申报失智照护专区建设项目信息
+export function addSz(data) {
+  return request({
+    url: '/business/sz',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改项目申报失智照护专区建设项目信息
+export function updateSz(data) {
+  return request({
+    url: '/business/sz',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除项目申报失智照护专区建设项目信息
+export function delSz(id) {
+  return request({
+    url: '/business/sz/' + id,
+    method: 'delete'
+  })
+}
+
+export function changeStatus(id) {
+  return request({
+    url: '/business/sz/status/' + id,
+    method: 'get'
+  })
+}

+ 60 - 0
ruoyi-ui/src/api/business/xmsb/yldy.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询项目申报农村养老大院项目信息列表
+export function listYldy(query) {
+  return request({
+    url: '/business/yldy/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询项目申报农村养老大院项目信息列表
+export function listYldySh(query) {
+  return request({
+    url: '/business/yldy/sh/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询项目申报农村养老大院项目信息详细
+export function getYldy(id) {
+  return request({
+    url: '/business/yldy/' + id,
+    method: 'get'
+  })
+}
+
+// 新增项目申报农村养老大院项目信息
+export function addYldy(data) {
+  return request({
+    url: '/business/yldy',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改项目申报农村养老大院项目信息
+export function updateYldy(data) {
+  return request({
+    url: '/business/yldy',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除项目申报农村养老大院项目信息
+export function delYldy(id) {
+  return request({
+    url: '/business/yldy/' + id,
+    method: 'delete'
+  })
+}
+
+export function changeStatus(id) {
+  return request({
+    url: '/business/yldy/status/' + id,
+    method: 'get'
+  })
+}

+ 596 - 0
ruoyi-ui/src/views/business/xmsb/fwzx/index.vue

@@ -0,0 +1,596 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="申报单位" prop="sbdw">
+        <el-input
+          v-model="queryParams.sbdw"
+          placeholder="请输入申报单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="项目名称" prop="xmmc">
+        <el-input
+          v-model="queryParams.xmmc"
+          placeholder="请输入项目名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="运营模式" prop="yyms">
+        <el-select
+          v-model="queryParams.yyms"
+          placeholder="请选择运营模式"
+          clearable
+        >
+          <el-option
+            v-for="dict in dict.type.XZ100"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['business:fwzx:add']"
+          >新增</el-button
+        >
+      </el-col>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['business:fwzx:export']"
+        >导出</el-button>
+      </el-col> -->
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="fwzxList">
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{
+            (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="申报单位" align="center" prop="sbdw" />
+      <el-table-column label="项目名称" align="center" prop="xmmc" />
+      <el-table-column label="联系人" align="center" prop="lxr" />
+      <el-table-column label="手机号" align="center" prop="sjh" />
+      <el-table-column label="建筑面积" align="center" prop="jzmj" />
+      <el-table-column label="床位总数" align="center" prop="cwzs" />
+      <el-table-column label="建设期开始" align="center" prop="jsqks" />
+      <el-table-column label="建设期结束" align="center" prop="jsqjs" />
+      <el-table-column label="流转状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ103" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="changeStatus(scope.row)"
+            v-hasPermi="['business:fwzx:edit']"
+            >提交</el-button
+          >
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:fwzx:edit']"
+            >修改</el-button
+          >
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row, scope.$index)"
+            v-hasPermi="['business:fwzx:remove']"
+            >删除</el-button
+          >
+          <el-button
+            v-if="scope.row.status != '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:fwzx:query']"
+            >详情</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改项目申报综合嵌入式社区居家养老服务中心项目信息对话框 -->
+    <el-dialog
+      v-dialog-drag
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="申报单位" prop="sbdw">
+          <el-input v-model="form.sbdw" placeholder="请输入申报单位" />
+        </el-form-item>
+
+        <el-form-item label="项目名称" prop="xmmc">
+          <el-input v-model="form.xmmc" placeholder="请输入项目名称" />
+        </el-form-item>
+
+        <el-form-item label="项目地址" prop="xmdz">
+          <el-input v-model="form.xmdz" placeholder="请输入项目地址" />
+        </el-form-item>
+
+        <el-form-item label="联系人" prop="lxr">
+          <el-input v-model="form.lxr" placeholder="请输入联系人" />
+        </el-form-item>
+
+        <el-form-item label="手机号" prop="sjh">
+          <el-input v-model="form.sjh" placeholder="请输入手机号" />
+        </el-form-item>
+
+        <el-form-item label="建筑面积" prop="jzmj">
+          <number
+            placeholder="建筑面积"
+            v-model.sync="form.jzmj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="床位总数" prop="cwzs">
+          <number
+            placeholder="床位总数"
+            v-model.sync="form.cwzs"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="护理型床位数" prop="hlxcws">
+          <number
+            placeholder="护理型床位数"
+            v-model.sync="form.hlxcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="建成后拟采取运营模式" prop="yyms">
+          <el-select
+            v-model="form.yyms"
+            placeholder="请选择建成后拟采取运营模式"
+          >
+            <el-option
+              v-for="dict in dict.type.XZ100"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="建设期开始" prop="jsqks">
+          <el-date-picker
+            clearable
+            v-model="form.jsqks"
+            type="month"
+            value-format="yyyyMM"
+            placeholder="请输入建设期开始时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="建设期结束" prop="jsqjs">
+          <el-date-picker
+            clearable
+            v-model="form.jsqjs"
+            type="month"
+            value-format="yyyyMM"
+            placeholder="请输入建设期结束时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="总投资(万元)" prop="ztz">
+          <number
+            placeholder="总投资(万元)"
+            v-model.sync="form.ztz"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="地方匹配资金(万元)" prop="dfppzj">
+          <number
+            placeholder="地方匹配资金(万元)"
+            v-model.sync="form.dfppzj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="申请省级资金(万元)" prop="sqsjzj">
+          <number
+            placeholder="申请省级资金(万元)"
+            v-model.sync="form.sqsjzj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="项目概况" prop="xmgk">
+          <el-input
+            v-model="form.xmgk"
+            type="textarea"
+            maxlength="400"
+            show-word-limit
+            placeholder="请输入项目概况"
+          />
+        </el-form-item>
+
+        <el-form-item label="项目概况附件" prop="xmgkFj">
+          <file-upload v-model="form.xmgkFj" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitForm"
+          :loading="submitFormLoading"
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addFwzx,
+  delFwzx,
+  getFwzx,
+  listFwzx,
+  updateFwzx,
+  changeStatus,
+} from "@/api/business/xmsb/fwzx";
+import { chineseOne, idCard, Regular } from "@/utils/regular";
+
+export default {
+  name: "Fwzx",
+  dicts: ["CZ002", "XZ100", "XZ103"],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      submitFormLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目申报综合嵌入式社区居家养老服务中心项目信息表格数据
+      fwzxList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        sbdw: [
+          { required: true, message: "申报单位不能为空", trigger: "blur" },
+          { max: 100, message: "申报单位不能超过100个字符", trigger: "blur" },
+        ],
+        xmmc: [
+          { required: true, message: "项目名称不能为空", trigger: "blur" },
+          { max: 120, message: "项目名称不能超过120个字符", trigger: "blur" },
+        ],
+        xmdz: [
+          { required: true, message: "项目地址不能为空", trigger: "blur" },
+          { max: 100, message: "项目地址不能超过100个字符", trigger: "blur" },
+        ],
+        lxr: [
+          { required: true, message: "联系人不能为空", trigger: "blur" },
+          { max: 72, message: "联系人不能超过72个字符", trigger: "blur" },
+        ],
+        sjh: [
+          { required: true, message: "手机号不能为空", trigger: "blur" },
+          {
+            pattern: Regular.Mobile,
+            message: "手机号格式不对",
+            trigger: "blur",
+          },
+        ],
+        jzmj: [
+          { required: true, message: "建筑面积不能为空", trigger: "blur" },
+        ],
+        cwzs: [
+          { required: true, message: "床位总数不能为空", trigger: "blur" },
+        ],
+        hlxcws: [
+          { required: true, message: "护理型床位数不能为空", trigger: "blur" },
+        ],
+        yyms: [
+          {
+            required: true,
+            message: "建成后拟采取运营模式不能为空",
+            trigger: "change",
+          },
+        ],
+        jsqks: [
+          { required: true, message: "建设期开始不能为空", trigger: "blur" },
+          { max: 6, message: "建设期开始不能超过6个字符", trigger: "blur" },
+        ],
+        jsqjs: [
+          { required: true, message: "建设期结束不能为空", trigger: "blur" },
+          { max: 6, message: "建设期结束不能超过6个字符", trigger: "blur" },
+        ],
+        ztz: [{ required: true, message: "总投资不能为空", trigger: "blur" }],
+        dfppzj: [
+          {
+            required: true,
+            message: "资金来源(地方匹配资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        sqsjzj: [
+          {
+            required: true,
+            message: "资金来源(申请省级资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        xmgk: [
+          { required: true, message: "项目概况不能为空", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询项目申报综合嵌入式社区居家养老服务中心项目信息列表 */
+    getList() {
+      this.loading = true;
+      listFwzx(this.queryParams).then((response) => {
+        this.fwzxList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading = false;
+      this.form = {
+        id: null,
+        sbdw: null,
+        xmmc: null,
+        xmdz: null,
+        lxr: null,
+        sjh: null,
+        jzmj: null,
+        cwzs: null,
+        hlxcws: null,
+        yyms: null,
+        jsqks: null,
+        jsqjs: null,
+        ztz: null,
+        dfppzj: null,
+        sqsjzj: null,
+        xmgk: null,
+        xmgkFj: null,
+        jdShjg: null,
+        jdShyj: null,
+        jdShsj: null,
+        mzShjg: null,
+        mzShyj: null,
+        mzShsj: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加项目申报综合嵌入式社区居家养老服务中心项目信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getFwzx(id).then((response) => {
+        this.form = response.data;
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(response.data);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改项目申报综合嵌入式社区居家养老服务中心项目信息";
+      });
+    },
+    changeStatus(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      changeStatus(id).then((response) => {
+        this.getList();
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.submitFormLoading = true;
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            let formData = this.comparisonObject(this.form, this.copyForm);
+            if (formData) {
+              updateFwzx({ ...formData, id: this.form.id })
+                .then((response) => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.fwzxList = this.dataReplacement(
+                    this.fwzxList,
+                    this.form.id,
+                    formData
+                  );
+                  // this.getList();
+                })
+                .finally(() => (this.submitFormLoading = false));
+            } else {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.submitFormLoading = false;
+            }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addFwzx(this.form)
+              .then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                // this.getList();
+                /****** sks 需要改动的地方 start ******/
+                if (this.queryParams.pageSize === this.fwzxList.length) {
+                  this.fwzxList.pop();
+                }
+                this.fwzxList.unshift({ ...this.form, id: response.data });
+                this.total++;
+                /****** sks 需要改动的地方 end ******/
+              })
+              .finally(() => (this.submitFormLoading = false));
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row, index) {
+      const ids = row.id || this.ids;
+      const xh =
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+      this.$modal
+        .confirm(
+          "确认删除" + this.changeDelData(row, "id", "ID值", xh) + "的记录?"
+        )
+        .then(function () {
+          return delFwzx(ids);
+        })
+        .then(() => {
+          // this.getList();
+          /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+          this.fwzxList.splice(index, 1);
+          if (this.fwzxList.length === 0) {
+            this.getList();
+          } else {
+            this.total--;
+          }
+          this.$modal.msgSuccess("删除成功");
+          /****** sks 需要改动的地方 end ******/
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "business/fwzx/export",
+        {
+          ...this.queryParams,
+        },
+        `fwzx_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 638 - 0
ruoyi-ui/src/views/business/xmsb/fwzxsh/index.vue

@@ -0,0 +1,638 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="申报单位" prop="sbdw">
+        <el-input
+          v-model="queryParams.sbdw"
+          placeholder="请输入申报单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="项目名称" prop="xmmc">
+        <el-input
+          v-model="queryParams.xmmc"
+          placeholder="请输入项目名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="运营模式" prop="yyms">
+        <el-select
+          v-model="queryParams.yyms"
+          placeholder="请选择运营模式"
+          clearable
+        >
+          <el-option
+            v-for="dict in dict.type.XZ100"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="fwzxList">
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{
+            (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="申报单位" align="center" prop="sbdw" />
+      <el-table-column label="项目名称" align="center" prop="xmmc" />
+      <el-table-column label="联系人" align="center" prop="lxr" />
+      <el-table-column label="手机号" align="center" prop="sjh" />
+      <el-table-column label="建筑面积" align="center" prop="jzmj" />
+      <el-table-column label="床位总数" align="center" prop="cwzs" />
+      <el-table-column label="建设期开始" align="center" prop="jsqks" />
+      <el-table-column label="建设期结束" align="center" prop="jsqjs" />
+      <el-table-column label="流转状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ103" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button
+          v-if="scope.row.editFlg == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:fwzxsh:sh']"
+            >审核</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:fwzxsh:query']"
+            >详情</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改项目申报综合嵌入式社区居家养老服务中心项目信息对话框 -->
+    <el-dialog
+      v-dialog-drag
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="申报单位" prop="sbdw">
+          <el-input v-model="form.sbdw" placeholder="请输入申报单位" />
+        </el-form-item>
+
+        <el-form-item label="项目名称" prop="xmmc">
+          <el-input v-model="form.xmmc" placeholder="请输入项目名称" />
+        </el-form-item>
+
+        <el-form-item label="项目地址" prop="xmdz">
+          <el-input v-model="form.xmdz" placeholder="请输入项目地址" />
+        </el-form-item>
+
+        <el-form-item label="联系人" prop="lxr">
+          <el-input v-model="form.lxr" placeholder="请输入联系人" />
+        </el-form-item>
+
+        <el-form-item label="手机号" prop="sjh">
+          <el-input v-model="form.sjh" placeholder="请输入手机号" />
+        </el-form-item>
+
+        <el-form-item label="建筑面积" prop="jzmj">
+          <number
+            placeholder="建筑面积"
+            v-model.sync="form.jzmj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="床位总数" prop="cwzs">
+          <number
+            placeholder="床位总数"
+            v-model.sync="form.cwzs"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="护理型床位数" prop="hlxcws">
+          <number
+            placeholder="护理型床位数"
+            v-model.sync="form.hlxcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="建成后拟采取运营模式" prop="yyms">
+          <el-select
+            v-model="form.yyms"
+            placeholder="请选择建成后拟采取运营模式"
+          >
+            <el-option
+              v-for="dict in dict.type.XZ100"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="建设期开始" prop="jsqks">
+          <el-date-picker
+            clearable
+            v-model="form.jsqks"
+            type="month"
+            value-format="yyyyMM"
+            placeholder="请输入建设期开始时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="建设期结束" prop="jsqjs">
+          <el-date-picker
+            clearable
+            v-model="form.jsqjs"
+            type="month"
+            value-format="yyyyMM"
+            placeholder="请输入建设期结束时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="总投资(万元)" prop="ztz">
+          <number
+            placeholder="总投资(万元)"
+            v-model.sync="form.ztz"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="地方匹配资金(万元)" prop="dfppzj">
+          <number
+            placeholder="地方匹配资金(万元)"
+            v-model.sync="form.dfppzj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="申请省级资金(万元)" prop="sqsjzj">
+          <number
+            placeholder="申请省级资金(万元)"
+            v-model.sync="form.sqsjzj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="项目概况" prop="xmgk">
+          <el-input
+            v-model="form.xmgk"
+            type="textarea"
+            maxlength="400"
+            show-word-limit
+            placeholder="请输入项目概况"
+          />
+        </el-form-item>
+
+        <el-form-item label="项目概况附件" prop="xmgkFj">
+          <file-upload v-model="form.xmgkFj" />
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'jd'" label="街道审核结果" prop="jdShjg">
+          <el-select v-model="form.jdShjg" placeholder="请选择街道审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'jd'" label="街道审核意见" prop="jdShyj">
+          <el-input
+            v-model="form.jdShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入街道审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'jd'" label="街道审核时间" prop="jdShsj">
+          <el-date-picker
+            clearable
+            v-model="form.jdShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择街道审核时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'mz'" label="民政局审核结果" prop="mzShjg">
+          <el-select v-model="form.mzShjg" placeholder="请选择民政局审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'mz'" label="民政局审核意见" prop="mzShyj">
+          <el-input
+            v-model="form.mzShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入民政局审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'mz'" label="民政局审核时间" prop="mzShsj">
+          <el-date-picker
+            clearable
+            v-model="form.mzShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择民政局审核时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitForm"
+          :loading="submitFormLoading"
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addFwzx,
+  delFwzx,
+  getFwzx,
+  listFwzxSh,
+  updateFwzx,
+} from "@/api/business/xmsb/fwzx";
+import { chineseOne, idCard, Regular } from "@/utils/regular";
+
+export default {
+  name: "Fwzx",
+  dicts: ["CZ002", "XZ100", "XZ103"],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      submitFormLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目申报综合嵌入式社区居家养老服务中心项目信息表格数据
+      fwzxList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      formStatus: "",
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        sbdw: [
+          { required: true, message: "申报单位不能为空", trigger: "blur" },
+          { max: 100, message: "申报单位不能超过100个字符", trigger: "blur" },
+        ],
+        xmmc: [
+          { required: true, message: "项目名称不能为空", trigger: "blur" },
+          { max: 120, message: "项目名称不能超过120个字符", trigger: "blur" },
+        ],
+        xmdz: [
+          { required: true, message: "项目地址不能为空", trigger: "blur" },
+          { max: 100, message: "项目地址不能超过100个字符", trigger: "blur" },
+        ],
+        lxr: [
+          { required: true, message: "联系人不能为空", trigger: "blur" },
+          { max: 72, message: "联系人不能超过72个字符", trigger: "blur" },
+        ],
+        sjh: [
+          { required: true, message: "手机号不能为空", trigger: "blur" },
+          {
+            pattern: Regular.Mobile,
+            message: "手机号格式不对",
+            trigger: "blur",
+          },
+        ],
+        jzmj: [
+          { required: true, message: "建筑面积不能为空", trigger: "blur" },
+        ],
+        cwzs: [
+          { required: true, message: "床位总数不能为空", trigger: "blur" },
+        ],
+        hlxcws: [
+          { required: true, message: "护理型床位数不能为空", trigger: "blur" },
+        ],
+        yyms: [
+          {
+            required: true,
+            message: "建成后拟采取运营模式不能为空",
+            trigger: "change",
+          },
+        ],
+        jsqks: [
+          { required: true, message: "建设期开始不能为空", trigger: "blur" },
+          { max: 6, message: "建设期开始不能超过6个字符", trigger: "blur" },
+        ],
+        jsqjs: [
+          { required: true, message: "建设期结束不能为空", trigger: "blur" },
+          { max: 6, message: "建设期结束不能超过6个字符", trigger: "blur" },
+        ],
+        ztz: [{ required: true, message: "总投资不能为空", trigger: "blur" }],
+        dfppzj: [
+          {
+            required: true,
+            message: "资金来源(地方匹配资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        sqsjzj: [
+          {
+            required: true,
+            message: "资金来源(申请省级资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        xmgk: [
+          { required: true, message: "项目概况不能为空", trigger: "blur" },
+        ],
+        jdShjg: [
+          { required: true, message: "审核结果不能为空", trigger: "blur" },
+        ],
+        jdShyj: [
+          { required: true, message: "审核意见不能为空", trigger: "blur" },
+        ],
+        jdShsj: [
+          { required: true, message: "审核时间不能为空", trigger: "blur" },
+        ],
+        mzShjg: [
+          { required: true, message: "审核结果不能为空", trigger: "blur" },
+        ],
+        mzShyj: [
+          { required: true, message: "审核意见不能为空", trigger: "blur" },
+        ],
+        mzShsj: [
+          { required: true, message: "审核时间不能为空", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询项目申报综合嵌入式社区居家养老服务中心项目信息列表 */
+    getList() {
+      this.loading = true;
+      listFwzxSh(this.queryParams).then((response) => {
+        this.fwzxList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading = false;
+      this.form = {
+        id: null,
+        sbdw: null,
+        xmmc: null,
+        xmdz: null,
+        lxr: null,
+        sjh: null,
+        jzmj: null,
+        cwzs: null,
+        hlxcws: null,
+        yyms: null,
+        jsqks: null,
+        jsqjs: null,
+        ztz: null,
+        dfppzj: null,
+        sqsjzj: null,
+        xmgk: null,
+        xmgkFj: null,
+        jdShjg: null,
+        jdShyj: null,
+        jdShsj: null,
+        mzShjg: null,
+        mzShyj: null,
+        mzShsj: null,
+        state: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加项目申报综合嵌入式社区居家养老服务中心项目信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getFwzx(id).then((response) => {
+        this.form = response.data;
+        if (response.data.status == '1') {
+          this.formStatus = 'jd'
+        }
+        if (response.data.status == '2') {
+          this.formStatus = 'mz'
+        }
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(response.data);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改项目申报综合嵌入式社区居家养老服务中心项目信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.submitFormLoading = true;
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            let formData = this.comparisonObject(this.form, this.copyForm);
+            if (formData) {
+              updateFwzx({ ...formData, id: this.form.id })
+                .then((response) => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.fwzxList = this.dataReplacement(
+                    this.fwzxList,
+                    this.form.id,
+                    formData
+                  );
+                  // this.getList();
+                })
+                .finally(() => (this.submitFormLoading = false));
+            } else {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.submitFormLoading = false;
+            }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addFwzx(this.form)
+              .then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                // this.getList();
+                /****** sks 需要改动的地方 start ******/
+                if (this.queryParams.pageSize === this.fwzxList.length) {
+                  this.fwzxList.pop();
+                }
+                this.fwzxList.unshift({ ...this.form, id: response.data });
+                this.total++;
+                /****** sks 需要改动的地方 end ******/
+              })
+              .finally(() => (this.submitFormLoading = false));
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row, index) {
+      const ids = row.id || this.ids;
+      const xh =
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+      this.$modal
+        .confirm(
+          "确认删除" + this.changeDelData(row, "id", "ID值", xh) + "的记录?"
+        )
+        .then(function () {
+          return delFwzx(ids);
+        })
+        .then(() => {
+          // this.getList();
+          /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+          this.fwzxList.splice(index, 1);
+          if (this.fwzxList.length === 0) {
+            this.getList();
+          } else {
+            this.total--;
+          }
+          this.$modal.msgSuccess("删除成功");
+          /****** sks 需要改动的地方 end ******/
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "business/fwzx/export",
+        {
+          ...this.queryParams,
+        },
+        `fwzx_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 699 - 0
ruoyi-ui/src/views/business/xmsb/jgjs/index.vue

@@ -0,0 +1,699 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="地区" prop="xzqh">
+        <RegionCascaderSelect
+          endLevel="4"
+          v-model="xzqh"
+          :opts="{ placeholder: '请选择地区' }"
+          style="width: 100%"
+          valueProp="code"
+        >
+        </RegionCascaderSelect>
+      </el-form-item>
+
+      <el-form-item label="项目单位" prop="xmdw">
+        <el-input
+          v-model="queryParams.xmdw"
+          placeholder="请输入项目单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="项目性质" prop="xmxz">
+        <el-select
+          v-model="queryParams.xmxz"
+          placeholder="请选择项目性质"
+          clearable
+        >
+          <el-option
+            v-for="dict in dict.type.XZ098"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['business:jgjs:add']"
+          >新增</el-button
+        >
+      </el-col>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['business:jgjs:export']"
+        >导出</el-button>
+      </el-col> -->
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="jgjsList">
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{
+            (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="地区" align="center" prop="xzqhName" />
+      <el-table-column label="项目单位" align="center" prop="xmdw" />
+      <el-table-column label="项目性质" align="center" prop="xmxz">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ098" :value="scope.row.xmxz" />
+        </template>
+      </el-table-column>
+      <el-table-column label="负责人" align="center" prop="fzr" />
+      <el-table-column label="手机号" align="center" prop="sjh" />
+      <el-table-column label="建筑面积" align="center" prop="jzmj" />
+      <el-table-column label="床位数量" align="center" prop="cwsl" />
+      <el-table-column label="流转状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ106" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="changeStatus(scope.row)"
+            v-hasPermi="['business:jgjs:edit']"
+            >提交</el-button
+          >
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:jgjs:edit']"
+            >修改</el-button
+          >
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row, scope.$index)"
+            v-hasPermi="['business:jgjs:remove']"
+            >删除</el-button
+          >
+          <el-button
+            v-if="scope.row.status != '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:jgjs:query']"
+            >详情</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改项目申报公办养老机构建设项目信息对话框 -->
+    <el-dialog
+      v-dialog-drag
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="地区" prop="xzqhId">
+          <RegionCascaderSelect
+            endLevel="4"
+            v-model="form.xzqhId"
+            :opts="{ placeholder: '请输入地区' }"
+            style="width: 100%"
+            valueProp="code"
+          >
+          </RegionCascaderSelect>
+        </el-form-item>
+
+        <el-form-item label="项目单位" prop="xmdw">
+          <el-input v-model="form.xmdw" placeholder="请输入项目单位" />
+        </el-form-item>
+
+        <el-form-item label="单位地址" prop="dwdz">
+          <el-input v-model="form.dwdz" placeholder="请输入单位地址" />
+        </el-form-item>
+
+        <el-form-item label="项目性质" prop="xmxz">
+          <el-select v-model="form.xmxz" placeholder="请选择项目性质">
+            <el-option
+              v-for="dict in dict.type.XZ098"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="负责人" prop="fzr">
+          <el-input v-model="form.fzr" placeholder="请输入负责人" />
+        </el-form-item>
+
+        <el-form-item label="手机号" prop="sjh">
+          <el-input v-model="form.sjh" placeholder="请输入手机号" />
+        </el-form-item>
+
+        <el-form-item label="建筑面积" prop="jzmj">
+          <number
+            placeholder="建筑面积"
+            v-model.sync="form.jzmj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="床位数量" prop="cwsl">
+          <number
+            placeholder="床位数量"
+            v-model.sync="form.cwsl"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="入住老年人数" prop="rzrs">
+          <number
+            placeholder="入住老年人数"
+            v-model.sync="form.rzrs"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="特困供养人数" prop="tkgyrs">
+          <number
+            placeholder="特困供养人数"
+            v-model.sync="form.tkgyrs"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="失能半失能" prop="snbsn">
+          <number
+            placeholder="失能半失能"
+            v-model.sync="form.snbsn"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="自理人数" prop="zlrs">
+          <number
+            placeholder="自理人数"
+            v-model.sync="form.zlrs"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="建设期开始" prop="jsqks">
+          <el-date-picker
+            clearable
+            v-model="form.jsqks"
+            type="month"
+            value-format="yyyyMM"
+            placeholder="请输入建设期开始时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="建设期结束" prop="jsqjs">
+          <el-date-picker
+            clearable
+            v-model="form.jsqjs"
+            type="month"
+            value-format="yyyyMM"
+            placeholder="请输入建设期结束时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="预算资金(万元)" prop="yszj">
+          <number
+            placeholder="预算资金(万元)"
+            v-model.sync="form.yszj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="当地政府投入(万元)" prop="ddzftr">
+          <number
+            placeholder="当地政府投入(万元)"
+            v-model.sync="form.ddzftr"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="自筹资金(万元)" prop="zczj">
+          <number
+            placeholder="自筹资金(万元)"
+            v-model.sync="form.zczj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="申请省级支持资金(万元)" prop="sqsjzczj">
+          <number
+            placeholder="申请省级支持资金(万元)"
+            v-model.sync="form.sqsjzczj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="附件清单" prop="fjFirst">
+          <file-upload v-model="form.fjFirst" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjSecond">
+          <file-upload v-model="form.fjSecond" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjThird">
+          <file-upload v-model="form.fjThird" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjFourth">
+          <file-upload v-model="form.fjFourth" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjFifth">
+          <file-upload v-model="form.fjFifth" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjSixth">
+          <file-upload v-model="form.fjSixth" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjSeventh">
+          <file-upload v-model="form.fjSeventh" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjEighth">
+          <file-upload v-model="form.fjEighth" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitForm"
+          :loading="submitFormLoading"
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addJgjs,
+  delJgjs,
+  getJgjs,
+  listJgjs,
+  updateJgjs,
+  changeStatus,
+} from "@/api/business/xmsb/jgjs";
+import { chineseOne, idCard, Regular } from "@/utils/regular";
+
+export default {
+  name: "Jgjs",
+  dicts: ["CZ002", "XZ098", "XZ106"],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      xzqh: [],
+      submitFormLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目申报公办养老机构建设项目信息表格数据
+      jgjsList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        xzqhId: [{ required: true, message: "地区不能为空", trigger: "change" }],
+        xmdw: [
+          { required: true, message: "项目单位不能为空", trigger: "blur" },
+          { max: 100, message: "项目单位不能超过100个字符", trigger: "blur" },
+        ],
+        dwdz: [
+          { required: true, message: "单位地址不能为空", trigger: "blur" },
+          { max: 100, message: "单位地址不能超过100个字符", trigger: "blur" },
+        ],
+        xmxz: [
+          { required: true, message: "项目性质不能为空", trigger: "change" },
+        ],
+        fzr: [
+          { required: true, message: "负责人不能为空", trigger: "blur" },
+          { max: 72, message: "负责人不能超过72个字符", trigger: "blur" },
+        ],
+        sjh: [
+          { required: true, message: "手机号不能为空", trigger: "blur" },
+          {
+            pattern: Regular.Mobile,
+            message: "手机号格式不对",
+            trigger: "blur",
+          },
+        ],
+        jzmj: [
+          { required: true, message: "建筑面积不能为空", trigger: "blur" },
+        ],
+        cwsl: [
+          { required: true, message: "床位数量不能为空", trigger: "blur" },
+        ],
+        rzrs: [
+          { required: true, message: "入住老年人数不能为空", trigger: "blur" },
+        ],
+        tkgyrs: [
+          { required: true, message: "特困供养人数不能为空", trigger: "blur" },
+        ],
+        snbsn: [
+          { required: true, message: "失能半失能不能为空", trigger: "blur" },
+        ],
+        zlrs: [
+          { required: true, message: "自理人数不能为空", trigger: "blur" },
+        ],
+        jsqks: [
+          { required: true, message: "建设期开始不能为空", trigger: "blur" },
+          { max: 8, message: "建设期开始不能超过8个字符", trigger: "blur" },
+        ],
+        jsqjs: [
+          { required: true, message: "建设期结束不能为空", trigger: "blur" },
+          { max: 8, message: "建设期结束不能超过8个字符", trigger: "blur" },
+        ],
+        yszj: [
+          { required: true, message: "预算资金不能为空", trigger: "blur" },
+        ],
+        ddzftr: [
+          {
+            required: true,
+            message: "资金来源(当地政府投入)不能为空",
+            trigger: "blur",
+          },
+        ],
+        zczj: [
+          {
+            required: true,
+            message: "资金来源(自筹资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        sqsjzczj: [
+          {
+            required: true,
+            message: "资金来源(申请省级支持资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询项目申报公办养老机构建设项目信息列表 */
+    getList() {
+      this.loading = true;
+      listJgjs(this.queryParams).then((response) => {
+        this.jgjsList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading = false;
+      this.form = {
+        id: null,
+        xzqhId: null,
+        xmdw: null,
+        dwdz: null,
+        xmxz: null,
+        fzr: null,
+        sjh: null,
+        jzmj: null,
+        cwsl: null,
+        rzrs: null,
+        tkgyrs: null,
+        snbsn: null,
+        zlrs: null,
+        jsqks: null,
+        jsqjs: null,
+        yszj: null,
+        ddzftr: null,
+        zczj: null,
+        sqsjzczj: null,
+        fjFirst: null,
+        fjSecond: null,
+        fjThird: null,
+        fjFourth: null,
+        fjFifth: null,
+        fjSixth: null,
+        fjSeventh: null,
+        fjEighth: null,
+        mzShjg: null,
+        mzShyj: null,
+        mzShsj: null,
+        czShjg: null,
+        czShyj: null,
+        czShsj: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      if (this.xzqh) {
+        this.queryParams.xzqhId = this.xzqh[this.xzqh.length - 1];
+      } else {
+        this.queryParams.xzqhId = null;
+      }
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.xzqh = [];
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加项目申报公办养老机构建设项目信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getJgjs(id).then((response) => {
+        this.form = response.data;
+        if (this.form.xzqhId) {
+          this.form.xzqhId = JSON.stringify(this.form.xzqhId.split(","));
+        } else {
+          this.form.xzqhId = "";
+        }
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(response.data);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改项目申报公办养老机构建设项目信息";
+      });
+    },
+    changeStatus(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      changeStatus(id).then((response) => {
+        this.getList();
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.submitFormLoading = true;
+          let szxzqh = ''
+          if (Array.isArray(this.form.xzqhId)) {
+            szxzqh = this.form.xzqhId[this.form.xzqhId.length - 1]
+          } else {
+            let data = JSON.parse(this.form.xzqhId)
+            szxzqh = data[data.length - 1]
+          }
+
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            let formData = this.comparisonObject(this.form, this.copyForm);
+            if (formData) {
+              updateJgjs({ ...formData, id: this.form.id, xzqhId: szxzqh })
+                .then((response) => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.jgjsList = this.dataReplacement(
+                    this.jgjsList,
+                    this.form.id,
+                    formData
+                  );
+                  // this.getList();
+                })
+                .finally(() => (this.submitFormLoading = false));
+            } else {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.submitFormLoading = false;
+            }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addJgjs({...this.form, xzqhId: szxzqh})
+              .then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                // this.getList();
+                /****** sks 需要改动的地方 start ******/
+                if (this.queryParams.pageSize === this.jgjsList.length) {
+                  this.jgjsList.pop();
+                }
+                this.jgjsList.unshift({ ...this.form, id: response.data });
+                this.total++;
+                /****** sks 需要改动的地方 end ******/
+              })
+              .finally(() => (this.submitFormLoading = false));
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row, index) {
+      const ids = row.id || this.ids;
+      const xh =
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+      this.$modal
+        .confirm(
+          "确认删除" + this.changeDelData(row, "id", "ID值", xh) + "的记录?"
+        )
+        .then(function () {
+          return delJgjs(ids);
+        })
+        .then(() => {
+          // this.getList();
+          /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+          this.jgjsList.splice(index, 1);
+          if (this.jgjsList.length === 0) {
+            this.getList();
+          } else {
+            this.total--;
+          }
+          this.$modal.msgSuccess("删除成功");
+          /****** sks 需要改动的地方 end ******/
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "business/jgjs/export",
+        {
+          ...this.queryParams,
+        },
+        `jgjs_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 702 - 0
ruoyi-ui/src/views/business/xmsb/jgjssh/index.vue

@@ -0,0 +1,702 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="地区" prop="xzqh">
+        <RegionCascaderSelect
+          endLevel="4"
+          v-model="xzqh"
+          :opts="{ placeholder: '请选择地区' }"
+          style="width: 100%"
+          valueProp="code"
+        >
+        </RegionCascaderSelect>
+      </el-form-item>
+      <el-form-item label="项目单位" prop="xmdw">
+        <el-input
+          v-model="queryParams.xmdw"
+          placeholder="请输入项目单位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="项目性质" prop="xmxz">
+        <el-select
+          v-model="queryParams.xmxz"
+          placeholder="请选择项目性质"
+          clearable
+        >
+          <el-option
+            v-for="dict in dict.type.XZ098"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="jgjsList">
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{
+            (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="地区" align="center" prop="xzqhName" />
+      <el-table-column label="项目单位" align="center" prop="xmdw" />
+      <el-table-column label="项目性质" align="center" prop="xmxz">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ098" :value="scope.row.xmxz" />
+        </template>
+      </el-table-column>
+      <el-table-column label="负责人" align="center" prop="fzr" />
+      <el-table-column label="手机号" align="center" prop="sjh" />
+      <el-table-column label="建筑面积" align="center" prop="jzmj" />
+      <el-table-column label="床位数量" align="center" prop="cwsl" />
+      <el-table-column label="流转状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ106" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button
+            v-if="!scope.row.mzShjg"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:jgjssh:sh']"
+            >审核</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:jgjssh:query']"
+            >详情</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改项目申报公办养老机构建设项目信息对话框 -->
+    <el-dialog
+      v-dialog-drag
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="地区" prop="xzqhId">
+          <RegionCascaderSelect
+            endLevel="4"
+            v-model="xzqhId"
+            :opts="{ placeholder: '请输入地区' }"
+            style="width: 100%"
+            valueProp="code"
+          >
+          </RegionCascaderSelect>
+        </el-form-item>
+
+        <el-form-item label="项目单位" prop="xmdw">
+          <el-input v-model="form.xmdw" placeholder="请输入项目单位" />
+        </el-form-item>
+
+        <el-form-item label="单位地址" prop="dwdz">
+          <el-input v-model="form.dwdz" placeholder="请输入单位地址" />
+        </el-form-item>
+
+        <el-form-item label="项目性质" prop="xmxz">
+          <el-select v-model="form.xmxz" placeholder="请选择项目性质">
+            <el-option
+              v-for="dict in dict.type.XZ098"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="负责人" prop="fzr">
+          <el-input v-model="form.fzr" placeholder="请输入负责人" />
+        </el-form-item>
+
+        <el-form-item label="手机号" prop="sjh">
+          <el-input v-model="form.sjh" placeholder="请输入手机号" />
+        </el-form-item>
+
+        <el-form-item label="建筑面积" prop="jzmj">
+          <number
+            placeholder="建筑面积"
+            v-model.sync="form.jzmj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="床位数量" prop="cwsl">
+          <number
+            placeholder="床位数量"
+            v-model.sync="form.cwsl"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="入住老年人数" prop="rzrs">
+          <number
+            placeholder="入住老年人数"
+            v-model.sync="form.rzrs"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="特困供养人数" prop="tkgyrs">
+          <number
+            placeholder="特困供养人数"
+            v-model.sync="form.tkgyrs"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="失能半失能" prop="snbsn">
+          <number
+            placeholder="失能半失能"
+            v-model.sync="form.snbsn"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="自理人数" prop="zlrs">
+          <number
+            placeholder="自理人数"
+            v-model.sync="form.zlrs"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="建设期开始" prop="jsqks">
+          <el-input v-model="form.jsqks" placeholder="请输入建设期开始" />
+        </el-form-item>
+
+        <el-form-item label="建设期结束" prop="jsqjs">
+          <el-input v-model="form.jsqjs" placeholder="请输入建设期结束" />
+        </el-form-item>
+
+        <el-form-item label="预算资金(万元)" prop="yszj">
+          <number
+            placeholder="预算资金(万元)"
+            v-model.sync="form.yszj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="当地政府投入(万元)" prop="ddzftr">
+          <number
+            placeholder="当地政府投入(万元)"
+            v-model.sync="form.ddzftr"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="自筹资金(万元)" prop="zczj">
+          <number
+            placeholder="自筹资金(万元)"
+            v-model.sync="form.zczj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="申请省级支持资金(万元)" prop="sqsjzczj">
+          <number
+            placeholder="申请省级支持资金(万元)"
+            v-model.sync="form.sqsjzczj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="附件清单" prop="fjFirst">
+          <file-upload v-model="form.fjFirst" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjSecond">
+          <file-upload v-model="form.fjSecond" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjThird">
+          <file-upload v-model="form.fjThird" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjFourth">
+          <file-upload v-model="form.fjFourth" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjFifth">
+          <file-upload v-model="form.fjFifth" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjSixth">
+          <file-upload v-model="form.fjSixth" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjSeventh">
+          <file-upload v-model="form.fjSeventh" />
+        </el-form-item>
+
+        <el-form-item label="" prop="fjEighth">
+          <file-upload v-model="form.fjEighth" />
+        </el-form-item>
+
+        <el-form-item label="民政部门审核结果" prop="mzShjg">
+          <el-select v-model="form.mzShjg" placeholder="请选择民政部门审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="民政部门审核意见" prop="mzShyj">
+          <el-input
+            v-model="form.mzShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入民政部门审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item label="民政部门审核时间" prop="mzShsj">
+          <el-date-picker
+            clearable
+            v-model="form.mzShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择民政部门审核时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <!-- <el-form-item label="财政部门审核结果" prop="czShjg">
+          <el-select v-model="form.czShjg" placeholder="请选择财政部门审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="财政部门审核意见" prop="czShyj">
+          <el-input
+            v-model="form.czShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入财政部门审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item label="财政部门审核时间" prop="czShsj">
+          <el-date-picker
+            clearable
+            v-model="form.czShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择财政部门审核时间"
+          >
+          </el-date-picker>
+        </el-form-item> -->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitForm"
+          :loading="submitFormLoading"
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addJgjs,
+  delJgjs,
+  getJgjs,
+  listJgjsSh,
+  updateJgjs,
+} from "@/api/business/xmsb/jgjs";
+import { chineseOne, idCard, Regular } from "@/utils/regular";
+
+export default {
+  name: "Jgjs",
+  dicts: ["CZ002", "XZ098", "XZ106"],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      submitFormLoading: false,
+      xzqh: [],
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目申报公办养老机构建设项目信息表格数据
+      jgjsList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        xzqhId: [{ required: true, message: "地区不能为空", trigger: "blur" }],
+        xmdw: [
+          { required: true, message: "项目单位不能为空", trigger: "blur" },
+          { max: 100, message: "项目单位不能超过100个字符", trigger: "blur" },
+        ],
+        dwdz: [
+          { required: true, message: "单位地址不能为空", trigger: "blur" },
+          { max: 100, message: "单位地址不能超过100个字符", trigger: "blur" },
+        ],
+        xmxz: [
+          { required: true, message: "项目性质不能为空", trigger: "change" },
+        ],
+        fzr: [
+          { required: true, message: "负责人不能为空", trigger: "blur" },
+          { max: 72, message: "负责人不能超过72个字符", trigger: "blur" },
+        ],
+        sjh: [
+          { required: true, message: "手机号不能为空", trigger: "blur" },
+          {
+            pattern: Regular.Mobile,
+            message: "手机号格式不对",
+            trigger: "blur",
+          },
+        ],
+        jzmj: [
+          { required: true, message: "建筑面积不能为空", trigger: "blur" },
+        ],
+        cwsl: [
+          { required: true, message: "床位数量不能为空", trigger: "blur" },
+        ],
+        rzrs: [
+          { required: true, message: "入住老年人数不能为空", trigger: "blur" },
+        ],
+        tkgyrs: [
+          { required: true, message: "特困供养人数不能为空", trigger: "blur" },
+        ],
+        snbsn: [
+          { required: true, message: "失能半失能不能为空", trigger: "blur" },
+        ],
+        zlrs: [
+          { required: true, message: "自理人数不能为空", trigger: "blur" },
+        ],
+        jsqks: [
+          { required: true, message: "建设期开始不能为空", trigger: "blur" },
+          { max: 8, message: "建设期开始不能超过8个字符", trigger: "blur" },
+        ],
+        jsqjs: [
+          { required: true, message: "建设期结束不能为空", trigger: "blur" },
+          { max: 8, message: "建设期结束不能超过8个字符", trigger: "blur" },
+        ],
+        yszj: [
+          { required: true, message: "预算资金不能为空", trigger: "blur" },
+        ],
+        ddzftr: [
+          {
+            required: true,
+            message: "资金来源(当地政府投入)不能为空",
+            trigger: "blur",
+          },
+        ],
+        zczj: [
+          {
+            required: true,
+            message: "资金来源(自筹资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        sqsjzczj: [
+          {
+            required: true,
+            message: "资金来源(申请省级支持资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        mzShjg: [
+          { required: true, message: "审核结果不能为空", trigger: "blur" },
+        ],
+        mzShsj: [
+          { required: true, message: "审核时间不能为空", trigger: "blur" },
+        ],
+        mzShyj: [
+          { required: true, message: "审核意见不能为空", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询项目申报公办养老机构建设项目信息列表 */
+    getList() {
+      this.loading = true;
+      listJgjsSh(this.queryParams).then((response) => {
+        this.jgjsList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading = false;
+      this.form = {
+        id: null,
+        xzqhId: null,
+        xmdw: null,
+        dwdz: null,
+        xmxz: null,
+        fzr: null,
+        sjh: null,
+        jzmj: null,
+        cwsl: null,
+        rzrs: null,
+        tkgyrs: null,
+        snbsn: null,
+        zlrs: null,
+        jsqks: null,
+        jsqjs: null,
+        yszj: null,
+        ddzftr: null,
+        zczj: null,
+        sqsjzczj: null,
+        fjFirst: null,
+        fjSecond: null,
+        fjThird: null,
+        fjFourth: null,
+        fjFifth: null,
+        fjSixth: null,
+        fjSeventh: null,
+        fjEighth: null,
+        mzShjg: null,
+        mzShyj: null,
+        mzShsj: null,
+        czShjg: null,
+        czShyj: null,
+        czShsj: null,
+        state: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      if (this.xzqh) {
+        this.queryParams.xzqhId = this.xzqh[this.xzqh.length - 1];
+      } else {
+        this.queryParams.xzqhId = null;
+      }
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.xzqh = [];
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加项目申报公办养老机构建设项目信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getJgjs(id).then((response) => {
+        this.form = response.data;
+        if (this.form.xzqhId) {
+          this.form.xzqhId = JSON.stringify(this.form.xzqhId.split(","));
+        } else {
+          this.form.xzqhId = "";
+        }
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(response.data);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改项目申报公办养老机构建设项目信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.submitFormLoading = true;
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            let formData = this.comparisonObject(this.form, this.copyForm);
+            if (formData) {
+              updateJgjs({ ...formData, id: this.form.id })
+                .then((response) => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.jgjsList = this.dataReplacement(
+                    this.jgjsList,
+                    this.form.id,
+                    formData
+                  );
+                  // this.getList();
+                })
+                .finally(() => (this.submitFormLoading = false));
+            } else {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.submitFormLoading = false;
+            }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addJgjs(this.form)
+              .then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                // this.getList();
+                /****** sks 需要改动的地方 start ******/
+                if (this.queryParams.pageSize === this.jgjsList.length) {
+                  this.jgjsList.pop();
+                }
+                this.jgjsList.unshift({ ...this.form, id: response.data });
+                this.total++;
+                /****** sks 需要改动的地方 end ******/
+              })
+              .finally(() => (this.submitFormLoading = false));
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row, index) {
+      const ids = row.id || this.ids;
+      const xh =
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+      this.$modal
+        .confirm(
+          "确认删除" + this.changeDelData(row, "id", "ID值", xh) + "的记录?"
+        )
+        .then(function () {
+          return delJgjs(ids);
+        })
+        .then(() => {
+          // this.getList();
+          /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+          this.jgjsList.splice(index, 1);
+          if (this.jgjsList.length === 0) {
+            this.getList();
+          } else {
+            this.total--;
+          }
+          this.$modal.msgSuccess("删除成功");
+          /****** sks 需要改动的地方 end ******/
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "business/jgjs/export",
+        {
+          ...this.queryParams,
+        },
+        `jgjs_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 0 - 0
ruoyi-ui/src/views/business/xmsb/lnst/index.vue


+ 0 - 0
ruoyi-ui/src/views/business/xmsb/lnstsh/index.vue


+ 626 - 0
ruoyi-ui/src/views/business/xmsb/sz/index.vue

@@ -0,0 +1,626 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="机构名称" prop="jgmc">
+        <el-input
+          v-model="queryParams.jgmc"
+          placeholder="请输入机构名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系人" prop="lxr">
+        <el-input
+          v-model="queryParams.lxr"
+          placeholder="请输入联系人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['business:sz:add']"
+          >新增</el-button
+        >
+      </el-col>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['business:sz:export']"
+        >导出</el-button>
+      </el-col> -->
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="szList">
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{
+            (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="机构名称" align="center" prop="jgmc" />
+      <el-table-column label="联系人" align="center" prop="lxr" />
+      <el-table-column label="手机号" align="center" prop="sjh" />
+      <el-table-column label="总床位数" align="center" prop="zcws" />
+      <el-table-column label="护理型床位数" align="center" prop="hlxcws" />
+      <el-table-column label="专区总床位数" align="center" prop="zqzcws" />
+      <el-table-column label="现有失智人员数量" align="center" prop="xyszrys" />
+      <el-table-column label="流转状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ104" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button
+          v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="changeStatus(scope.row)"
+            v-hasPermi="['business:sz:edit']"
+            >提交</el-button
+          >
+          <el-button
+          v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:sz:edit']"
+            >修改</el-button
+          >
+          <el-button
+          v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row, scope.$index)"
+            v-hasPermi="['business:sz:remove']"
+            >删除</el-button
+          >
+          <el-button
+          v-if="scope.row.status != '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:sz:query']"
+            >详情</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改项目申报失智照护专区建设项目信息对话框 -->
+    <el-dialog
+      v-dialog-drag
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="机构名称" prop="jgmc">
+          <el-input v-model="form.jgmc" placeholder="请输入机构名称" />
+        </el-form-item>
+
+        <el-form-item label="地址" prop="dz">
+          <el-input v-model="form.dz" placeholder="请输入地址" />
+        </el-form-item>
+
+        <el-form-item label="联系人" prop="lxr">
+          <el-input v-model="form.lxr" placeholder="请输入联系人" />
+        </el-form-item>
+
+        <el-form-item label="手机号" prop="sjh">
+          <el-input v-model="form.sjh" placeholder="请输入手机号" />
+        </el-form-item>
+
+        <el-form-item label="总床位数" prop="zcws">
+          <number
+            placeholder="总床位数"
+            v-model.sync="form.zcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="护理型床位数" prop="hlxcws">
+          <number
+            placeholder="护理型床位数"
+            v-model.sync="form.hlxcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="专区总床位数" prop="zqzcws">
+          <number
+            placeholder="专区总床位数"
+            v-model.sync="form.zqzcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="现有失智人员数量" prop="xyszrys">
+          <number
+            placeholder="现有失智人员数量"
+            v-model.sync="form.xyszrys"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="总投资数(万元)" prop="ztzs">
+          <number
+            placeholder="总投资数(万元)"
+            v-model.sync="form.ztzs"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="配备护理人员数" prop="pbhlrys">
+          <number
+            placeholder="配备护理人员数"
+            v-model.sync="form.pbhlrys"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="安装电磁感应门" prop="azdcgym">
+          <number
+            placeholder="安装电磁感应门"
+            v-model.sync="form.azdcgym"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="配备护理型床" prop="pbhlxc">
+          <number
+            placeholder="配备护理型床"
+            v-model.sync="form.pbhlxc"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="窗户安全设施" prop="chaqss">
+          <number
+            placeholder="窗户安全设施"
+            v-model.sync="form.chaqss"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="室内软装" prop="snrz">
+          <number
+            placeholder="室内软装"
+            v-model.sync="form.snrz"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="墙壁装饰" prop="qbzs">
+          <number
+            placeholder="墙壁装饰"
+            v-model.sync="form.qbzs"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="设置认知康复空间" prop="szrzkfkj">
+          <number
+            placeholder="设置认知康复空间"
+            v-model.sync="form.szrzkfkj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="设置疗愈性园林景观小品" prop="szlyxyljgxp">
+          <number
+            placeholder="设置疗愈性园林景观小品"
+            v-model.sync="form.szlyxyljgxp"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="安装监控设施" prop="azjkss">
+          <number
+            placeholder="安装监控设施"
+            v-model.sync="form.azjkss"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="室内认知症活动空间" prop="snrzzhdkj">
+          <number
+            placeholder="室内认知症活动空间"
+            v-model.sync="form.snrzzhdkj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="其他" prop="qt">
+          <number
+            placeholder="其他"
+            v-model.sync="form.qt"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="项目概况" prop="xmgk">
+          <el-input
+            v-model="form.xmgk"
+            type="textarea"
+            maxlength="1000"
+            show-word-limit
+            placeholder="请输入项目概况"
+          />
+        </el-form-item>
+
+        <el-form-item label="备注" prop="bz">
+          <el-input
+            v-model="form.bz"
+            type="textarea"
+            maxlength="1000"
+            show-word-limit
+            placeholder="请输入备注"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitForm"
+          :loading="submitFormLoading"
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { addSz, delSz, getSz, listSz, updateSz, changeStatus, } from "@/api/business/xmsb/sz";
+import { chineseOne, idCard, Regular } from "@/utils/regular";
+
+export default {
+  name: "Sz",
+  dicts: ["CZ002", "XZ104"],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      submitFormLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目申报失智照护专区建设项目信息表格数据
+      szList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        jgmc: [
+          { required: true, message: "机构名称不能为空", trigger: "blur" },
+          { max: 100, message: "机构名称不能超过100个字符", trigger: "blur" },
+        ],
+        dz: [
+          { required: true, message: "地址不能为空", trigger: "blur" },
+          { max: 120, message: "地址不能超过120个字符", trigger: "blur" },
+        ],
+        lxr: [
+          { required: true, message: "联系人不能为空", trigger: "blur" },
+          { max: 72, message: "联系人不能超过72个字符", trigger: "blur" },
+        ],
+        sjh: [
+          { required: true, message: "手机号不能为空", trigger: "blur" },
+          {
+            pattern: Regular.Mobile,
+            message: "手机号格式不对",
+            trigger: "blur",
+          },
+        ],
+        zcws: [
+          { required: true, message: "总床位数不能为空", trigger: "blur" },
+        ],
+        hlxcws: [
+          { required: true, message: "护理型床位数不能为空", trigger: "blur" },
+        ],
+        zqzcws: [
+          { required: true, message: "专区总床位数不能为空", trigger: "blur" },
+        ],
+        xyszrys: [
+          {
+            required: true,
+            message: "现有失智人员数量不能为空",
+            trigger: "blur",
+          },
+        ],
+        ztzs: [
+          { required: true, message: "总投资数不能为空", trigger: "blur" },
+        ],
+        pbhlrys: [
+          {
+            required: true,
+            message: "配备护理人员数不能为空",
+            trigger: "blur",
+          },
+        ],
+        xmgk: [
+          { required: true, message: "项目概况不能为空", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询项目申报失智照护专区建设项目信息列表 */
+    getList() {
+      this.loading = true;
+      listSz(this.queryParams).then((response) => {
+        this.szList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading = false;
+      this.form = {
+        id: null,
+        jgmc: null,
+        dz: null,
+        lxr: null,
+        sjh: null,
+        zcws: null,
+        hlxcws: null,
+        zqzcws: null,
+        xyszrys: null,
+        ztzs: null,
+        pbhlrys: null,
+        azdcgym: null,
+        pbhlxc: null,
+        chaqss: null,
+        snrz: null,
+        qbzs: null,
+        szrzkfkj: null,
+        szlyxyljgxp: null,
+        azjkss: null,
+        snrzzhdkj: null,
+        qt: null,
+        xmgk: null,
+        jgShjg: null,
+        jgShyj: null,
+        jgShsj: null,
+        mzShjg: null,
+        mzShyj: null,
+        mzShsj: null,
+        bz: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加项目申报失智照护专区建设项目信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getSz(id).then((response) => {
+        this.form = response.data;
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(response.data);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改项目申报失智照护专区建设项目信息";
+      });
+    },
+    changeStatus(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      changeStatus(id).then((response) => {
+        this.getList();
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.submitFormLoading = true;
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            let formData = this.comparisonObject(this.form, this.copyForm);
+            if (formData) {
+              updateSz({ ...formData, id: this.form.id })
+                .then((response) => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.szList = this.dataReplacement(
+                    this.szList,
+                    this.form.id,
+                    formData
+                  );
+                  // this.getList();
+                })
+                .finally(() => (this.submitFormLoading = false));
+            } else {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.submitFormLoading = false;
+            }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addSz(this.form)
+              .then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                // this.getList();
+                /****** sks 需要改动的地方 start ******/
+                if (this.queryParams.pageSize === this.szList.length) {
+                  this.szList.pop();
+                }
+                this.szList.unshift({ ...this.form, id: response.data });
+                this.total++;
+                /****** sks 需要改动的地方 end ******/
+              })
+              .finally(() => (this.submitFormLoading = false));
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row, index) {
+      const ids = row.id || this.ids;
+      const xh =
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+      this.$modal
+        .confirm(
+          "确认删除" + this.changeDelData(row, "id", "ID值", xh) + "的记录?"
+        )
+        .then(function () {
+          return delSz(ids);
+        })
+        .then(() => {
+          // this.getList();
+          /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+          this.szList.splice(index, 1);
+          if (this.szList.length === 0) {
+            this.getList();
+          } else {
+            this.total--;
+          }
+          this.$modal.msgSuccess("删除成功");
+          /****** sks 需要改动的地方 end ******/
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "business/sz/export",
+        {
+          ...this.queryParams,
+        },
+        `sz_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 657 - 0
ruoyi-ui/src/views/business/xmsb/szsh/index.vue

@@ -0,0 +1,657 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="机构名称" prop="jgmc">
+        <el-input
+          v-model="queryParams.jgmc"
+          placeholder="请输入机构名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系人" prop="lxr">
+        <el-input
+          v-model="queryParams.lxr"
+          placeholder="请输入联系人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="szList">
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{
+            (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="机构名称" align="center" prop="jgmc" />
+      <el-table-column label="联系人" align="center" prop="lxr" />
+      <el-table-column label="手机号" align="center" prop="sjh" />
+      <el-table-column label="总床位数" align="center" prop="zcws" />
+      <el-table-column label="护理型床位数" align="center" prop="hlxcws" />
+      <el-table-column label="专区总床位数" align="center" prop="zqzcws" />
+      <el-table-column label="现有失智人员数量" align="center" prop="xyszrys" />
+      <el-table-column label="流转状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ104" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button
+          v-if="scope.row.editFlg == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:szsh:sh']"
+            >审核</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:szsh:query']"
+            >详情</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改项目申报失智照护专区建设项目信息对话框 -->
+    <el-dialog
+      v-dialog-drag
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="机构名称" prop="jgmc">
+          <el-input v-model="form.jgmc" placeholder="请输入机构名称" />
+        </el-form-item>
+
+        <el-form-item label="地址" prop="dz">
+          <el-input v-model="form.dz" placeholder="请输入地址" />
+        </el-form-item>
+
+        <el-form-item label="联系人" prop="lxr">
+          <el-input v-model="form.lxr" placeholder="请输入联系人" />
+        </el-form-item>
+
+        <el-form-item label="手机号" prop="sjh">
+          <el-input v-model="form.sjh" placeholder="请输入手机号" />
+        </el-form-item>
+
+        <el-form-item label="总床位数" prop="zcws">
+          <number
+            placeholder="总床位数"
+            v-model.sync="form.zcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="护理型床位数" prop="hlxcws">
+          <number
+            placeholder="护理型床位数"
+            v-model.sync="form.hlxcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="专区总床位数" prop="zqzcws">
+          <number
+            placeholder="专区总床位数"
+            v-model.sync="form.zqzcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="现有失智人员数量" prop="xyszrys">
+          <number
+            placeholder="现有失智人员数量"
+            v-model.sync="form.xyszrys"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="总投资数(万元)" prop="ztzs">
+          <number
+            placeholder="总投资数(万元)"
+            v-model.sync="form.ztzs"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="配备护理人员数" prop="pbhlrys">
+          <number
+            placeholder="配备护理人员数"
+            v-model.sync="form.pbhlrys"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="安装电磁感应门" prop="azdcgym">
+          <number
+            placeholder="安装电磁感应门"
+            v-model.sync="form.azdcgym"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="配备护理型床" prop="pbhlxc">
+          <number
+            placeholder="配备护理型床"
+            v-model.sync="form.pbhlxc"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="窗户安全设施" prop="chaqss">
+          <number
+            placeholder="窗户安全设施"
+            v-model.sync="form.chaqss"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="室内软装" prop="snrz">
+          <number
+            placeholder="室内软装"
+            v-model.sync="form.snrz"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="墙壁装饰" prop="qbzs">
+          <number
+            placeholder="墙壁装饰"
+            v-model.sync="form.qbzs"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="设置认知康复空间" prop="szrzkfkj">
+          <number
+            placeholder="设置认知康复空间"
+            v-model.sync="form.szrzkfkj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="设置疗愈性园林景观小品" prop="szlyxyljgxp">
+          <number
+            placeholder="设置疗愈性园林景观小品"
+            v-model.sync="form.szlyxyljgxp"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="安装监控设施" prop="azjkss">
+          <number
+            placeholder="安装监控设施"
+            v-model.sync="form.azjkss"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="室内认知症活动空间" prop="snrzzhdkj">
+          <number
+            placeholder="室内认知症活动空间"
+            v-model.sync="form.snrzzhdkj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="其他" prop="qt">
+          <number
+            placeholder="其他"
+            v-model.sync="form.qt"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="项目概况" prop="xmgk">
+          <el-input
+            v-model="form.xmgk"
+            type="textarea"
+            maxlength="1000"
+            show-word-limit
+            placeholder="请输入项目概况"
+          />
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'jg'" label="养老机构审核结果" prop="jgShjg">
+          <el-select v-model="form.jgShjg" placeholder="请选择养老机构审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'jg'" label="养老机构审核意见" prop="jgShyj">
+          <el-input
+            v-model="form.jgShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入养老机构审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'jg'" label="养老机构审核时间" prop="jgShsj">
+          <el-date-picker
+            clearable
+            v-model="form.jgShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择养老机构审核时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'mz'" label="民政部门审核结果" prop="mzShjg">
+          <el-select v-model="form.mzShjg" placeholder="请选择民政部门审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'mz'" label="民政部门审核意见" prop="mzShyj">
+          <el-input
+            v-model="form.mzShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入民政部门审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item v-if="formStatus == 'mz'" label="民政部门审核时间" prop="mzShsj">
+          <el-date-picker
+            clearable
+            v-model="form.mzShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择民政部门审核时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="备注" prop="bz">
+          <el-input
+            v-model="form.bz"
+            type="textarea"
+            maxlength="1000"
+            show-word-limit
+            placeholder="请输入备注"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitForm"
+          :loading="submitFormLoading"
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { addSz, delSz, getSz, listSzSh, updateSz } from "@/api/business/xmsb/sz";
+import { chineseOne, idCard, Regular } from "@/utils/regular";
+
+export default {
+  name: "Sz",
+  dicts: ["CZ002", "XZ104"],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      submitFormLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目申报失智照护专区建设项目信息表格数据
+      szList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      formStatus: "",
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        jgmc: [
+          { required: true, message: "机构名称不能为空", trigger: "blur" },
+          { max: 100, message: "机构名称不能超过100个字符", trigger: "blur" },
+        ],
+        dz: [
+          { required: true, message: "地址不能为空", trigger: "blur" },
+          { max: 120, message: "地址不能超过120个字符", trigger: "blur" },
+        ],
+        lxr: [
+          { required: true, message: "联系人不能为空", trigger: "blur" },
+          { max: 72, message: "联系人不能超过72个字符", trigger: "blur" },
+        ],
+        sjh: [
+          { required: true, message: "手机号不能为空", trigger: "blur" },
+          {
+            pattern: Regular.Mobile,
+            message: "手机号格式不对",
+            trigger: "blur",
+          },
+        ],
+        zcws: [
+          { required: true, message: "总床位数不能为空", trigger: "blur" },
+        ],
+        hlxcws: [
+          { required: true, message: "护理型床位数不能为空", trigger: "blur" },
+        ],
+        zqzcws: [
+          { required: true, message: "专区总床位数不能为空", trigger: "blur" },
+        ],
+        xyszrys: [
+          {
+            required: true,
+            message: "现有失智人员数量不能为空",
+            trigger: "blur",
+          },
+        ],
+        ztzs: [
+          { required: true, message: "总投资数不能为空", trigger: "blur" },
+        ],
+        pbhlrys: [
+          {
+            required: true,
+            message: "配备护理人员数不能为空",
+            trigger: "blur",
+          },
+        ],
+        xmgk: [
+          { required: true, message: "项目概况不能为空", trigger: "blur" },
+        ],
+        jgShjg: [{ required: true, message: "审核结果不能为空", trigger: "blur" }],
+        jgShyj: [{ required: true, message: "审核意见不能为空", trigger: "blur" }],
+        jgShsj: [{ required: true, message: "审核时间不能为空", trigger: "blur" }],
+        mzShjg: [{ required: true, message: "审核结果不能为空", trigger: "blur" }],
+        mzShyj: [{ required: true, message: "审核意见不能为空", trigger: "blur" }],
+        mzShsj: [{ required: true, message: "审核时间不能为空", trigger: "blur" }],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询项目申报失智照护专区建设项目信息列表 */
+    getList() {
+      this.loading = true;
+      listSzSh(this.queryParams).then((response) => {
+        this.szList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading = false;
+      this.form = {
+        id: null,
+        jgmc: null,
+        dz: null,
+        lxr: null,
+        sjh: null,
+        zcws: null,
+        hlxcws: null,
+        zqzcws: null,
+        xyszrys: null,
+        ztzs: null,
+        pbhlrys: null,
+        azdcgym: null,
+        pbhlxc: null,
+        chaqss: null,
+        snrz: null,
+        qbzs: null,
+        szrzkfkj: null,
+        szlyxyljgxp: null,
+        azjkss: null,
+        snrzzhdkj: null,
+        qt: null,
+        xmgk: null,
+        jgShjg: null,
+        jgShyj: null,
+        jgShsj: null,
+        mzShjg: null,
+        mzShyj: null,
+        mzShsj: null,
+        bz: null,
+        state: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加项目申报失智照护专区建设项目信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getSz(id).then((response) => {
+        this.form = response.data;
+        if (response.data.status == '1') {
+          this.formStatus = "jg";
+        }
+        if (response.data.status == '2') {
+          this.formStatus = "mz";
+        }
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(response.data);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改项目申报失智照护专区建设项目信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.submitFormLoading = true;
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            let formData = this.comparisonObject(this.form, this.copyForm);
+            if (formData) {
+              updateSz({ ...formData, id: this.form.id })
+                .then((response) => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.szList = this.dataReplacement(
+                    this.szList,
+                    this.form.id,
+                    formData
+                  );
+                  // this.getList();
+                })
+                .finally(() => (this.submitFormLoading = false));
+            } else {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.submitFormLoading = false;
+            }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addSz(this.form)
+              .then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                // this.getList();
+                /****** sks 需要改动的地方 start ******/
+                if (this.queryParams.pageSize === this.szList.length) {
+                  this.szList.pop();
+                }
+                this.szList.unshift({ ...this.form, id: response.data });
+                this.total++;
+                /****** sks 需要改动的地方 end ******/
+              })
+              .finally(() => (this.submitFormLoading = false));
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row, index) {
+      const ids = row.id || this.ids;
+      const xh =
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+      this.$modal
+        .confirm(
+          "确认删除" + this.changeDelData(row, "id", "ID值", xh) + "的记录?"
+        )
+        .then(function () {
+          return delSz(ids);
+        })
+        .then(() => {
+          // this.getList();
+          /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+          this.szList.splice(index, 1);
+          if (this.szList.length === 0) {
+            this.getList();
+          } else {
+            this.total--;
+          }
+          this.$modal.msgSuccess("删除成功");
+          /****** sks 需要改动的地方 end ******/
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "business/sz/export",
+        {
+          ...this.queryParams,
+        },
+        `sz_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 611 - 0
ruoyi-ui/src/views/business/xmsb/yldy/index.vue

@@ -0,0 +1,611 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="地区" prop="xzqh">
+        <RegionCascaderSelect
+          endLevel="4"
+          v-model="xzqh"
+          :opts="{ placeholder: '请选择地区' }"
+          style="width: 100%"
+          valueProp="code"
+        >
+        </RegionCascaderSelect>
+      </el-form-item>
+      <el-form-item label="行政村" prop="xzc">
+        <el-input
+          v-model="queryParams.xzc"
+          placeholder="请输入行政村"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="设施来源" prop="ssly">
+        <el-select
+          v-model="queryParams.ssly"
+          placeholder="请选择设施来源"
+          clearable
+        >
+          <el-option
+            v-for="dict in dict.type.XZ099"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['business:yldy:add']"
+          >新增</el-button
+        >
+      </el-col>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['business:yldy:export']"
+        >导出</el-button>
+      </el-col> -->
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="yldyList">
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{
+            (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="地区" align="center" prop="xzqhName" />
+      <el-table-column label="行政村" align="center" prop="xzc" />
+      <el-table-column label="设施来源" align="center" prop="ssly">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ099" :value="scope.row.ssly" />
+        </template>
+      </el-table-column>
+      <el-table-column label="联系人" align="center" prop="lxr" />
+      <el-table-column label="手机号" align="center" prop="sjh" />
+      <el-table-column label="流转状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ105" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="changeStatus(scope.row)"
+            v-hasPermi="['business:yldy:edit']"
+            >提交</el-button
+          >
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:yldy:edit']"
+            >修改</el-button
+          >
+          <el-button
+            v-if="scope.row.status == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row, scope.$index)"
+            v-hasPermi="['business:yldy:remove']"
+            >删除</el-button
+          >
+          <el-button
+          v-if="scope.row.status != '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:yldy:query']"
+            >详情</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改项目申报农村养老大院项目信息对话框 -->
+    <el-dialog
+      v-dialog-drag
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="地区" prop="xzqhId">
+          <RegionCascaderSelect
+            endLevel="4"
+            v-model="form.xzqhId"
+            :opts="{ placeholder: '请输入地区' }"
+            style="width: 100%"
+            valueProp="code"
+          >
+          </RegionCascaderSelect>
+        </el-form-item>
+
+        <el-form-item label="行政村" prop="xzc">
+          <el-input v-model="form.xzc" placeholder="请输入行政村" />
+        </el-form-item>
+
+        <el-form-item label="全村总人口" prop="qczrk">
+          <number
+            placeholder="全村总人口"
+            v-model.sync="form.qczrk"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="全村老年人口" prop="qclnrk">
+          <number
+            placeholder="全村老年人口"
+            v-model.sync="form.qclnrk"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="建筑面积" prop="jzmj">
+          <number
+            placeholder="建筑面积"
+            v-model.sync="form.jzmj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="设置床位数" prop="szcws">
+          <number
+            placeholder="设置床位数"
+            v-model.sync="form.szcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="设施来源" prop="ssly">
+          <el-select v-model="form.ssly" placeholder="请选择设施来源">
+            <el-option
+              v-for="dict in dict.type.XZ099"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="预算资金(万元)" prop="yszj">
+          <number
+            placeholder="预算资金(万元)"
+            v-model.sync="form.yszj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="村委会自筹(万元)" prop="cwhzc">
+          <number
+            placeholder="村委会自筹(万元)"
+            v-model.sync="form.cwhzc"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="当地财政收入(万元)" prop="ddczsr">
+          <number
+            placeholder="当地财政收入(万元)"
+            v-model.sync="form.ddczsr"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="申请省级支持资金(万元)" prop="sqsjzczj">
+          <number
+            placeholder="申请省级支持资金(万元)"
+            v-model.sync="form.sqsjzczj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="联系人" prop="lxr">
+          <el-input v-model="form.lxr" placeholder="请输入联系人" />
+        </el-form-item>
+
+        <el-form-item label="手机号" prop="sjh">
+          <el-input v-model="form.sjh" placeholder="请输入手机号" />
+        </el-form-item>
+
+        <el-form-item label="建设方案" prop="jsfa">
+          <el-input
+            v-model="form.jsfa"
+            type="textarea"
+            maxlength="400"
+            show-word-limit
+            placeholder="请输入建设方案"
+          />
+        </el-form-item>
+
+        <el-form-item label="建设方案附件" prop="jsfaFj">
+          <file-upload v-model="form.jsfaFj" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitForm"
+          :loading="submitFormLoading"
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addYldy,
+  delYldy,
+  getYldy,
+  listYldy,
+  updateYldy,
+  changeStatus,
+} from "@/api/business/xmsb/yldy";
+import { chineseOne, idCard, Regular } from "@/utils/regular";
+
+export default {
+  name: "Yldy",
+  dicts: ["CZ002", "XZ099", "XZ105"],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      xzqh: [],
+      submitFormLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目申报农村养老大院项目信息表格数据
+      yldyList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        xzqhId: [{ required: true, message: "地区不能为空", trigger: "blur" }],
+        xzc: [
+          { required: true, message: "行政村不能为空", trigger: "blur" },
+          { max: 100, message: "行政村不能超过100个字符", trigger: "blur" },
+        ],
+        qczrk: [
+          { required: true, message: "全村总人口不能为空", trigger: "blur" },
+        ],
+        qclnrk: [
+          { required: true, message: "全村老年人口不能为空", trigger: "blur" },
+        ],
+        jzmj: [
+          { required: true, message: "建筑面积不能为空", trigger: "blur" },
+        ],
+        szcws: [
+          { required: true, message: "设置床位数不能为空", trigger: "blur" },
+        ],
+        ssly: [
+          { required: true, message: "设施来源不能为空", trigger: "change" },
+        ],
+        yszj: [
+          { required: true, message: "预算资金不能为空", trigger: "blur" },
+        ],
+        cwhzc: [
+          {
+            required: true,
+            message: "资金来源(村委会自筹)不能为空",
+            trigger: "blur",
+          },
+        ],
+        ddczsr: [
+          {
+            required: true,
+            message: "资金来源(当地财政收入)不能为空",
+            trigger: "blur",
+          },
+        ],
+        sqsjzczj: [
+          {
+            required: true,
+            message: "资金来源(申请省级支持资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        lxr: [
+          { required: true, message: "联系人不能为空", trigger: "blur" },
+          { max: 72, message: "联系人不能超过72个字符", trigger: "blur" },
+        ],
+        sjh: [
+          { required: true, message: "手机号不能为空", trigger: "blur" },
+          {
+            pattern: Regular.Mobile,
+            message: "手机号格式不对",
+            trigger: "blur",
+          },
+        ],
+        jsfa: [
+          { required: true, message: "建设方案不能为空", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询项目申报农村养老大院项目信息列表 */
+    getList() {
+      this.loading = true;
+      listYldy(this.queryParams).then((response) => {
+        this.yldyList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading = false;
+      this.form = {
+        id: null,
+        xzqhId: null,
+        xzc: null,
+        qczrk: null,
+        qclnrk: null,
+        jzmj: null,
+        szcws: null,
+        ssly: null,
+        yszj: null,
+        cwhzc: null,
+        ddczsr: null,
+        sqsjzczj: null,
+        lxr: null,
+        sjh: null,
+        jsfa: null,
+        jsfaFj: null,
+        cwhShjg: null,
+        cwhShyj: null,
+        cwhShsj: null,
+        xzShjg: null,
+        xzShyj: null,
+        xzShsj: null,
+        mzShjg: null,
+        mzShyj: null,
+        mzShsj: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      if (this.xzqh) {
+        this.queryParams.xzqhId = this.xzqh[this.xzqh.length - 1];
+      } else {
+        this.queryParams.xzqhId = null;
+      }
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.xzqh = [];
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加项目申报农村养老大院项目信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getYldy(id).then((response) => {
+        this.form = response.data;
+        if (this.form.xzqhId) {
+          this.form.xzqhId = JSON.stringify(this.form.xzqhId.split(","));
+        } else {
+          this.form.xzqhId = "";
+        }
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(response.data);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改项目申报农村养老大院项目信息";
+      });
+    },
+    changeStatus(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      changeStatus(id).then((response) => {
+        this.getList();
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.submitFormLoading = true;
+          let szxzqh = ''
+          if (Array.isArray(this.form.xzqhId)) {
+            szxzqh = this.form.xzqhId[this.form.xzqhId.length - 1]
+          } else {
+            let data = JSON.parse(this.form.xzqhId)
+            szxzqh = data[data.length - 1]
+          }
+
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            let formData = this.comparisonObject(this.form, this.copyForm);
+            if (formData) {
+              updateYldy({ ...formData, id: this.form.id, xzqhId: szxzqh })
+                .then((response) => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.yldyList = this.dataReplacement(
+                    this.yldyList,
+                    this.form.id,
+                    formData
+                  );
+                  // this.getList();
+                })
+                .finally(() => (this.submitFormLoading = false));
+            } else {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.submitFormLoading = false;
+            }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addYldy({...this.form, xzqhId: szxzqh})
+              .then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                // this.getList();
+                /****** sks 需要改动的地方 start ******/
+                if (this.queryParams.pageSize === this.yldyList.length) {
+                  this.yldyList.pop();
+                }
+                this.yldyList.unshift({ ...this.form, id: response.data });
+                this.total++;
+                /****** sks 需要改动的地方 end ******/
+              })
+              .finally(() => (this.submitFormLoading = false));
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row, index) {
+      const ids = row.id || this.ids;
+      const xh =
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+      this.$modal
+        .confirm(
+          "确认删除" + this.changeDelData(row, "id", "ID值", xh) + "的记录?"
+        )
+        .then(function () {
+          return delYldy(ids);
+        })
+        .then(() => {
+          // this.getList();
+          /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+          this.yldyList.splice(index, 1);
+          if (this.yldyList.length === 0) {
+            this.getList();
+          } else {
+            this.total--;
+          }
+          this.$modal.msgSuccess("删除成功");
+          /****** sks 需要改动的地方 end ******/
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "business/yldy/export",
+        {
+          ...this.queryParams,
+        },
+        `yldy_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 720 - 0
ruoyi-ui/src/views/business/xmsb/yldysh/index.vue

@@ -0,0 +1,720 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="地区" prop="xzqh">
+        <RegionCascaderSelect
+          endLevel="4"
+          v-model="xzqh"
+          :opts="{ placeholder: '请选择地区' }"
+          style="width: 100%"
+          valueProp="code"
+        >
+        </RegionCascaderSelect>
+      </el-form-item>
+      <el-form-item label="行政村" prop="xzc">
+        <el-input
+          v-model="queryParams.xzc"
+          placeholder="请输入行政村"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="设施来源" prop="ssly">
+        <el-select
+          v-model="queryParams.ssly"
+          placeholder="请选择设施来源"
+          clearable
+        >
+          <el-option
+            v-for="dict in dict.type.XZ099"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="yldyList">
+      <el-table-column label="序号" align="center">
+        <template slot-scope="scope">
+          {{
+            (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="地区" align="center" prop="xzqhName" />
+      <el-table-column label="行政村" align="center" prop="xzc" />
+      <el-table-column label="设施来源" align="center" prop="ssly">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ099" :value="scope.row.ssly" />
+        </template>
+      </el-table-column>
+      <el-table-column label="联系人" align="center" prop="lxr" />
+      <el-table-column label="手机号" align="center" prop="sjh" />
+      <el-table-column label="流转状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.XZ105" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <el-button
+            v-if="scope.row.editFlg == '0'"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:yldysh:sh']"
+            >审核</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['business:yldysh:query']"
+            >详情</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改项目申报农村养老大院项目信息对话框 -->
+    <el-dialog
+      v-dialog-drag
+      :title="title"
+      :visible.sync="open"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="地区" prop="xzqhId">
+          <RegionCascaderSelect
+            endLevel="4"
+            v-model="xzqhId"
+            :opts="{ placeholder: '请输入地区' }"
+            style="width: 100%"
+            valueProp="code"
+          >
+          </RegionCascaderSelect>
+        </el-form-item>
+
+        <el-form-item label="行政村" prop="xzc">
+          <el-input v-model="form.xzc" placeholder="请输入行政村" />
+        </el-form-item>
+
+        <el-form-item label="全村总人口" prop="qczrk">
+          <number
+            placeholder="全村总人口"
+            v-model.sync="form.qczrk"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="全村老年人口" prop="qclnrk">
+          <number
+            placeholder="全村老年人口"
+            v-model.sync="form.qclnrk"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="建筑面积" prop="jzmj">
+          <number
+            placeholder="建筑面积"
+            v-model.sync="form.jzmj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="设置床位数" prop="szcws">
+          <number
+            placeholder="设置床位数"
+            v-model.sync="form.szcws"
+            :min="0"
+            :max="100"
+          />
+        </el-form-item>
+
+        <el-form-item label="设施来源" prop="ssly">
+          <el-select v-model="form.ssly" placeholder="请选择设施来源">
+            <el-option
+              v-for="dict in dict.type.XZ099"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="预算资金(万元)" prop="yszj">
+          <number
+            placeholder="预算资金(万元)"
+            v-model.sync="form.yszj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="村委会自筹(万元)" prop="cwhzc">
+          <number
+            placeholder="村委会自筹(万元)"
+            v-model.sync="form.cwhzc"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="当地财政收入(万元)" prop="ddczsr">
+          <number
+            placeholder="当地财政收入(万元)"
+            v-model.sync="form.ddczsr"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="申请省级支持资金(万元)" prop="sqsjzczj">
+          <number
+            placeholder="申请省级支持资金(万元)"
+            v-model.sync="form.sqsjzczj"
+            :min="0"
+            :max="10000000000"
+            :precision="2"
+          />
+        </el-form-item>
+
+        <el-form-item label="联系人" prop="lxr">
+          <el-input v-model="form.lxr" placeholder="请输入联系人" />
+        </el-form-item>
+
+        <el-form-item label="手机号" prop="sjh">
+          <el-input v-model="form.sjh" placeholder="请输入手机号" />
+        </el-form-item>
+
+        <el-form-item label="建设方案" prop="jsfa">
+          <el-input
+            v-model="form.jsfa"
+            type="textarea"
+            maxlength="400"
+            show-word-limit
+            placeholder="请输入建设方案"
+          />
+        </el-form-item>
+
+        <el-form-item label="建设方案附件" prop="jsfaFj">
+          <file-upload v-model="form.jsfaFj" />
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'cwh'"
+          label="村委会审核结果"
+          prop="cwhShjg"
+        >
+          <el-select v-model="form.cwhShjg" placeholder="请选择村委会审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'cwh'"
+          label="村委会审核意见"
+          prop="cwhShyj"
+        >
+          <el-input
+            v-model="form.cwhShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入村委会审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'cwh'"
+          label="村委会审核时间"
+          prop="cwhShsj"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.cwhShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择村委会审核时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'xz'"
+          label="乡镇政府审核结果"
+          prop="xzShjg"
+        >
+          <el-select v-model="form.xzShjg" placeholder="请选择乡镇政府审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'xz'"
+          label="乡镇政府审核意见"
+          prop="xzShyj"
+        >
+          <el-input
+            v-model="form.xzShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入乡镇政府审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'xz'"
+          label="乡镇政府审核时间"
+          prop="xzShsj"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.xzShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择乡镇政府审核时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'mz'"
+          label="民政部门审核结果"
+          prop="mzShjg"
+        >
+          <el-select v-model="form.mzShjg" placeholder="请选择民政部门审核结果">
+            <el-option
+              v-for="dict in dict.type.CZ002"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'mz'"
+          label="民政部门审核意见"
+          prop="mzShyj"
+        >
+          <el-input
+            v-model="form.mzShyj"
+            type="textarea"
+            maxlength="200"
+            show-word-limit
+            placeholder="请输入民政部门审核意见"
+          />
+        </el-form-item>
+
+        <el-form-item
+          v-if="formStatus == 'mz'"
+          label="民政部门审核时间"
+          prop="mzShsj"
+        >
+          <el-date-picker
+            clearable
+            v-model="form.mzShsj"
+            type="date"
+            value-format="yyyyMMdd"
+            placeholder="请选择民政部门审核时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitForm"
+          :loading="submitFormLoading"
+          >确 定</el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addYldy,
+  delYldy,
+  getYldy,
+  listYldySh,
+  updateYldy,
+} from "@/api/business/xmsb/yldy";
+import { chineseOne, idCard, Regular } from "@/utils/regular";
+
+export default {
+  name: "Yldy",
+  dicts: ["CZ002", "XZ099", "XZ105"],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      xzqh: [],
+      submitFormLoading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目申报农村养老大院项目信息表格数据
+      yldyList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        xzqhId: [{ required: true, message: "地区不能为空", trigger: "blur" }],
+        xzc: [
+          { required: true, message: "行政村不能为空", trigger: "blur" },
+          { max: 100, message: "行政村不能超过100个字符", trigger: "blur" },
+        ],
+        qczrk: [
+          { required: true, message: "全村总人口不能为空", trigger: "blur" },
+        ],
+        qclnrk: [
+          { required: true, message: "全村老年人口不能为空", trigger: "blur" },
+        ],
+        jzmj: [
+          { required: true, message: "建筑面积不能为空", trigger: "blur" },
+        ],
+        szcws: [
+          { required: true, message: "设置床位数不能为空", trigger: "blur" },
+        ],
+        ssly: [
+          { required: true, message: "设施来源不能为空", trigger: "change" },
+        ],
+        yszj: [
+          { required: true, message: "预算资金不能为空", trigger: "blur" },
+        ],
+        cwhzc: [
+          {
+            required: true,
+            message: "资金来源(村委会自筹)不能为空",
+            trigger: "blur",
+          },
+        ],
+        ddczsr: [
+          {
+            required: true,
+            message: "资金来源(当地财政收入)不能为空",
+            trigger: "blur",
+          },
+        ],
+        sqsjzczj: [
+          {
+            required: true,
+            message: "资金来源(申请省级支持资金)不能为空",
+            trigger: "blur",
+          },
+        ],
+        lxr: [
+          { required: true, message: "联系人不能为空", trigger: "blur" },
+          { max: 72, message: "联系人不能超过72个字符", trigger: "blur" },
+        ],
+        sjh: [
+          { required: true, message: "手机号不能为空", trigger: "blur" },
+          {
+            pattern: Regular.Mobile,
+            message: "手机号格式不对",
+            trigger: "blur",
+          },
+        ],
+        jsfa: [
+          { required: true, message: "建设方案不能为空", trigger: "blur" },
+        ],
+        cwhShjg: [
+          { required: true, message: "审核结果不能为空", trigger: "blur" },
+        ],
+        cwhShyj: [
+          { required: true, message: "审核意见不能为空", trigger: "blur" },
+        ],
+        cwhShsj: [
+          { required: true, message: "审核时间不能为空", trigger: "blur" },
+        ],
+
+        xzShjg: [
+          { required: true, message: "审核结果不能为空", trigger: "blur" },
+        ],
+        xzShyj: [
+          { required: true, message: "审核意见不能为空", trigger: "blur" },
+        ],
+        xzShsj: [
+          { required: true, message: "审核时间不能为空", trigger: "blur" },
+        ],
+
+        mzShjg: [
+          { required: true, message: "审核结果不能为空", trigger: "blur" },
+        ],
+        mzShyj: [
+          { required: true, message: "审核意见不能为空", trigger: "blur" },
+        ],
+        mzShsj: [
+          { required: true, message: "审核时间不能为空", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询项目申报农村养老大院项目信息列表 */
+    getList() {
+      this.loading = true;
+      listYldySh(this.queryParams).then((response) => {
+        this.yldyList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.submitFormLoading = false;
+      this.form = {
+        id: null,
+        xzqhId: null,
+        xzc: null,
+        qczrk: null,
+        qclnrk: null,
+        jzmj: null,
+        szcws: null,
+        ssly: null,
+        yszj: null,
+        cwhzc: null,
+        ddczsr: null,
+        sqsjzczj: null,
+        lxr: null,
+        sjh: null,
+        jsfa: null,
+        jsfaFj: null,
+        cwhShjg: null,
+        cwhShyj: null,
+        cwhShsj: null,
+        xzShjg: null,
+        xzShyj: null,
+        xzShsj: null,
+        mzShjg: null,
+        mzShyj: null,
+        mzShsj: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      if (this.xzqh) {
+        this.queryParams.xzqhId = this.xzqh[this.xzqh.length - 1];
+      } else {
+        this.queryParams.xzqhId = null;
+      }
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.xzqh = [];
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加项目申报农村养老大院项目信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getYldy(id).then((response) => {
+        this.form = response.data;
+        if (response.data.status == "1") {
+          this.formStatus = "cwh";
+        }
+        if (response.data.status == "2") {
+          this.formStatus = "xz";
+        }
+        if (response.data.status == "3") {
+          this.formStatus = "mz";
+        }
+        /****** sks 需要改动的地方 start ******/
+        this.copyForm = this.deepCopy(response.data);
+        /****** sks 需要改动的地方 end ******/
+        this.open = true;
+        this.title = "修改项目申报农村养老大院项目信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.submitFormLoading = true;
+          if (this.form.id != null) {
+            /****** sks 需要改动的地方 start ******/
+            let formData = this.comparisonObject(this.form, this.copyForm);
+            if (formData) {
+              updateYldy({ ...formData, id: this.form.id })
+                .then((response) => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.yldyList = this.dataReplacement(
+                    this.yldyList,
+                    this.form.id,
+                    formData
+                  );
+                  // this.getList();
+                })
+                .finally(() => (this.submitFormLoading = false));
+            } else {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.submitFormLoading = false;
+            }
+            /****** sks 需要改动的地方 end ******/
+          } else {
+            addYldy(this.form)
+              .then((response) => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                // this.getList();
+                /****** sks 需要改动的地方 start ******/
+                if (this.queryParams.pageSize === this.yldyList.length) {
+                  this.yldyList.pop();
+                }
+                this.yldyList.unshift({ ...this.form, id: response.data });
+                this.total++;
+                /****** sks 需要改动的地方 end ******/
+              })
+              .finally(() => (this.submitFormLoading = false));
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row, index) {
+      const ids = row.id || this.ids;
+      const xh =
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+      this.$modal
+        .confirm(
+          "确认删除" + this.changeDelData(row, "id", "ID值", xh) + "的记录?"
+        )
+        .then(function () {
+          return delYldy(ids);
+        })
+        .then(() => {
+          // this.getList();
+          /****** sks 需要改动的地方 ind参数需要传进来 start ******/
+          this.yldyList.splice(index, 1);
+          if (this.yldyList.length === 0) {
+            this.getList();
+          } else {
+            this.total--;
+          }
+          this.$modal.msgSuccess("删除成功");
+          /****** sks 需要改动的地方 end ******/
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "business/yldy/export",
+        {
+          ...this.queryParams,
+        },
+        `yldy_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>