0027005599 пре 2 година
родитељ
комит
3d69c7e261
42 измењених фајлова са 2597 додато и 37 уклоњено
  1. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/DiagnosesController.java
  2. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/OperativeController.java
  3. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/RuleAttrController.java
  4. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/SpecialDiseaseController.java
  5. 12 24
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/Diagnoses.java
  6. 75 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/Operative.java
  7. 5 5
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/RuleAttr.java
  8. 75 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/SpecialDisease.java
  9. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/DiagnosesMapper.java
  10. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/OperativeMapper.java
  11. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/RuleAttrMapper.java
  12. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/SpecialDiseaseMapper.java
  13. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/OperativeMapper.xml
  14. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/SpecialDiseaseMapper.xml
  15. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IDiagnosesService.java
  16. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IOperativeService.java
  17. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IRuleAttrService.java
  18. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/ISpecialDiseaseService.java
  19. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/DiagnosesServiceImpl.java
  20. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/OperativeServiceImpl.java
  21. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/RuleAttrServiceImpl.java
  22. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/SpecialDiseaseServiceImpl.java
  23. 201 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/DiagnosesList.vue
  24. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/Diagnoses_menu_insert.sql
  25. 195 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/OperativeList.vue
  26. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/Operative_menu_insert.sql
  27. 189 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/RuleAttrList.vue
  28. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/RuleAttr_menu_insert.sql
  29. 195 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/SpecialDiseaseList.vue
  30. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/SpecialDisease_menu_insert.sql
  31. 129 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/DiagnosesForm.vue
  32. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/DiagnosesModal.Style#Drawer.vue
  33. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/DiagnosesModal.vue
  34. 124 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeForm.vue
  35. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeModal.Style#Drawer.vue
  36. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeModal.vue
  37. 119 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/RuleAttrForm.vue
  38. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/RuleAttrModal.Style#Drawer.vue
  39. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/RuleAttrModal.vue
  40. 124 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/SpecialDiseaseForm.vue
  41. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/SpecialDiseaseModal.Style#Drawer.vue
  42. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/SpecialDiseaseModal.vue

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/DiagnosesController.java

@@ -40,7 +40,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
  /**
  * @Description: diagnoses
  * @Author: jeecg-boot
- * @Date:   2023-04-23
+ * @Date:   2023-05-09 18:43:28
  * @Version: V1.0
  */
 @Api(tags="diagnoses")

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/OperativeController.java

