0027005599 2 лет назад
Родитель
Сommit
dc21befdf7
34 измененных файлов с 3041 добавлено и 1 удалено
  1. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/AfterIncidentDetailLogController.java
  2. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/AfterIncidentLogController.java
  3. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/AfterStatisticsController.java
  4. 195 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AfterIncidentDetailLog.java
  5. 100 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AfterIncidentLog.java
  6. 97 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AfterStatistics.java
  7. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/OutpatientSettlementDetails.java
  8. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AfterIncidentDetailLogMapper.java
  9. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AfterIncidentLogMapper.java
  10. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AfterStatisticsMapper.java
  11. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterIncidentDetailLogMapper.xml
  12. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterIncidentLogMapper.xml
  13. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterStatisticsMapper.xml
  14. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IAfterIncidentDetailLogService.java
  15. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IAfterIncidentLogService.java
  16. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IAfterStatisticsService.java
  17. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/AfterIncidentDetailLogServiceImpl.java
  18. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/AfterIncidentLogServiceImpl.java
  19. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/AfterStatisticsServiceImpl.java
  20. 375 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/AfterIncidentDetailLogList.vue
  21. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/AfterIncidentDetailLog_menu_insert.sql
  22. 249 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/AfterIncidentLogList.vue
  23. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/AfterIncidentLog_menu_insert.sql
  24. 228 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/AfterStatisticsList.vue
  25. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/AfterStatistics_menu_insert.sql
  26. 274 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterIncidentDetailLogForm.vue
  27. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterIncidentDetailLogModal.Style#Drawer.vue
  28. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterIncidentDetailLogModal.vue
  29. 164 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterIncidentLogForm.vue
  30. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterIncidentLogModal.Style#Drawer.vue
  31. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterIncidentLogModal.vue
  32. 149 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterStatisticsForm.vue
  33. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterStatisticsModal.Style#Drawer.vue
  34. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AfterStatisticsModal.vue

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/AfterIncidentDetailLogController.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.AfterIncidentDetailLog;
+import org.jeecg.modules.medical.service.IAfterIncidentDetailLogService;
+
+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: after_incident_detail_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:15
+ * @Version: V1.0
+ */
+@Api(tags="after_incident_detail_log")
+@RestController
+@RequestMapping("/medical/afterIncidentDetailLog")
+@Slf4j
+public class AfterIncidentDetailLogController extends JeecgController<AfterIncidentDetailLog, IAfterIncidentDetailLogService> {
+	@Autowired
+	private IAfterIncidentDetailLogService afterIncidentDetailLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param afterIncidentDetailLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "after_incident_detail_log-分页列表查询")
+	@ApiOperation(value="after_incident_detail_log-分页列表查询", notes="after_incident_detail_log-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<AfterIncidentDetailLog>> queryPageList(AfterIncidentDetailLog afterIncidentDetailLog,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<AfterIncidentDetailLog> queryWrapper = QueryGenerator.initQueryWrapper(afterIncidentDetailLog, req.getParameterMap());
+		Page<AfterIncidentDetailLog> page = new Page<AfterIncidentDetailLog>(pageNo, pageSize);
+		IPage<AfterIncidentDetailLog> pageList = afterIncidentDetailLogService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param afterIncidentDetailLog
+	 * @return
+	 */
+	@AutoLog(value = "after_incident_detail_log-添加")
+	@ApiOperation(value="after_incident_detail_log-添加", notes="after_incident_detail_log-添加")
+	@RequiresPermissions("medical:after_incident_detail_log:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody AfterIncidentDetailLog afterIncidentDetailLog) {
+		afterIncidentDetailLogService.save(afterIncidentDetailLog);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param afterIncidentDetailLog
+	 * @return
+	 */
+	@AutoLog(value = "after_incident_detail_log-编辑")
+	@ApiOperation(value="after_incident_detail_log-编辑", notes="after_incident_detail_log-编辑")
+	@RequiresPermissions("medical:after_incident_detail_log:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody AfterIncidentDetailLog afterIncidentDetailLog) {
+		afterIncidentDetailLogService.updateById(afterIncidentDetailLog);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "after_incident_detail_log-通过id删除")
+	@ApiOperation(value="after_incident_detail_log-通过id删除", notes="after_incident_detail_log-通过id删除")
+	@RequiresPermissions("medical:after_incident_detail_log:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		afterIncidentDetailLogService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "after_incident_detail_log-批量删除")
+	@ApiOperation(value="after_incident_detail_log-批量删除", notes="after_incident_detail_log-批量删除")
+	@RequiresPermissions("medical:after_incident_detail_log:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.afterIncidentDetailLogService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "after_incident_detail_log-通过id查询")
+	@ApiOperation(value="after_incident_detail_log-通过id查询", notes="after_incident_detail_log-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<AfterIncidentDetailLog> queryById(@RequestParam(name="id",required=true) String id) {
+		AfterIncidentDetailLog afterIncidentDetailLog = afterIncidentDetailLogService.getById(id);
+		if(afterIncidentDetailLog==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(afterIncidentDetailLog);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param afterIncidentDetailLog
+    */
+    @RequiresPermissions("medical:after_incident_detail_log:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, AfterIncidentDetailLog afterIncidentDetailLog) {
+        return super.exportXls(request, afterIncidentDetailLog, AfterIncidentDetailLog.class, "after_incident_detail_log");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("medical:after_incident_detail_log:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, AfterIncidentDetailLog.class);
+    }
+
+}

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/AfterIncidentLogController.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.AfterIncidentLog;
+import org.jeecg.modules.medical.service.IAfterIncidentLogService;
+
+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: after_incident_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:08
+ * @Version: V1.0
+ */
+@Api(tags="after_incident_log")
+@RestController
+@RequestMapping("/medical/afterIncidentLog")
+@Slf4j
+public class AfterIncidentLogController extends JeecgController<AfterIncidentLog, IAfterIncidentLogService> {
+	@Autowired
+	private IAfterIncidentLogService afterIncidentLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param afterIncidentLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "after_incident_log-分页列表查询")
+	@ApiOperation(value="after_incident_log-分页列表查询", notes="after_incident_log-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<AfterIncidentLog>> queryPageList(AfterIncidentLog afterIncidentLog,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<AfterIncidentLog> queryWrapper = QueryGenerator.initQueryWrapper(afterIncidentLog, req.getParameterMap());
+		Page<AfterIncidentLog> page = new Page<AfterIncidentLog>(pageNo, pageSize);
+		IPage<AfterIncidentLog> pageList = afterIncidentLogService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param afterIncidentLog
+	 * @return
+	 */
+	@AutoLog(value = "after_incident_log-添加")
+	@ApiOperation(value="after_incident_log-添加", notes="after_incident_log-添加")
+	@RequiresPermissions("medical:after_incident_log:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody AfterIncidentLog afterIncidentLog) {
+		afterIncidentLogService.save(afterIncidentLog);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param afterIncidentLog
+	 * @return
+	 */
+	@AutoLog(value = "after_incident_log-编辑")
+	@ApiOperation(value="after_incident_log-编辑", notes="after_incident_log-编辑")
+	@RequiresPermissions("medical:after_incident_log:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody AfterIncidentLog afterIncidentLog) {
+		afterIncidentLogService.updateById(afterIncidentLog);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "after_incident_log-通过id删除")
+	@ApiOperation(value="after_incident_log-通过id删除", notes="after_incident_log-通过id删除")
+	@RequiresPermissions("medical:after_incident_log:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		afterIncidentLogService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "after_incident_log-批量删除")
+	@ApiOperation(value="after_incident_log-批量删除", notes="after_incident_log-批量删除")
+	@RequiresPermissions("medical:after_incident_log:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.afterIncidentLogService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "after_incident_log-通过id查询")
+	@ApiOperation(value="after_incident_log-通过id查询", notes="after_incident_log-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<AfterIncidentLog> queryById(@RequestParam(name="id",required=true) String id) {
+		AfterIncidentLog afterIncidentLog = afterIncidentLogService.getById(id);
+		if(afterIncidentLog==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(afterIncidentLog);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param afterIncidentLog
+    */
+    @RequiresPermissions("medical:after_incident_log:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, AfterIncidentLog afterIncidentLog) {
+        return super.exportXls(request, afterIncidentLog, AfterIncidentLog.class, "after_incident_log");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("medical:after_incident_log:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, AfterIncidentLog.class);
+    }
+
+}

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/AfterStatisticsController.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.AfterStatistics;
+import org.jeecg.modules.medical.service.IAfterStatisticsService;
+
+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: after_statistics
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:00
+ * @Version: V1.0
+ */
+@Api(tags="after_statistics")
+@RestController
+@RequestMapping("/medical/afterStatistics")
+@Slf4j
+public class AfterStatisticsController extends JeecgController<AfterStatistics, IAfterStatisticsService> {
+	@Autowired
+	private IAfterStatisticsService afterStatisticsService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param afterStatistics
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "after_statistics-分页列表查询")
+	@ApiOperation(value="after_statistics-分页列表查询", notes="after_statistics-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<AfterStatistics>> queryPageList(AfterStatistics afterStatistics,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<AfterStatistics> queryWrapper = QueryGenerator.initQueryWrapper(afterStatistics, req.getParameterMap());
+		Page<AfterStatistics> page = new Page<AfterStatistics>(pageNo, pageSize);
+		IPage<AfterStatistics> pageList = afterStatisticsService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param afterStatistics
+	 * @return
+	 */
+	@AutoLog(value = "after_statistics-添加")
+	@ApiOperation(value="after_statistics-添加", notes="after_statistics-添加")
+	@RequiresPermissions("medical:after_statistics:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody AfterStatistics afterStatistics) {
+		afterStatisticsService.save(afterStatistics);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param afterStatistics
+	 * @return
+	 */
+	@AutoLog(value = "after_statistics-编辑")
+	@ApiOperation(value="after_statistics-编辑", notes="after_statistics-编辑")
+	@RequiresPermissions("medical:after_statistics:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody AfterStatistics afterStatistics) {
+		afterStatisticsService.updateById(afterStatistics);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "after_statistics-通过id删除")
+	@ApiOperation(value="after_statistics-通过id删除", notes="after_statistics-通过id删除")
+	@RequiresPermissions("medical:after_statistics:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		afterStatisticsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "after_statistics-批量删除")
+	@ApiOperation(value="after_statistics-批量删除", notes="after_statistics-批量删除")
+	@RequiresPermissions("medical:after_statistics:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.afterStatisticsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "after_statistics-通过id查询")
+	@ApiOperation(value="after_statistics-通过id查询", notes="after_statistics-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<AfterStatistics> queryById(@RequestParam(name="id",required=true) String id) {
+		AfterStatistics afterStatistics = afterStatisticsService.getById(id);
+		if(afterStatistics==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(afterStatistics);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param afterStatistics
+    */
+    @RequiresPermissions("medical:after_statistics:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, AfterStatistics afterStatistics) {
+        return super.exportXls(request, afterStatistics, AfterStatistics.class, "after_statistics");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("medical:after_statistics:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, AfterStatistics.class);
+    }
+
+}

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

@@ -0,0 +1,195 @@
+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: after_incident_detail_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:15
+ * @Version: V1.0
+ */
+@Data
+@TableName("after_incident_detail_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="after_incident_detail_log对象", description="after_incident_detail_log")
+public class AfterIncidentDetailLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键ID")
+    private java.lang.Integer id;
+	/**医保规则ID*/
+	@Excel(name = "医保规则ID", width = 15)
+    @ApiModelProperty(value = "医保规则ID")
+    private java.lang.Integer medicalInsRuleInfoId;
+	/**医保规则编码*/
+	@Excel(name = "医保规则编码", width = 15)
+    @ApiModelProperty(value = "医保规则编码")
+    private java.lang.String medicalInsRuleInfoCode;
+	/**医保规则名称*/
+	@Excel(name = "医保规则名称", width = 15)
+    @ApiModelProperty(value = "医保规则名称")
+    private java.lang.String medicalInsRuleInfoName;
+	/**事后日志表ID*/
+	@Excel(name = "事后日志表ID", width = 15)
+    @ApiModelProperty(value = "事后日志表ID")
+    private java.lang.Integer afterIncidentLogId;
+	/**就诊类别;住院/门诊*/
+	@Excel(name = "就诊类别;住院/门诊", width = 15)
+    @ApiModelProperty(value = "就诊类别;住院/门诊")
+    private java.lang.String visitType;
+	/**科室编码*/
+	@Excel(name = "科室编码", width = 15)
+    @ApiModelProperty(value = "科室编码")
+    private java.lang.String medicalDeptCode;
+	/**科室名称*/
+	@Excel(name = "科室名称", width = 15)
+    @ApiModelProperty(value = "科室名称")
+    private java.lang.String medicalDeptName;
+	/**医生姓名*/
+	@Excel(name = "医生姓名", width = 15)
+    @ApiModelProperty(value = "医生姓名")
+    private java.lang.String doctorName;
+	/**主诊医师编码*/
+	@Excel(name = "主诊医师编码", width = 15)
+    @ApiModelProperty(value = "主诊医师编码")
+    private java.lang.String doctorId;
+	/**个人编号*/
+	@Excel(name = "个人编号", width = 15)
+    @ApiModelProperty(value = "个人编号")
+    private java.lang.String patientId;
+	/**患者姓名*/
+	@Excel(name = "患者姓名", width = 15)
+    @ApiModelProperty(value = "患者姓名")
+    private java.lang.String patientName;
+	/**住院号/门诊号*/
+	@Excel(name = "住院号/门诊号", width = 15)
+    @ApiModelProperty(value = "住院号/门诊号")
+    private java.lang.String visitNo;
+	/**医嘱号/处方号*/
+	@Excel(name = "医嘱号/处方号", width = 15)
+    @ApiModelProperty(value = "医嘱号/处方号")
+    private java.lang.String recipeNo;
+	/**项目类型*/
+	@Excel(name = "项目类型", width = 15)
+    @ApiModelProperty(value = "项目类型")
+    private java.lang.String projectType;
+	/**项目编码*/
+	@Excel(name = "项目编码", width = 15)
+    @ApiModelProperty(value = "项目编码")
+    private java.lang.String proejctCode;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private java.lang.String proejctName;
+	/**医保项目编码*/
+	@Excel(name = "医保项目编码", width = 15)
+    @ApiModelProperty(value = "医保项目编码")
+    private java.lang.String medicalProjectCode;
+	/**医保项目名称*/
+	@Excel(name = "医保项目名称", width = 15)
+    @ApiModelProperty(value = "医保项目名称")
+    private java.lang.String medicalProjectName;
+	/**发票项目编号*/
+	@Excel(name = "发票项目编号", width = 15)
+    @ApiModelProperty(value = "发票项目编号")
+    private java.lang.String invoiceProject;
+	/**费用类别;床位费、诊查费、检查费、化验费、治疗费、手术费、护理费、卫生材料费、西药费、中药饮片费*/
+	@Excel(name = "费用类别;床位费、诊查费、检查费、化验费、治疗费、手术费、护理费、卫生材料费、西药费、中药饮片费", width = 15)
+    @ApiModelProperty(value = "费用类别;床位费、诊查费、检查费、化验费、治疗费、手术费、护理费、卫生材料费、西药费、中药饮片费")
+    private java.lang.String expenseCategory;
+	/**剂型*/
+	@Excel(name = "剂型", width = 15)
+    @ApiModelProperty(value = "剂型")
+    private java.lang.String doseForm;
+	/**规格*/
+	@Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private java.lang.String medicalSpecification;
+	/**价格;单价,必须使用数值型,如”12.5”*/
+	@Excel(name = "价格;单价,必须使用数值型,如”12.5”", width = 15)
+    @ApiModelProperty(value = "价格;单价,必须使用数值型,如”12.5”")
+    private java.math.BigDecimal price;
+	/**数量;数量,必须使用数值型,如”10”*/
+	@Excel(name = "数量;数量,必须使用数值型,如”10”", width = 15)
+    @ApiModelProperty(value = "数量;数量,必须使用数值型,如”10”")
+    private java.lang.Integer medicalNumber;
+	/**单位*/
+	@Excel(name = "单位", width = 15)
+    @ApiModelProperty(value = "单位")
+    private java.lang.String doseUnit;
+	/**金额;金额,必须使用数值型,如”50.5”*/
+	@Excel(name = "金额;金额,必须使用数值型,如”50.5”", width = 15)
+    @ApiModelProperty(value = "金额;金额,必须使用数值型,如”50.5”")
+    private java.math.BigDecimal amount;
+	/**用药天数;用药天数(项目为药品时非空),医嘱服用该药品天数,必须使用数值型,如”15”*/
+	@Excel(name = "用药天数;用药天数(项目为药品时非空),医嘱服用该药品天数,必须使用数值型,如”15”", width = 15)
+    @ApiModelProperty(value = "用药天数;用药天数(项目为药品时非空),医嘱服用该药品天数,必须使用数值型,如”15”")
+    private java.lang.Integer useDay;
+	/**单次用药量;单次用药量(项目为药品时非空),配合下一个字段的单位,如 50 mg,必须使用数值型,如”50”*/
+	@Excel(name = "单次用药量;单次用药量(项目为药品时非空),配合下一个字段的单位,如 50 mg,必须使用数值型,如”50”", width = 15)
+    @ApiModelProperty(value = "单次用药量;单次用药量(项目为药品时非空),配合下一个字段的单位,如 50 mg,必须使用数值型,如”50”")
+    private java.lang.Integer singleDoseNumber;
+	/**单次用药量剂量单位;单次用药量剂量单位(项目为药品时非空)*/
+	@Excel(name = "单次用药量剂量单位;单次用药量剂量单位(项目为药品时非空)", width = 15)
+    @ApiModelProperty(value = "单次用药量剂量单位;单次用药量剂量单位(项目为药品时非空)")
+    private java.lang.String singleDoseUnit;
+	/**药量天数;药量天数(项目为药品时非空),依据医嘱服药要求,所配药品患者可以服用的天数,必须使用数值型,如”5”*/
+	@Excel(name = "药量天数;药量天数(项目为药品时非空),依据医嘱服药要求,所配药品患者可以服用的天数,必须使用数值型,如”5”", width = 15)
+    @ApiModelProperty(value = "药量天数;药量天数(项目为药品时非空),依据医嘱服药要求,所配药品患者可以服用的天数,必须使用数值型,如”5”")
+    private java.lang.Integer doseDay;
+	/**服用频次*/
+	@Excel(name = "服用频次", width = 15)
+    @ApiModelProperty(value = "服用频次")
+    private java.lang.String takeFrequence;
+	/**医保标志*/
+	@Excel(name = "医保标志", width = 15)
+    @ApiModelProperty(value = "医保标志")
+    private java.lang.String medicalInsuranceMark;
+	/**检查部位*/
+	@Excel(name = "检查部位", width = 15)
+    @ApiModelProperty(value = "检查部位")
+    private java.lang.String inspectionSite;
+	/**医嘱大类*/
+	@Excel(name = "医嘱大类", width = 15)
+    @ApiModelProperty(value = "医嘱大类")
+    private java.lang.String orderCatalog;
+	/**医嘱类别*/
+	@Excel(name = "医嘱类别", width = 15)
+    @ApiModelProperty(value = "医嘱类别")
+    private java.lang.String orderType;
+	/**创建人*/
+    @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;
+}

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

@@ -0,0 +1,100 @@
+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: after_incident_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:08
+ * @Version: V1.0
+ */
+@Data
+@TableName("after_incident_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="after_incident_log对象", description="after_incident_log")
+public class AfterIncidentLog 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 visitType;
+	/**科室编码*/
+	@Excel(name = "科室编码", width = 15)
+    @ApiModelProperty(value = "科室编码")
+    private java.lang.String medicalDeptCode;
+	/**科室名称*/
+	@Excel(name = "科室名称", width = 15)
+    @ApiModelProperty(value = "科室名称")
+    private java.lang.String medicalDeptName;
+	/**医生姓名*/
+	@Excel(name = "医生姓名", width = 15)
+    @ApiModelProperty(value = "医生姓名")
+    private java.lang.String doctorName;
+	/**主诊医师编码*/
+	@Excel(name = "主诊医师编码", width = 15)
+    @ApiModelProperty(value = "主诊医师编码")
+    private java.lang.String doctorId;
+	/**个人编号*/
+	@Excel(name = "个人编号", width = 15)
+    @ApiModelProperty(value = "个人编号")
+    private java.lang.String patientId;
+	/**患者姓名*/
+	@Excel(name = "患者姓名", width = 15)
+    @ApiModelProperty(value = "患者姓名")
+    private java.lang.String patientName;
+	/**住院号/门诊号*/
+	@Excel(name = "住院号/门诊号", width = 15)
+    @ApiModelProperty(value = "住院号/门诊号")
+    private java.lang.String visitNo;
+	/**医嘱号/处方号*/
+	@Excel(name = "医嘱号/处方号", width = 15)
+    @ApiModelProperty(value = "医嘱号/处方号")
+    private java.lang.String doctorAdviceNo;
+	/**入院日期*/
+	@Excel(name = "入院日期", width = 15, format =  "yyyy-MM-dd HH:mm:ss")
+	@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 inHospDate;
+	/**诊断编码*/
+	@Excel(name = "诊断编码", width = 15)
+    @ApiModelProperty(value = "诊断编码")
+    private java.lang.String diagnoses;
+	/**状态;WAITING,DEALING,SUCCESS,FAIL*/
+	@Excel(name = "状态;WAITING,DEALING,SUCCESS,FAIL", width = 15)
+    @ApiModelProperty(value = "状态;WAITING,DEALING,SUCCESS,FAIL")
+    private java.lang.String state;
+	/**修改时间*/
+	@Excel(name = "修改时间", width = 15, format =  "yyyy-MM-dd HH:mm:ss")
+	@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 stateTime;
+	/**创建时间*/
+	@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;
+}

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

@@ -0,0 +1,97 @@
+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: after_statistics
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:00
+ * @Version: V1.0
+ */
+@Data
+@TableName("after_statistics")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="after_statistics对象", description="after_statistics")
+public class AfterStatistics implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键ID")
+    private java.lang.Integer id;
+	/**医保规则ID*/
+	@Excel(name = "医保规则ID", width = 15)
+    @ApiModelProperty(value = "医保规则ID")
+    private java.lang.Integer medicalInsRuleInfoId;
+	/**医保规则编码*/
+	@Excel(name = "医保规则编码", width = 15)
+    @ApiModelProperty(value = "医保规则编码")
+    private java.lang.String medicalInsRuleInfoCode;
+	/**医保规则名称*/
+	@Excel(name = "医保规则名称", width = 15)
+    @ApiModelProperty(value = "医保规则名称")
+    private java.lang.String medicalInsRuleInfoName;
+	/**科室编码*/
+	@Excel(name = "科室编码", width = 15)
+    @ApiModelProperty(value = "科室编码")
+    private java.lang.String medicalDeptCode;
+	/**科室名称*/
+	@Excel(name = "科室名称", width = 15)
+    @ApiModelProperty(value = "科室名称")
+    private java.lang.String medicalDeptName;
+	/**医生姓名*/
+	@Excel(name = "医生姓名", width = 15)
+    @ApiModelProperty(value = "医生姓名")
+    private java.lang.String doctorName;
+	/**主诊医师编码*/
+	@Excel(name = "主诊医师编码", width = 15)
+    @ApiModelProperty(value = "主诊医师编码")
+    private java.lang.String doctorId;
+	/**收费项目类别*/
+	@Excel(name = "收费项目类别", width = 15)
+    @ApiModelProperty(value = "收费项目类别")
+    private java.lang.String changeClass;
+	/**占比统计*/
+	@Excel(name = "占比统计", width = 15)
+    @ApiModelProperty(value = "占比统计")
+    private java.lang.Integer proportionStatistics;
+	/**统计日期;按天统计*/
+	@Excel(name = "统计日期;按天统计", width = 15, format =  "yyyy-MM-dd HH:mm:ss")
+	@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 statisticsDate;
+	/**创建人*/
+    @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/entity/OutpatientSettlementDetails.java

@@ -33,7 +33,7 @@ public class OutpatientSettlementDetails implements Serializable {
     private static final long serialVersionUID = 1L;
 
 	/**主键*/
-	@TableId(type = IdType.ASSIGN_ID)
+	@TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "主键")
     private java.lang.Integer id;
 	/**结算单据号;单据唯一识别码,也称交易码(HISID) */

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AfterIncidentDetailLogMapper.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.AfterIncidentDetailLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: after_incident_detail_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:15
+ * @Version: V1.0
+ */
+public interface AfterIncidentDetailLogMapper extends BaseMapper<AfterIncidentDetailLog> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AfterIncidentLogMapper.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.AfterIncidentLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: after_incident_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:08
+ * @Version: V1.0
+ */
+public interface AfterIncidentLogMapper extends BaseMapper<AfterIncidentLog> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AfterStatisticsMapper.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.AfterStatistics;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: after_statistics
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:00
+ * @Version: V1.0
+ */
+public interface AfterStatisticsMapper extends BaseMapper<AfterStatistics> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterIncidentDetailLogMapper.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.AfterIncidentDetailLogMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterIncidentLogMapper.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.AfterIncidentLogMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AfterStatisticsMapper.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.AfterStatisticsMapper">
+
+</mapper>

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.medical.service;
+
+import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: after_incident_detail_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:15
+ * @Version: V1.0
+ */
+public interface IAfterIncidentDetailLogService extends IService<AfterIncidentDetailLog> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.medical.service;
+
+import org.jeecg.modules.medical.entity.AfterIncidentLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: after_incident_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:08
+ * @Version: V1.0
+ */
+public interface IAfterIncidentLogService extends IService<AfterIncidentLog> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.medical.service;
+
+import org.jeecg.modules.medical.entity.AfterStatistics;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: after_statistics
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:00
+ * @Version: V1.0
+ */
+public interface IAfterStatisticsService extends IService<AfterStatistics> {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.medical.service.impl;
+
+import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
+import org.jeecg.modules.medical.mapper.AfterIncidentDetailLogMapper;
+import org.jeecg.modules.medical.service.IAfterIncidentDetailLogService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: after_incident_detail_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:15
+ * @Version: V1.0
+ */
+@Service
+public class AfterIncidentDetailLogServiceImpl extends ServiceImpl<AfterIncidentDetailLogMapper, AfterIncidentDetailLog> implements IAfterIncidentDetailLogService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.medical.service.impl;
+
+import org.jeecg.modules.medical.entity.AfterIncidentLog;
+import org.jeecg.modules.medical.mapper.AfterIncidentLogMapper;
+import org.jeecg.modules.medical.service.IAfterIncidentLogService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: after_incident_log
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:08
+ * @Version: V1.0
+ */
+@Service
+public class AfterIncidentLogServiceImpl extends ServiceImpl<AfterIncidentLogMapper, AfterIncidentLog> implements IAfterIncidentLogService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.medical.service.impl;
+
+import org.jeecg.modules.medical.entity.AfterStatistics;
+import org.jeecg.modules.medical.mapper.AfterStatisticsMapper;
+import org.jeecg.modules.medical.service.IAfterStatisticsService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: after_statistics
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19 15:41:00
+ * @Version: V1.0
+ */
+@Service
+public class AfterStatisticsServiceImpl extends ServiceImpl<AfterStatisticsMapper, AfterStatistics> implements IAfterStatisticsService {
+
+}

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

@@ -0,0 +1,375 @@
+<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('after_incident_detail_log')">导出</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>
+
+    <after-incident-detail-log-modal ref="modalForm" @ok="modalFormOk"></after-incident-detail-log-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import AfterIncidentDetailLogModal from './modules/AfterIncidentDetailLogModal'
+
+  export default {
+    name: 'AfterIncidentDetailLogList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      AfterIncidentDetailLogModal
+    },
+    data () {
+      return {
+        description: 'after_incident_detail_log管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'医保规则ID',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoId'
+          },
+          {
+            title:'医保规则编码',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoCode'
+          },
+          {
+            title:'医保规则名称',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoName'
+          },
+          {
+            title:'事后日志表ID',
+            align:"center",
+            dataIndex: 'afterIncidentLogId'
+          },
+          {
+            title:'就诊类别;住院/门诊',
+            align:"center",
+            dataIndex: 'visitType'
+          },
+          {
+            title:'科室编码',
+            align:"center",
+            dataIndex: 'medicalDeptCode'
+          },
+          {
+            title:'科室名称',
+            align:"center",
+            dataIndex: 'medicalDeptName'
+          },
+          {
+            title:'医生姓名',
+            align:"center",
+            dataIndex: 'doctorName'
+          },
+          {
+            title:'主诊医师编码',
+            align:"center",
+            dataIndex: 'doctorId'
+          },
+          {
+            title:'个人编号',
+            align:"center",
+            dataIndex: 'patientId'
+          },
+          {
+            title:'患者姓名',
+            align:"center",
+            dataIndex: 'patientName'
+          },
+          {
+            title:'住院号/门诊号',
+            align:"center",
+            dataIndex: 'visitNo'
+          },
+          {
+            title:'医嘱号/处方号',
+            align:"center",
+            dataIndex: 'recipeNo'
+          },
+          {
+            title:'项目类型',
+            align:"center",
+            dataIndex: 'projectType'
+          },
+          {
+            title:'项目编码',
+            align:"center",
+            dataIndex: 'proejctCode'
+          },
+          {
+            title:'项目名称',
+            align:"center",
+            dataIndex: 'proejctName'
+          },
+          {
+            title:'医保项目编码',
+            align:"center",
+            dataIndex: 'medicalProjectCode'
+          },
+          {
+            title:'医保项目名称',
+            align:"center",
+            dataIndex: 'medicalProjectName'
+          },
+          {
+            title:'发票项目编号',
+            align:"center",
+            dataIndex: 'invoiceProject'
+          },
+          {
+            title:'费用类别;床位费、诊查费、检查费、化验费、治疗费、手术费、护理费、卫生材料费、西药费、中药饮片费',
+            align:"center",
+            dataIndex: 'expenseCategory'
+          },
+          {
+            title:'剂型',
+            align:"center",
+            dataIndex: 'doseForm'
+          },
+          {
+            title:'规格',
+            align:"center",
+            dataIndex: 'medicalSpecification'
+          },
+          {
+            title:'价格;单价,必须使用数值型,如”12.5”',
+            align:"center",
+            dataIndex: 'price'
+          },
+          {
+            title:'数量;数量,必须使用数值型,如”10”',
+            align:"center",
+            dataIndex: 'medicalNumber'
+          },
+          {
+            title:'单位',
+            align:"center",
+            dataIndex: 'doseUnit'
+          },
+          {
+            title:'金额;金额,必须使用数值型,如”50.5”',
+            align:"center",
+            dataIndex: 'amount'
+          },
+          {
+            title:'用药天数;用药天数(项目为药品时非空),医嘱服用该药品天数,必须使用数值型,如”15”',
+            align:"center",
+            dataIndex: 'useDay'
+          },
+          {
+            title:'单次用药量;单次用药量(项目为药品时非空),配合下一个字段的单位,如 50 mg,必须使用数值型,如”50”',
+            align:"center",
+            dataIndex: 'singleDoseNumber'
+          },
+          {
+            title:'单次用药量剂量单位;单次用药量剂量单位(项目为药品时非空)',
+            align:"center",
+            dataIndex: 'singleDoseUnit'
+          },
+          {
+            title:'药量天数;药量天数(项目为药品时非空),依据医嘱服药要求,所配药品患者可以服用的天数,必须使用数值型,如”5”',
+            align:"center",
+            dataIndex: 'doseDay'
+          },
+          {
+            title:'服用频次',
+            align:"center",
+            dataIndex: 'takeFrequence'
+          },
+          {
+            title:'医保标志',
+            align:"center",
+            dataIndex: 'medicalInsuranceMark'
+          },
+          {
+            title:'检查部位',
+            align:"center",
+            dataIndex: 'inspectionSite'
+          },
+          {
+            title:'医嘱大类',
+            align:"center",
+            dataIndex: 'orderCatalog'
+          },
+          {
+            title:'医嘱类别',
+            align:"center",
+            dataIndex: 'orderType'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/afterIncidentDetailLog/list",
+          delete: "/medical/afterIncidentDetailLog/delete",
+          deleteBatch: "/medical/afterIncidentDetailLog/deleteBatch",
+          exportXlsUrl: "/medical/afterIncidentDetailLog/exportXls",
+          importExcelUrl: "medical/afterIncidentDetailLog/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'int',value:'medicalInsRuleInfoId',text:'医保规则ID'})
+        fieldList.push({type:'string',value:'medicalInsRuleInfoCode',text:'医保规则编码'})
+        fieldList.push({type:'string',value:'medicalInsRuleInfoName',text:'医保规则名称'})
+        fieldList.push({type:'int',value:'afterIncidentLogId',text:'事后日志表ID'})
+        fieldList.push({type:'string',value:'visitType',text:'就诊类别;住院/门诊'})
+        fieldList.push({type:'string',value:'medicalDeptCode',text:'科室编码'})
+        fieldList.push({type:'string',value:'medicalDeptName',text:'科室名称'})
+        fieldList.push({type:'string',value:'doctorName',text:'医生姓名'})
+        fieldList.push({type:'string',value:'doctorId',text:'主诊医师编码'})
+        fieldList.push({type:'string',value:'patientId',text:'个人编号'})
+        fieldList.push({type:'string',value:'patientName',text:'患者姓名'})
+        fieldList.push({type:'string',value:'visitNo',text:'住院号/门诊号'})
+        fieldList.push({type:'string',value:'recipeNo',text:'医嘱号/处方号'})
+        fieldList.push({type:'string',value:'projectType',text:'项目类型'})
+        fieldList.push({type:'string',value:'proejctCode',text:'项目编码'})
+        fieldList.push({type:'string',value:'proejctName',text:'项目名称'})
+        fieldList.push({type:'string',value:'medicalProjectCode',text:'医保项目编码'})
+        fieldList.push({type:'string',value:'medicalProjectName',text:'医保项目名称'})
+        fieldList.push({type:'string',value:'invoiceProject',text:'发票项目编号'})
+        fieldList.push({type:'string',value:'expenseCategory',text:'费用类别;床位费、诊查费、检查费、化验费、治疗费、手术费、护理费、卫生材料费、西药费、中药饮片费'})
+        fieldList.push({type:'string',value:'doseForm',text:'剂型'})
+        fieldList.push({type:'string',value:'medicalSpecification',text:'规格'})
+        fieldList.push({type:'number',value:'price',text:'价格;单价,必须使用数值型,如”12.5”'})
+        fieldList.push({type:'int',value:'medicalNumber',text:'数量;数量,必须使用数值型,如”10”'})
+        fieldList.push({type:'string',value:'doseUnit',text:'单位'})
+        fieldList.push({type:'number',value:'amount',text:'金额;金额,必须使用数值型,如”50.5”'})
+        fieldList.push({type:'int',value:'useDay',text:'用药天数;用药天数(项目为药品时非空),医嘱服用该药品天数,必须使用数值型,如”15”'})
+        fieldList.push({type:'int',value:'singleDoseNumber',text:'单次用药量;单次用药量(项目为药品时非空),配合下一个字段的单位,如 50 mg,必须使用数值型,如”50”'})
+        fieldList.push({type:'string',value:'singleDoseUnit',text:'单次用药量剂量单位;单次用药量剂量单位(项目为药品时非空)'})
+        fieldList.push({type:'int',value:'doseDay',text:'药量天数;药量天数(项目为药品时非空),依据医嘱服药要求,所配药品患者可以服用的天数,必须使用数值型,如”5”'})
+        fieldList.push({type:'string',value:'takeFrequence',text:'服用频次'})
+        fieldList.push({type:'string',value:'medicalInsuranceMark',text:'医保标志'})
+        fieldList.push({type:'string',value:'inspectionSite',text:'检查部位'})
+        fieldList.push({type:'string',value:'orderCatalog',text:'医嘱大类'})
+        fieldList.push({type:'string',value:'orderType',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/AfterIncidentDetailLog_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 ('2023051903411670150', NULL, 'after_incident_detail_log', '/medical/afterIncidentDetailLogList', 'medical/AfterIncidentDetailLogList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-19 15:41:15', 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 ('2023051903411670151', '2023051903411670150', '添加after_incident_detail_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_detail_log:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:15', 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 ('2023051903411670152', '2023051903411670150', '编辑after_incident_detail_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_detail_log:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:15', 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 ('2023051903411670153', '2023051903411670150', '删除after_incident_detail_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_detail_log:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:15', 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 ('2023051903411670154', '2023051903411670150', '批量删除after_incident_detail_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_detail_log:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:15', 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 ('2023051903411670155', '2023051903411670150', '导出excel_after_incident_detail_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_detail_log:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:15', 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 ('2023051903411670156', '2023051903411670150', '导入excel_after_incident_detail_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_detail_log:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:15', NULL, NULL, 0, 0, '1', 0);

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

@@ -0,0 +1,249 @@
+<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('after_incident_log')">导出</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>
+
+    <after-incident-log-modal ref="modalForm" @ok="modalFormOk"></after-incident-log-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import AfterIncidentLogModal from './modules/AfterIncidentLogModal'
+
+  export default {
+    name: 'AfterIncidentLogList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      AfterIncidentLogModal
+    },
+    data () {
+      return {
+        description: 'after_incident_log管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'就诊类别;住院/门诊',
+            align:"center",
+            dataIndex: 'visitType'
+          },
+          {
+            title:'科室编码',
+            align:"center",
+            dataIndex: 'medicalDeptCode'
+          },
+          {
+            title:'科室名称',
+            align:"center",
+            dataIndex: 'medicalDeptName'
+          },
+          {
+            title:'医生姓名',
+            align:"center",
+            dataIndex: 'doctorName'
+          },
+          {
+            title:'主诊医师编码',
+            align:"center",
+            dataIndex: 'doctorId'
+          },
+          {
+            title:'个人编号',
+            align:"center",
+            dataIndex: 'patientId'
+          },
+          {
+            title:'患者姓名',
+            align:"center",
+            dataIndex: 'patientName'
+          },
+          {
+            title:'住院号/门诊号',
+            align:"center",
+            dataIndex: 'visitNo'
+          },
+          {
+            title:'医嘱号/处方号',
+            align:"center",
+            dataIndex: 'doctorAdviceNo'
+          },
+          {
+            title:'入院日期',
+            align:"center",
+            dataIndex: 'inHospDate',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title:'诊断编码',
+            align:"center",
+            dataIndex: 'diagnoses'
+          },
+          {
+            title:'状态;WAITING,DEALING,SUCCESS,FAIL',
+            align:"center",
+            dataIndex: 'state'
+          },
+          {
+            title:'修改时间',
+            align:"center",
+            dataIndex: 'stateTime',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/afterIncidentLog/list",
+          delete: "/medical/afterIncidentLog/delete",
+          deleteBatch: "/medical/afterIncidentLog/deleteBatch",
+          exportXlsUrl: "/medical/afterIncidentLog/exportXls",
+          importExcelUrl: "medical/afterIncidentLog/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:'visitType',text:'就诊类别;住院/门诊'})
+        fieldList.push({type:'string',value:'medicalDeptCode',text:'科室编码'})
+        fieldList.push({type:'string',value:'medicalDeptName',text:'科室名称'})
+        fieldList.push({type:'string',value:'doctorName',text:'医生姓名'})
+        fieldList.push({type:'string',value:'doctorId',text:'主诊医师编码'})
+        fieldList.push({type:'string',value:'patientId',text:'个人编号'})
+        fieldList.push({type:'string',value:'patientName',text:'患者姓名'})
+        fieldList.push({type:'string',value:'visitNo',text:'住院号/门诊号'})
+        fieldList.push({type:'string',value:'doctorAdviceNo',text:'医嘱号/处方号'})
+        fieldList.push({type:'date',value:'inHospDate',text:'入院日期'})
+        fieldList.push({type:'string',value:'diagnoses',text:'诊断编码'})
+        fieldList.push({type:'string',value:'state',text:'状态;WAITING,DEALING,SUCCESS,FAIL'})
+        fieldList.push({type:'date',value:'stateTime',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/AfterIncidentLog_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 ('2023051903412020080', NULL, 'after_incident_log', '/medical/afterIncidentLogList', 'medical/AfterIncidentLogList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-19 15:41:08', 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 ('2023051903412020081', '2023051903412020080', '添加after_incident_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_log:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:08', 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 ('2023051903412020082', '2023051903412020080', '编辑after_incident_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_log:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:08', 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 ('2023051903412020083', '2023051903412020080', '删除after_incident_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_log:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:08', 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 ('2023051903412020084', '2023051903412020080', '批量删除after_incident_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_log:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:08', 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 ('2023051903412020085', '2023051903412020080', '导出excel_after_incident_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_log:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:08', 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 ('2023051903412020086', '2023051903412020080', '导入excel_after_incident_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_incident_log:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:08', NULL, NULL, 0, 0, '1', 0);

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

@@ -0,0 +1,228 @@
+<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('after_statistics')">导出</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>
+
+    <after-statistics-modal ref="modalForm" @ok="modalFormOk"></after-statistics-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import AfterStatisticsModal from './modules/AfterStatisticsModal'
+
+  export default {
+    name: 'AfterStatisticsList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      AfterStatisticsModal
+    },
+    data () {
+      return {
+        description: 'after_statistics管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'医保规则ID',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoId'
+          },
+          {
+            title:'医保规则编码',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoCode'
+          },
+          {
+            title:'医保规则名称',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoName'
+          },
+          {
+            title:'科室编码',
+            align:"center",
+            dataIndex: 'medicalDeptCode'
+          },
+          {
+            title:'科室名称',
+            align:"center",
+            dataIndex: 'medicalDeptName'
+          },
+          {
+            title:'医生姓名',
+            align:"center",
+            dataIndex: 'doctorName'
+          },
+          {
+            title:'主诊医师编码',
+            align:"center",
+            dataIndex: 'doctorId'
+          },
+          {
+            title:'收费项目类别',
+            align:"center",
+            dataIndex: 'changeClass'
+          },
+          {
+            title:'占比统计',
+            align:"center",
+            dataIndex: 'proportionStatistics'
+          },
+          {
+            title:'统计日期;按天统计',
+            align:"center",
+            dataIndex: 'statisticsDate',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/afterStatistics/list",
+          delete: "/medical/afterStatistics/delete",
+          deleteBatch: "/medical/afterStatistics/deleteBatch",
+          exportXlsUrl: "/medical/afterStatistics/exportXls",
+          importExcelUrl: "medical/afterStatistics/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'int',value:'medicalInsRuleInfoId',text:'医保规则ID'})
+        fieldList.push({type:'string',value:'medicalInsRuleInfoCode',text:'医保规则编码'})
+        fieldList.push({type:'string',value:'medicalInsRuleInfoName',text:'医保规则名称'})
+        fieldList.push({type:'string',value:'medicalDeptCode',text:'科室编码'})
+        fieldList.push({type:'string',value:'medicalDeptName',text:'科室名称'})
+        fieldList.push({type:'string',value:'doctorName',text:'医生姓名'})
+        fieldList.push({type:'string',value:'doctorId',text:'主诊医师编码'})
+        fieldList.push({type:'string',value:'changeClass',text:'收费项目类别'})
+        fieldList.push({type:'int',value:'proportionStatistics',text:'占比统计'})
+        fieldList.push({type:'date',value:'statisticsDate',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/AfterStatistics_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 ('2023051903414110000', NULL, 'after_statistics', '/medical/afterStatisticsList', 'medical/AfterStatisticsList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-19 15:41:00', 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 ('2023051903414120001', '2023051903414110000', '添加after_statistics', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_statistics:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:00', 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 ('2023051903414120002', '2023051903414110000', '编辑after_statistics', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_statistics:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:00', 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 ('2023051903414120003', '2023051903414110000', '删除after_statistics', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_statistics:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:00', 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 ('2023051903414120004', '2023051903414110000', '批量删除after_statistics', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_statistics:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:00', 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 ('2023051903414120005', '2023051903414110000', '导出excel_after_statistics', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_statistics:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:00', 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 ('2023051903414120006', '2023051903414110000', '导入excel_after_statistics', NULL, NULL, 0, NULL, NULL, 2, 'medical:after_statistics:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-19 15:41:00', NULL, NULL, 0, 0, '1', 0);

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

@@ -0,0 +1,274 @@
+<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="医保规则ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalInsRuleInfoId">
+              <a-input-number v-model="model.medicalInsRuleInfoId" placeholder="请输入医保规则ID" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保规则编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalInsRuleInfoCode">
+              <a-input v-model="model.medicalInsRuleInfoCode" placeholder="请输入医保规则编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保规则名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalInsRuleInfoName">
+              <a-input v-model="model.medicalInsRuleInfoName" placeholder="请输入医保规则名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="事后日志表ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="afterIncidentLogId">
+              <a-input-number v-model="model.afterIncidentLogId" placeholder="请输入事后日志表ID" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="就诊类别;住院/门诊" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="visitType">
+              <a-input v-model="model.visitType" placeholder="请输入就诊类别;住院/门诊"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="科室编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalDeptCode">
+              <a-input v-model="model.medicalDeptCode" placeholder="请输入科室编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="科室名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalDeptName">
+              <a-input v-model="model.medicalDeptName" placeholder="请输入科室名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医生姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doctorName">
+              <a-input v-model="model.doctorName" placeholder="请输入医生姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="主诊医师编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doctorId">
+              <a-input v-model="model.doctorId" placeholder="请输入主诊医师编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="个人编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="patientId">
+              <a-input v-model="model.patientId" placeholder="请输入个人编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="患者姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="patientName">
+              <a-input v-model="model.patientName" placeholder="请输入患者姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="住院号/门诊号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="visitNo">
+              <a-input v-model="model.visitNo" placeholder="请输入住院号/门诊号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医嘱号/处方号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="recipeNo">
+              <a-input v-model="model.recipeNo" placeholder="请输入医嘱号/处方号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="项目类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="projectType">
+              <a-input v-model="model.projectType" placeholder="请输入项目类型"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="项目编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="proejctCode">
+              <a-input v-model="model.proejctCode" placeholder="请输入项目编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="项目名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="proejctName">
+              <a-input v-model="model.proejctName" placeholder="请输入项目名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保项目编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalProjectCode">
+              <a-input v-model="model.medicalProjectCode" placeholder="请输入医保项目编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保项目名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalProjectName">
+              <a-input v-model="model.medicalProjectName" placeholder="请输入医保项目名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="发票项目编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="invoiceProject">
+              <a-input v-model="model.invoiceProject" placeholder="请输入发票项目编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="费用类别;床位费、诊查费、检查费、化验费、治疗费、手术费、护理费、卫生材料费、西药费、中药饮片费" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="expenseCategory">
+              <a-input v-model="model.expenseCategory" placeholder="请输入费用类别;床位费、诊查费、检查费、化验费、治疗费、手术费、护理费、卫生材料费、西药费、中药饮片费"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="剂型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doseForm">
+              <a-input v-model="model.doseForm" placeholder="请输入剂型"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="规格" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalSpecification">
+              <a-input v-model="model.medicalSpecification" placeholder="请输入规格"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="价格;单价,必须使用数值型,如”12.5”" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="price">
+              <a-input-number v-model="model.price" placeholder="请输入价格;单价,必须使用数值型,如”12.5”" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="数量;数量,必须使用数值型,如”10”" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalNumber">
+              <a-input-number v-model="model.medicalNumber" placeholder="请输入数量;数量,必须使用数值型,如”10”" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="单位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doseUnit">
+              <a-input v-model="model.doseUnit" placeholder="请输入单位"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="金额;金额,必须使用数值型,如”50.5”" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="amount">
+              <a-input-number v-model="model.amount" placeholder="请输入金额;金额,必须使用数值型,如”50.5”" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="用药天数;用药天数(项目为药品时非空),医嘱服用该药品天数,必须使用数值型,如”15”" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="useDay">
+              <a-input-number v-model="model.useDay" placeholder="请输入用药天数;用药天数(项目为药品时非空),医嘱服用该药品天数,必须使用数值型,如”15”" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="单次用药量;单次用药量(项目为药品时非空),配合下一个字段的单位,如 50 mg,必须使用数值型,如”50”" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="singleDoseNumber">
+              <a-input-number v-model="model.singleDoseNumber" placeholder="请输入单次用药量;单次用药量(项目为药品时非空),配合下一个字段的单位,如 50 mg,必须使用数值型,如”50”" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="单次用药量剂量单位;单次用药量剂量单位(项目为药品时非空)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="singleDoseUnit">
+              <a-input v-model="model.singleDoseUnit" placeholder="请输入单次用药量剂量单位;单次用药量剂量单位(项目为药品时非空)"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="药量天数;药量天数(项目为药品时非空),依据医嘱服药要求,所配药品患者可以服用的天数,必须使用数值型,如”5”" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doseDay">
+              <a-input-number v-model="model.doseDay" placeholder="请输入药量天数;药量天数(项目为药品时非空),依据医嘱服药要求,所配药品患者可以服用的天数,必须使用数值型,如”5”" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="服用频次" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="takeFrequence">
+              <a-input v-model="model.takeFrequence" placeholder="请输入服用频次"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保标志" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalInsuranceMark">
+              <a-input v-model="model.medicalInsuranceMark" placeholder="请输入医保标志"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="检查部位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionSite">
+              <a-input v-model="model.inspectionSite" placeholder="请输入检查部位"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医嘱大类" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderCatalog">
+              <a-input v-model="model.orderCatalog" placeholder="请输入医嘱大类"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医嘱类别" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderType">
+              <a-input v-model="model.orderType" 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: 'AfterIncidentDetailLogForm',
+    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/afterIncidentDetailLog/add",
+          edit: "/medical/afterIncidentDetailLog/edit",
+          queryById: "/medical/afterIncidentDetailLog/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/AfterIncidentDetailLogModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <after-incident-detail-log-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></after-incident-detail-log-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 AfterIncidentDetailLogForm from './AfterIncidentDetailLogForm'
+
+  export default {
+    name: 'AfterIncidentDetailLogModal',
+    components: {
+      AfterIncidentDetailLogForm
+    },
+    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/AfterIncidentDetailLogModal.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="关闭">
+    <after-incident-detail-log-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></after-incident-detail-log-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import AfterIncidentDetailLogForm from './AfterIncidentDetailLogForm'
+  export default {
+    name: 'AfterIncidentDetailLogModal',
+    components: {
+      AfterIncidentDetailLogForm
+    },
+    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>

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

@@ -0,0 +1,164 @@
+<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="visitType">
+              <a-input v-model="model.visitType" placeholder="请输入就诊类别;住院/门诊"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="科室编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalDeptCode">
+              <a-input v-model="model.medicalDeptCode" placeholder="请输入科室编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="科室名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalDeptName">
+              <a-input v-model="model.medicalDeptName" placeholder="请输入科室名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医生姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doctorName">
+              <a-input v-model="model.doctorName" placeholder="请输入医生姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="主诊医师编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doctorId">
+              <a-input v-model="model.doctorId" placeholder="请输入主诊医师编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="个人编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="patientId">
+              <a-input v-model="model.patientId" placeholder="请输入个人编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="患者姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="patientName">
+              <a-input v-model="model.patientName" placeholder="请输入患者姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="住院号/门诊号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="visitNo">
+              <a-input v-model="model.visitNo" placeholder="请输入住院号/门诊号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医嘱号/处方号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doctorAdviceNo">
+              <a-input v-model="model.doctorAdviceNo" placeholder="请输入医嘱号/处方号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="入院日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inHospDate">
+              <j-date placeholder="请选择入院日期" v-model="model.inHospDate"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="诊断编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="diagnoses">
+              <a-input v-model="model.diagnoses" placeholder="请输入诊断编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="状态;WAITING,DEALING,SUCCESS,FAIL" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
+              <a-input v-model="model.state" placeholder="请输入状态;WAITING,DEALING,SUCCESS,FAIL"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="修改时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="stateTime">
+              <j-date placeholder="请选择修改时间" v-model="model.stateTime"  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: 'AfterIncidentLogForm',
+    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/afterIncidentLog/add",
+          edit: "/medical/afterIncidentLog/edit",
+          queryById: "/medical/afterIncidentLog/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/AfterIncidentLogModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <after-incident-log-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></after-incident-log-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 AfterIncidentLogForm from './AfterIncidentLogForm'
+
+  export default {
+    name: 'AfterIncidentLogModal',
+    components: {
+      AfterIncidentLogForm
+    },
+    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/AfterIncidentLogModal.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="关闭">
+    <after-incident-log-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></after-incident-log-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import AfterIncidentLogForm from './AfterIncidentLogForm'
+  export default {
+    name: 'AfterIncidentLogModal',
+    components: {
+      AfterIncidentLogForm
+    },
+    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>

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

@@ -0,0 +1,149 @@
+<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="医保规则ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalInsRuleInfoId">
+              <a-input-number v-model="model.medicalInsRuleInfoId" placeholder="请输入医保规则ID" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保规则编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalInsRuleInfoCode">
+              <a-input v-model="model.medicalInsRuleInfoCode" placeholder="请输入医保规则编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保规则名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalInsRuleInfoName">
+              <a-input v-model="model.medicalInsRuleInfoName" placeholder="请输入医保规则名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="科室编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalDeptCode">
+              <a-input v-model="model.medicalDeptCode" placeholder="请输入科室编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="科室名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalDeptName">
+              <a-input v-model="model.medicalDeptName" placeholder="请输入科室名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医生姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doctorName">
+              <a-input v-model="model.doctorName" placeholder="请输入医生姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="主诊医师编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doctorId">
+              <a-input v-model="model.doctorId" placeholder="请输入主诊医师编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="收费项目类别" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="changeClass">
+              <a-input v-model="model.changeClass" placeholder="请输入收费项目类别"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="占比统计" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="proportionStatistics">
+              <a-input-number v-model="model.proportionStatistics" placeholder="请输入占比统计" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="统计日期;按天统计" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="statisticsDate">
+              <j-date placeholder="请选择统计日期;按天统计" v-model="model.statisticsDate"  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: 'AfterStatisticsForm',
+    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/afterStatistics/add",
+          edit: "/medical/afterStatistics/edit",
+          queryById: "/medical/afterStatistics/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/AfterStatisticsModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <after-statistics-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></after-statistics-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 AfterStatisticsForm from './AfterStatisticsForm'
+
+  export default {
+    name: 'AfterStatisticsModal',
+    components: {
+      AfterStatisticsForm
+    },
+    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/AfterStatisticsModal.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="关闭">
+    <after-statistics-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></after-statistics-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import AfterStatisticsForm from './AfterStatisticsForm'
+  export default {
+    name: 'AfterStatisticsModal',
+    components: {
+      AfterStatisticsForm
+    },
+    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>