@@ -0,0 +1,178 @@
+package org.jeecg.modules.medical.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.medical.entity.Operative;
+import org.jeecg.modules.medical.service.IOperativeService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: operative
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:44:55
+ * @Version: V1.0
+ */
+@Api(tags="operative")
+@RestController
+@RequestMapping("/medical/operative")
+@Slf4j
+public class OperativeController extends JeecgController<Operative, IOperativeService> {
+	@Autowired
+	private IOperativeService operativeService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param operative
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "operative-分页列表查询")
+	@ApiOperation(value="operative-分页列表查询", notes="operative-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<Operative>> queryPageList(Operative operative,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<Operative> queryWrapper = QueryGenerator.initQueryWrapper(operative, req.getParameterMap());
+		Page<Operative> page = new Page<Operative>(pageNo, pageSize);
+		IPage<Operative> pageList = operativeService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param operative
+	 * @return
+	 */
+	@AutoLog(value = "operative-添加")
+	@ApiOperation(value="operative-添加", notes="operative-添加")
+	@RequiresPermissions("medical:operative:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody Operative operative) {
+		operativeService.save(operative);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param operative
+	 * @return
+	 */
+	@AutoLog(value = "operative-编辑")
+	@ApiOperation(value="operative-编辑", notes="operative-编辑")
+	@RequiresPermissions("medical:operative:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody Operative operative) {
+		operativeService.updateById(operative);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "operative-通过id删除")
+	@ApiOperation(value="operative-通过id删除", notes="operative-通过id删除")
+	@RequiresPermissions("medical:operative:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		operativeService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "operative-批量删除")
+	@ApiOperation(value="operative-批量删除", notes="operative-批量删除")
+	@RequiresPermissions("medical:operative:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.operativeService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "operative-通过id查询")
+	@ApiOperation(value="operative-通过id查询", notes="operative-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<Operative> queryById(@RequestParam(name="id",required=true) String id) {
+		Operative operative = operativeService.getById(id);
+		if(operative==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(operative);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param operative
+    */
+    @RequiresPermissions("medical:operative:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, Operative operative) {
+        return super.exportXls(request, operative, Operative.class, "operative");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("medical:operative:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, Operative.class);
+    }
+
+}

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/RuleAttrController.java

@@ -40,7 +40,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
  /**
  * @Description: rule_attr
  * @Author: jeecg-boot
- * @Date:   2023-05-07 11:32:09
+ * @Date:   2023-05-09 18:49:07
  * @Version: V1.0
  */
 @Api(tags="rule_attr")

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/SpecialDiseaseController.java

@@ -0,0 +1,178 @@
+package org.jeecg.modules.medical.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.medical.entity.SpecialDisease;
+import org.jeecg.modules.medical.service.ISpecialDiseaseService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: special_disease
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:49:16
+ * @Version: V1.0
+ */
+@Api(tags="special_disease")
+@RestController
+@RequestMapping("/medical/specialDisease")
+@Slf4j
+public class SpecialDiseaseController extends JeecgController<SpecialDisease, ISpecialDiseaseService> {
+	@Autowired
+	private ISpecialDiseaseService specialDiseaseService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param specialDisease
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "special_disease-分页列表查询")
+	@ApiOperation(value="special_disease-分页列表查询", notes="special_disease-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<SpecialDisease>> queryPageList(SpecialDisease specialDisease,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SpecialDisease> queryWrapper = QueryGenerator.initQueryWrapper(specialDisease, req.getParameterMap());
+		Page<SpecialDisease> page = new Page<SpecialDisease>(pageNo, pageSize);
+		IPage<SpecialDisease> pageList = specialDiseaseService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param specialDisease
+	 * @return
+	 */
+	@AutoLog(value = "special_disease-添加")
+	@ApiOperation(value="special_disease-添加", notes="special_disease-添加")
+	@RequiresPermissions("medical:special_disease:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SpecialDisease specialDisease) {
+		specialDiseaseService.save(specialDisease);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param specialDisease
+	 * @return
+	 */
+	@AutoLog(value = "special_disease-编辑")
+	@ApiOperation(value="special_disease-编辑", notes="special_disease-编辑")
+	@RequiresPermissions("medical:special_disease:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody SpecialDisease specialDisease) {
+		specialDiseaseService.updateById(specialDisease);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "special_disease-通过id删除")
+	@ApiOperation(value="special_disease-通过id删除", notes="special_disease-通过id删除")
+	@RequiresPermissions("medical:special_disease:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		specialDiseaseService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "special_disease-批量删除")
+	@ApiOperation(value="special_disease-批量删除", notes="special_disease-批量删除")
+	@RequiresPermissions("medical:special_disease:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.specialDiseaseService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "special_disease-通过id查询")
+	@ApiOperation(value="special_disease-通过id查询", notes="special_disease-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<SpecialDisease> queryById(@RequestParam(name="id",required=true) String id) {
+		SpecialDisease specialDisease = specialDiseaseService.getById(id);
+		if(specialDisease==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(specialDisease);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param specialDisease
+    */
+    @RequiresPermissions("medical:special_disease:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, SpecialDisease specialDisease) {
+        return super.exportXls(request, specialDisease, SpecialDisease.class, "special_disease");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("medical:special_disease:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, SpecialDisease.class);
+    }
+
+}

+ 12 - 24
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/Diagnoses.java

@@ -21,7 +21,7 @@ import lombok.experimental.Accessors;
 /**
  * @Description: diagnoses
  * @Author: jeecg-boot
- * @Date:   2023-04-23
+ * @Date:   2023-05-09 18:43:28
  * @Version: V1.0
  */
 @Data
@@ -36,38 +36,26 @@ public class Diagnoses implements Serializable {
 	@TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "主键ID")
     private java.lang.Integer id;
-	/**诊断名称*/
-	@Excel(name = "诊断名称", width = 15)
-    @ApiModelProperty(value = "诊断名称")
+	/**分类码;*/
+	@Excel(name = "分类码;", width = 15)
+    @ApiModelProperty(value = "分类码;")
+    private java.lang.String classifiCode;
+	/**分类名称;*/
+	@Excel(name = "分类名称;", width = 15)
+    @ApiModelProperty(value = "分类名称;")
+    private java.lang.String classifiName;
+	/**诊断名*/
+	@Excel(name = "诊断名", width = 15)
+    @ApiModelProperty(value = "诊断名")
     private java.lang.String diagnosticName;
-	/**英文名称*/
-	@Excel(name = "英文名称", width = 15)
-    @ApiModelProperty(value = "英文名称")
-    private java.lang.String engName;
 	/**诊断编码*/
 	@Excel(name = "诊断编码", width = 15)
     @ApiModelProperty(value = "诊断编码")
     private java.lang.String diagnoseCode;
-	/**名称拼音*/
-	@Excel(name = "名称拼音", width = 15)
-    @ApiModelProperty(value = "名称拼音")
-    private java.lang.String namePinyin;
-	/**父节点*/
-	@Excel(name = "父节点", width = 15)
-    @ApiModelProperty(value = "父节点")
-    private java.lang.String parentNode;
 	/**诊断描述*/
 	@Excel(name = "诊断描述", width = 15)
     @ApiModelProperty(value = "诊断描述")
     private java.lang.String diagnoseDesc;
-	/**是否启用*/
-	@Excel(name = "是否启用", width = 15)
-    @ApiModelProperty(value = "是否启用")
-    private java.lang.String enable;
-	/**版本号*/
-	@Excel(name = "版本号", width = 15)
-    @ApiModelProperty(value = "版本号")
-    private java.lang.Integer revision;
 	/**创建人*/
     @ApiModelProperty(value = "创建人")
     private java.lang.String createBy;

+ 75 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/Operative.java

@@ -0,0 +1,75 @@
+package org.jeecg.modules.medical.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: operative
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:44:55
+ * @Version: V1.0
+ */
+@Data
+@TableName("operative")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="operative对象", description="operative")
+public class Operative implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键ID*/
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键ID")
+    private java.lang.Integer id;
+	/**分类码*/
+	@Excel(name = "分类码", width = 15)
+    @ApiModelProperty(value = "分类码")
+    private java.lang.String classifiCode;
+	/**分类名称*/
+	@Excel(name = "分类名称", width = 15)
+    @ApiModelProperty(value = "分类名称")
+    private java.lang.String classifiName;
+	/**操作码*/
+	@Excel(name = "操作码", width = 15)
+    @ApiModelProperty(value = "操作码")
+    private java.lang.String operCode;
+	/**操作名称*/
+	@Excel(name = "操作名称", width = 15)
+    @ApiModelProperty(value = "操作名称")
+    private java.lang.String operName;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private java.lang.String state;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern =  "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern= "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern =  "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern= "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+}

+ 5 - 5
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/RuleAttr.java

@@ -21,7 +21,7 @@ import lombok.experimental.Accessors;
 /**
  * @Description: rule_attr
  * @Author: jeecg-boot
- * @Date:   2023-05-07 11:32:09
+ * @Date:   2023-05-09 18:49:07
  * @Version: V1.0
  */
 @Data
@@ -33,7 +33,7 @@ public class RuleAttr implements Serializable {
     private static final long serialVersionUID = 1L;
 
 	/**主键ID*/
-	@TableId(type = IdType.AUTO)
+	@TableId(type = IdType.ASSIGN_ID)
     @ApiModelProperty(value = "主键ID")
     private java.lang.Integer id;
 	/**接口名称*/
@@ -48,9 +48,9 @@ public class RuleAttr implements Serializable {
 	@Excel(name = "属性类型;属性类型", width = 15)
     @ApiModelProperty(value = "属性类型;属性类型")
     private java.lang.Integer attrType;
-	/**规则属性名;当有规则属性路径,属性类型时候*/
-	@Excel(name = "规则属性名;当有规则属性路径,属性类型时候", width = 15)
-    @ApiModelProperty(value = "规则属性名;当有规则属性路径,属性类型时候")
+	/**规则属性名;当有规则属性路径,属性类型时候,作为深度对象的属性*/
+	@Excel(name = "规则属性名;当有规则属性路径,属性类型时候,作为深度对象的属性", width = 15)
+    @ApiModelProperty(value = "规则属性名;当有规则属性路径,属性类型时候,作为深度对象的属性")
     private java.lang.String ruleAttr;
 	/**创建人*/
     @ApiModelProperty(value = "创建人")

+ 75 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/SpecialDisease.java

@@ -0,0 +1,75 @@
+package org.jeecg.modules.medical.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: special_disease
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:49:16
+ * @Version: V1.0
+ */
+@Data
+@TableName("special_disease")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="special_disease对象", description="special_disease")
+public class SpecialDisease implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键ID")
+    private java.lang.Integer id;
+	/**病种编号*/
+	@Excel(name = "病种编号", width = 15)
+    @ApiModelProperty(value = "病种编号")
+    private java.lang.String diseaseCode;
+	/**病种名称*/
+	@Excel(name = "病种名称", width = 15)
+    @ApiModelProperty(value = "病种名称")
+    private java.lang.String diseaseName;
+	/**起付标准*/
+	@Excel(name = "起付标准", width = 15)
+    @ApiModelProperty(value = "起付标准")
+    private java.math.BigDecimal payStandard;
+	/**支付比例*/
+	@Excel(name = "支付比例", width = 15)
+    @ApiModelProperty(value = "支付比例")
+    private java.lang.String payRatio;
+	/**支付限额*/
+	@Excel(name = "支付限额", width = 15)
+    @ApiModelProperty(value = "支付限额")
+    private java.math.BigDecimal payLimit;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern =  "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern= "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern =  "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern= "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+}

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/DiagnosesMapper.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 /**
  * @Description: diagnoses
  * @Author: jeecg-boot
- * @Date:   2023-04-23
+ * @Date:   2023-05-09 18:43:28
  * @Version: V1.0
  */
 public interface DiagnosesMapper extends BaseMapper<Diagnoses> {

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/OperativeMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.medical.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.medical.entity.Operative;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: operative
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:44:55
+ * @Version: V1.0
+ */
+public interface OperativeMapper extends BaseMapper<Operative> {
+
+}

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/RuleAttrMapper.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 /**
  * @Description: rule_attr
  * @Author: jeecg-boot
- * @Date:   2023-05-07 11:32:09
+ * @Date:   2023-05-09 18:49:07
  * @Version: V1.0
  */
 public interface RuleAttrMapper extends BaseMapper<RuleAttr> {

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/SpecialDiseaseMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.medical.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.medical.entity.SpecialDisease;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: special_disease
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:49:16
+ * @Version: V1.0
+ */
+public interface SpecialDiseaseMapper extends BaseMapper<SpecialDisease> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/OperativeMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.medical.mapper.OperativeMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/SpecialDiseaseMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.medical.mapper.SpecialDiseaseMapper">
+
+</mapper>

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IDiagnosesService.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 /**
  * @Description: diagnoses
  * @Author: jeecg-boot
- * @Date:   2023-04-23
+ * @Date:   2023-05-09 18:43:28
  * @Version: V1.0
  */
 public interface IDiagnosesService extends IService<Diagnoses> {

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IOperativeService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.medical.service;
+
+import org.jeecg.modules.medical.entity.Operative;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: operative
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:44:55
+ * @Version: V1.0
+ */
+public interface IOperativeService extends IService<Operative> {
+
+}

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IRuleAttrService.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 /**
  * @Description: rule_attr
  * @Author: jeecg-boot
- * @Date:   2023-05-07 11:32:09
+ * @Date:   2023-05-09 18:49:07
  * @Version: V1.0
  */
 public interface IRuleAttrService extends IService<RuleAttr> {

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/ISpecialDiseaseService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.medical.service;
+
+import org.jeecg.modules.medical.entity.SpecialDisease;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: special_disease
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:49:16
+ * @Version: V1.0
+ */
+public interface ISpecialDiseaseService extends IService<SpecialDisease> {
+
+}

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/DiagnosesServiceImpl.java

@@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 /**
  * @Description: diagnoses
  * @Author: jeecg-boot
- * @Date:   2023-04-23
+ * @Date:   2023-05-09 18:43:28
  * @Version: V1.0
  */
 @Service

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/OperativeServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.medical.service.impl;
+
+import org.jeecg.modules.medical.entity.Operative;
+import org.jeecg.modules.medical.mapper.OperativeMapper;
+import org.jeecg.modules.medical.service.IOperativeService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: operative
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:44:55
+ * @Version: V1.0
+ */
+@Service
+public class OperativeServiceImpl extends ServiceImpl<OperativeMapper, Operative> implements IOperativeService {
+
+}

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/RuleAttrServiceImpl.java

@@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 /**
  * @Description: rule_attr
  * @Author: jeecg-boot
- * @Date:   2023-05-07 11:32:09
+ * @Date:   2023-05-09 18:49:07
  * @Version: V1.0
  */
 @Service

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/SpecialDiseaseServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.medical.service.impl;
+
+import org.jeecg.modules.medical.entity.SpecialDisease;
+import org.jeecg.modules.medical.mapper.SpecialDiseaseMapper;
+import org.jeecg.modules.medical.service.ISpecialDiseaseService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: special_disease
+ * @Author: jeecg-boot
+ * @Date:   2023-05-09 18:49:16
+ * @Version: V1.0
+ */
+@Service
+public class SpecialDiseaseServiceImpl extends ServiceImpl<SpecialDiseaseMapper, SpecialDisease> implements ISpecialDiseaseService {
+
+}

+ 201 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/DiagnosesList.vue

@@ -0,0 +1,201 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 查询区域-END -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('diagnoses')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <!-- 高级查询区域 -->
+      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            下载
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleDetail(record)">详情</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+
+    <diagnoses-modal ref="modalForm" @ok="modalFormOk"></diagnoses-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import DiagnosesModal from './modules/DiagnosesModal'
+
+  export default {
+    name: 'DiagnosesList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      DiagnosesModal
+    },
+    data () {
+      return {
+        description: 'diagnoses管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'分类码;',
+            align:"center",
+            dataIndex: 'classifiCode'
+          },
+          {
+            title:'分类名称;',
+            align:"center",
+            dataIndex: 'classifiName'
+          },
+          {
+            title:'诊断名',
+            align:"center",
+            dataIndex: 'diagnosticName'
+          },
+          {
+            title:'诊断编码',
+            align:"center",
+            dataIndex: 'diagnoseCode'
+          },
+          {
+            title:'诊断描述',
+            align:"center",
+            dataIndex: 'diagnoseDesc'
+          },
+          {
+            title:'状态',
+            align:"center",
+            dataIndex: 'state'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/diagnoses/list",
+          delete: "/medical/diagnoses/delete",
+          deleteBatch: "/medical/diagnoses/deleteBatch",
+          exportXlsUrl: "/medical/diagnoses/exportXls",
+          importExcelUrl: "medical/diagnoses/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'classifiCode',text:'分类码;'})
+        fieldList.push({type:'string',value:'classifiName',text:'分类名称;'})
+        fieldList.push({type:'string',value:'diagnosticName',text:'诊断名'})
+        fieldList.push({type:'string',value:'diagnoseCode',text:'诊断编码'})
+        fieldList.push({type:'string',value:'diagnoseDesc',text:'诊断描述'})
+        fieldList.push({type:'string',value:'state',text:'状态'})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>

+ 26 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/Diagnoses_menu_insert.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/medical文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) 
+VALUES ('2023050906432060280', NULL, 'diagnoses', '/medical/diagnosesList', 'medical/DiagnosesList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-09 18:43:28', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906432070281', '2023050906432060280', '添加diagnoses', NULL, NULL, 0, NULL, NULL, 2, 'medical:diagnoses:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:43:28', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906432070282', '2023050906432060280', '编辑diagnoses', NULL, NULL, 0, NULL, NULL, 2, 'medical:diagnoses:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:43:28', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906432070283', '2023050906432060280', '删除diagnoses', NULL, NULL, 0, NULL, NULL, 2, 'medical:diagnoses:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:43:28', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906432070284', '2023050906432060280', '批量删除diagnoses', NULL, NULL, 0, NULL, NULL, 2, 'medical:diagnoses:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:43:28', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906432070285', '2023050906432060280', '导出excel_diagnoses', NULL, NULL, 0, NULL, NULL, 2, 'medical:diagnoses:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:43:28', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906432070286', '2023050906432060280', '导入excel_diagnoses', NULL, NULL, 0, NULL, NULL, 2, 'medical:diagnoses:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:43:28', NULL, NULL, 0, 0, '1', 0);

+ 195 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/OperativeList.vue

@@ -0,0 +1,195 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 查询区域-END -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('operative')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <!-- 高级查询区域 -->
+      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            下载
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleDetail(record)">详情</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+
+    <operative-modal ref="modalForm" @ok="modalFormOk"></operative-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import OperativeModal from './modules/OperativeModal'
+
+  export default {
+    name: 'OperativeList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      OperativeModal
+    },
+    data () {
+      return {
+        description: 'operative管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'分类码',
+            align:"center",
+            dataIndex: 'classifiCode'
+          },
+          {
+            title:'分类名称',
+            align:"center",
+            dataIndex: 'classifiName'
+          },
+          {
+            title:'操作码',
+            align:"center",
+            dataIndex: 'operCode'
+          },
+          {
+            title:'操作名称',
+            align:"center",
+            dataIndex: 'operName'
+          },
+          {
+            title:'状态',
+            align:"center",
+            dataIndex: 'state'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/operative/list",
+          delete: "/medical/operative/delete",
+          deleteBatch: "/medical/operative/deleteBatch",
+          exportXlsUrl: "/medical/operative/exportXls",
+          importExcelUrl: "medical/operative/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'classifiCode',text:'分类码'})
+        fieldList.push({type:'string',value:'classifiName',text:'分类名称'})
+        fieldList.push({type:'string',value:'operCode',text:'操作码'})
+        fieldList.push({type:'string',value:'operName',text:'操作名称'})
+        fieldList.push({type:'string',value:'state',text:'状态'})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>

+ 26 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/Operative_menu_insert.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/medical文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) 
+VALUES ('2023050906444850550', NULL, 'operative', '/medical/operativeList', 'medical/OperativeList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-09 18:44:55', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906444850551', '2023050906444850550', '添加operative', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:44:55', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906444850552', '2023050906444850550', '编辑operative', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:44:55', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906444850553', '2023050906444850550', '删除operative', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:44:55', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906444850554', '2023050906444850550', '批量删除operative', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:44:55', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906444850555', '2023050906444850550', '导出excel_operative', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:44:55', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906444850556', '2023050906444850550', '导入excel_operative', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:44:55', NULL, NULL, 0, 0, '1', 0);

+ 189 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/RuleAttrList.vue

@@ -0,0 +1,189 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 查询区域-END -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('rule_attr')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <!-- 高级查询区域 -->
+      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            下载
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleDetail(record)">详情</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+
+    <rule-attr-modal ref="modalForm" @ok="modalFormOk"></rule-attr-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import RuleAttrModal from './modules/RuleAttrModal'
+
+  export default {
+    name: 'RuleAttrList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      RuleAttrModal
+    },
+    data () {
+      return {
+        description: 'rule_attr管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'接口名称',
+            align:"center",
+            dataIndex: 'interfName'
+          },
+          {
+            title:'规则属性路径;规则属性路径',
+            align:"center",
+            dataIndex: 'attrPath'
+          },
+          {
+            title:'属性类型;属性类型',
+            align:"center",
+            dataIndex: 'attrType'
+          },
+          {
+            title:'规则属性名;当有规则属性路径,属性类型时候,作为深度对象的属性',
+            align:"center",
+            dataIndex: 'ruleAttr'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/ruleAttr/list",
+          delete: "/medical/ruleAttr/delete",
+          deleteBatch: "/medical/ruleAttr/deleteBatch",
+          exportXlsUrl: "/medical/ruleAttr/exportXls",
+          importExcelUrl: "medical/ruleAttr/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'interfName',text:'接口名称'})
+        fieldList.push({type:'string',value:'attrPath',text:'规则属性路径;规则属性路径'})
+        fieldList.push({type:'int',value:'attrType',text:'属性类型;属性类型'})
+        fieldList.push({type:'string',value:'ruleAttr',text:'规则属性名;当有规则属性路径,属性类型时候,作为深度对象的属性'})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>

+ 26 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/RuleAttr_menu_insert.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/medical文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) 
+VALUES ('2023050906495430070', NULL, 'rule_attr', '/medical/ruleAttrList', 'medical/RuleAttrList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-09 18:49:07', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906495430071', '2023050906495430070', '添加rule_attr', NULL, NULL, 0, NULL, NULL, 2, 'medical:rule_attr:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:07', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906495430072', '2023050906495430070', '编辑rule_attr', NULL, NULL, 0, NULL, NULL, 2, 'medical:rule_attr:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:07', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906495430073', '2023050906495430070', '删除rule_attr', NULL, NULL, 0, NULL, NULL, 2, 'medical:rule_attr:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:07', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906495430074', '2023050906495430070', '批量删除rule_attr', NULL, NULL, 0, NULL, NULL, 2, 'medical:rule_attr:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:07', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906495430075', '2023050906495430070', '导出excel_rule_attr', NULL, NULL, 0, NULL, NULL, 2, 'medical:rule_attr:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:07', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906495430076', '2023050906495430070', '导入excel_rule_attr', NULL, NULL, 0, NULL, NULL, 2, 'medical:rule_attr:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:07', NULL, NULL, 0, 0, '1', 0);

+ 195 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/SpecialDiseaseList.vue

@@ -0,0 +1,195 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 查询区域-END -->
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('special_disease')">导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <!-- 高级查询区域 -->
+      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            下载
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)">编辑</a>
+
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleDetail(record)">详情</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+
+    <special-disease-modal ref="modalForm" @ok="modalFormOk"></special-disease-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import SpecialDiseaseModal from './modules/SpecialDiseaseModal'
+
+  export default {
+    name: 'SpecialDiseaseList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      SpecialDiseaseModal
+    },
+    data () {
+      return {
+        description: 'special_disease管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'病种编号',
+            align:"center",
+            dataIndex: 'diseaseCode'
+          },
+          {
+            title:'病种名称',
+            align:"center",
+            dataIndex: 'diseaseName'
+          },
+          {
+            title:'起付标准',
+            align:"center",
+            dataIndex: 'payStandard'
+          },
+          {
+            title:'支付比例',
+            align:"center",
+            dataIndex: 'payRatio'
+          },
+          {
+            title:'支付限额',
+            align:"center",
+            dataIndex: 'payLimit'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/specialDisease/list",
+          delete: "/medical/specialDisease/delete",
+          deleteBatch: "/medical/specialDisease/deleteBatch",
+          exportXlsUrl: "/medical/specialDisease/exportXls",
+          importExcelUrl: "medical/specialDisease/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'diseaseCode',text:'病种编号'})
+        fieldList.push({type:'string',value:'diseaseName',text:'病种名称'})
+        fieldList.push({type:'number',value:'payStandard',text:'起付标准'})
+        fieldList.push({type:'string',value:'payRatio',text:'支付比例'})
+        fieldList.push({type:'number',value:'payLimit',text:'支付限额'})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>

+ 26 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/SpecialDisease_menu_insert.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/medical文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) 
+VALUES ('2023050906493700160', NULL, 'special_disease', '/medical/specialDiseaseList', 'medical/SpecialDiseaseList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-09 18:49:16', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906493700161', '2023050906493700160', '添加special_disease', NULL, NULL, 0, NULL, NULL, 2, 'medical:special_disease:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:16', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906493700162', '2023050906493700160', '编辑special_disease', NULL, NULL, 0, NULL, NULL, 2, 'medical:special_disease:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:16', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906493700163', '2023050906493700160', '删除special_disease', NULL, NULL, 0, NULL, NULL, 2, 'medical:special_disease:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:16', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906493710164', '2023050906493700160', '批量删除special_disease', NULL, NULL, 0, NULL, NULL, 2, 'medical:special_disease:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:16', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906493710165', '2023050906493700160', '导出excel_special_disease', NULL, NULL, 0, NULL, NULL, 2, 'medical:special_disease:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:16', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023050906493710166', '2023050906493700160', '导入excel_special_disease', NULL, NULL, 0, NULL, NULL, 2, 'medical:special_disease:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-09 18:49:16', NULL, NULL, 0, 0, '1', 0);

+ 129 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/DiagnosesForm.vue

@@ -0,0 +1,129 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="分类码;" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="classifiCode">
+              <a-input v-model="model.classifiCode" placeholder="请输入分类码;"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="分类名称;" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="classifiName">
+              <a-input v-model="model.classifiName" placeholder="请输入分类名称;"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="诊断名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="diagnosticName">
+              <a-input v-model="model.diagnosticName" placeholder="请输入诊断名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="诊断编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="diagnoseCode">
+              <a-input v-model="model.diagnoseCode" placeholder="请输入诊断编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="诊断描述" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="diagnoseDesc">
+              <a-input v-model="model.diagnoseDesc" placeholder="请输入诊断描述"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
+              <a-input v-model="model.state" placeholder="请输入状态"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'DiagnosesForm',
+    components: {
+    },
+    props: {
+      //表单禁用
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+        },
+        url: {
+          add: "/medical/diagnoses/add",
+          edit: "/medical/diagnoses/edit",
+          queryById: "/medical/diagnoses/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //备份model原始值
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 触发表单验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+    }
+  }
+</script>

+ 84 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/DiagnosesModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <diagnoses-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></diagnoses-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import DiagnosesForm from './DiagnosesForm'
+
+  export default {
+    name: 'DiagnosesModal',
+    components: {
+      DiagnosesForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 60 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/DiagnosesModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <diagnoses-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></diagnoses-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import DiagnosesForm from './DiagnosesForm'
+  export default {
+    name: 'DiagnosesModal',
+    components: {
+      DiagnosesForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>

+ 124 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeForm.vue

@@ -0,0 +1,124 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="分类码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="classifiCode">
+              <a-input v-model="model.classifiCode" placeholder="请输入分类码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="classifiName">
+              <a-input v-model="model.classifiName" placeholder="请输入分类名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operCode">
+              <a-input v-model="model.operCode" placeholder="请输入操作码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operName">
+              <a-input v-model="model.operName" placeholder="请输入操作名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
+              <a-input v-model="model.state" placeholder="请输入状态"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'OperativeForm',
+    components: {
+    },
+    props: {
+      //表单禁用
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+        },
+        url: {
+          add: "/medical/operative/add",
+          edit: "/medical/operative/edit",
+          queryById: "/medical/operative/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //备份model原始值
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 触发表单验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+    }
+  }
+</script>

+ 84 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <operative-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></operative-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import OperativeForm from './OperativeForm'
+
+  export default {
+    name: 'OperativeModal',
+    components: {
+      OperativeForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 60 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <operative-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></operative-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import OperativeForm from './OperativeForm'
+  export default {
+    name: 'OperativeModal',
+    components: {
+      OperativeForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>

+ 119 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/RuleAttrForm.vue

@@ -0,0 +1,119 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="接口名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="interfName">
+              <a-input v-model="model.interfName" placeholder="请输入接口名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="规则属性路径;规则属性路径" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="attrPath">
+              <a-input v-model="model.attrPath" placeholder="请输入规则属性路径;规则属性路径"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="属性类型;属性类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="attrType">
+              <a-input-number v-model="model.attrType" placeholder="请输入属性类型;属性类型" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="规则属性名;当有规则属性路径,属性类型时候,作为深度对象的属性" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ruleAttr">
+              <a-input v-model="model.ruleAttr" placeholder="请输入规则属性名;当有规则属性路径,属性类型时候,作为深度对象的属性"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'RuleAttrForm',
+    components: {
+    },
+    props: {
+      //表单禁用
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+        },
+        url: {
+          add: "/medical/ruleAttr/add",
+          edit: "/medical/ruleAttr/edit",
+          queryById: "/medical/ruleAttr/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //备份model原始值
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 触发表单验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+    }
+  }
+</script>

+ 84 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/RuleAttrModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <rule-attr-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></rule-attr-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import RuleAttrForm from './RuleAttrForm'
+
+  export default {
+    name: 'RuleAttrModal',
+    components: {
+      RuleAttrForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 60 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/RuleAttrModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <rule-attr-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></rule-attr-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import RuleAttrForm from './RuleAttrForm'
+  export default {
+    name: 'RuleAttrModal',
+    components: {
+      RuleAttrForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>

+ 124 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/SpecialDiseaseForm.vue

@@ -0,0 +1,124 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="病种编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="diseaseCode">
+              <a-input v-model="model.diseaseCode" placeholder="请输入病种编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="病种名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="diseaseName">
+              <a-input v-model="model.diseaseName" placeholder="请输入病种名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="起付标准" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="payStandard">
+              <a-input-number v-model="model.payStandard" placeholder="请输入起付标准" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="支付比例" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="payRatio">
+              <a-input v-model="model.payRatio" placeholder="请输入支付比例"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="支付限额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="payLimit">
+              <a-input-number v-model="model.payLimit" placeholder="请输入支付限额" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'SpecialDiseaseForm',
+    components: {
+    },
+    props: {
+      //表单禁用
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+        },
+        url: {
+          add: "/medical/specialDisease/add",
+          edit: "/medical/specialDisease/edit",
+          queryById: "/medical/specialDisease/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //备份model原始值
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 触发表单验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+    }
+  }
+</script>

+ 84 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/SpecialDiseaseModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <special-disease-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></special-disease-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import SpecialDiseaseForm from './SpecialDiseaseForm'
+
+  export default {
+    name: 'SpecialDiseaseModal',
+    components: {
+      SpecialDiseaseForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 60 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/SpecialDiseaseModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <special-disease-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></special-disease-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import SpecialDiseaseForm from './SpecialDiseaseForm'
+  export default {
+    name: 'SpecialDiseaseModal',
+    components: {
+      SpecialDiseaseForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>