Browse Source

新增实体类

0027005599 2 năm trước cách đây
mục cha
commit
194c514a0c
32 tập tin đã thay đổi với 3649 bổ sung0 xóa
  1. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/AdvanceWarningDataDetailController.java
  2. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/controller/OperationController.java
  3. 147 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AdvanceWarningDataDetail.java
  4. 255 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/Operation.java
  5. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AdvanceWarningDataDetailMapper.java
  6. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/OperationMapper.java
  7. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/AdvanceWarningDataDetailMapper.xml
  8. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/xml/OperationMapper.xml
  9. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IAdvanceWarningDataDetailService.java
  10. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/IOperationService.java
  11. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/AdvanceWarningDataDetailServiceImpl.java
  12. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/OperationServiceImpl.java
  13. 303 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/AdvanceWarningDataDetailList.vue
  14. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/AdvanceWarningDataDetail_menu_insert.sql
  15. 264 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/MidIncidentVisitLogList.vue
  16. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/MidIncidentVisitLog_menu_insert.sql
  17. 465 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/OperationList.vue
  18. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/Operation_menu_insert.sql
  19. 201 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/OperativeItemsList.vue
  20. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/OperativeItems_menu_insert.sql
  21. 214 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AdvanceWarningDataDetailForm.vue
  22. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AdvanceWarningDataDetailModal.Style#Drawer.vue
  23. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/AdvanceWarningDataDetailModal.vue
  24. 179 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/MidIncidentVisitLogForm.vue
  25. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/MidIncidentVisitLogModal.Style#Drawer.vue
  26. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/MidIncidentVisitLogModal.vue
  27. 334 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperationForm.vue
  28. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperationModal.Style#Drawer.vue
  29. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperationModal.vue
  30. 141 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeItemsForm.vue
  31. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeItemsModal.Style#Drawer.vue
  32. 60 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/modules/OperativeItemsModal.vue

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

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

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

@@ -0,0 +1,147 @@
+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: advance_warning_data_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-06-25 10:10:43
+ * @Version: V1.0
+ */
+@Data
+@TableName("advance_warning_data_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="advance_warning_data_detail对象", description="advance_warning_data_detail")
+public class AdvanceWarningDataDetail 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 advanceWarningAuditId;
+	/**医保规则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 treatmentType;
+	/**警示级别*/
+	@Excel(name = "警示级别", width = 15)
+    @ApiModelProperty(value = "警示级别")
+    private java.lang.String reminderLevel;
+	/**提醒类别;事前提醒,事中预警,事后监管*/
+	@Excel(name = "提醒类别;事前提醒,事中预警,事后监管", width = 15)
+    @ApiModelProperty(value = "提醒类别;事前提醒,事中预警,事后监管")
+    private java.lang.String noticeType;
+	/**科室编码*/
+	@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 outpatientNumber;
+	/**医嘱号/处方号*/
+	@Excel(name = "医嘱号/处方号", width = 15)
+    @ApiModelProperty(value = "医嘱号/处方号")
+    private java.lang.String prescriptionNumber;
+	/**项目类型*/
+	@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;
+	/**扩展属性1*/
+	@Excel(name = "扩展属性1", width = 15)
+    @ApiModelProperty(value = "扩展属性1")
+    private java.lang.String extAttr1;
+	/**扩展属性2*/
+	@Excel(name = "扩展属性2", width = 15)
+    @ApiModelProperty(value = "扩展属性2")
+    private java.lang.String extAttr2;
+	/**扩展属性3*/
+	@Excel(name = "扩展属性3", width = 15)
+    @ApiModelProperty(value = "扩展属性3")
+    private java.lang.String extAttr3;
+	/**扩展属性4*/
+	@Excel(name = "扩展属性4", width = 15)
+    @ApiModelProperty(value = "扩展属性4")
+    private java.lang.String extAttr4;
+	/**规则处理结果*/
+	@Excel(name = "规则处理结果", width = 15)
+    @ApiModelProperty(value = "规则处理结果")
+    private java.lang.String description;
+	/**创建人*/
+    @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;
+}

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

@@ -0,0 +1,255 @@
+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: operation
+ * @Author: jeecg-boot
+ * @Date:   2023-06-08 09:21:37
+ * @Version: V1.0
+ */
+@Data
+@TableName("operation")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="operation对象", description="operation")
+public class Operation 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 hisid;
+	/**就诊类型;1 住院 、2 门诊*/
+	@Excel(name = "就诊类型;1 住院 、2 门诊", width = 15)
+    @ApiModelProperty(value = "就诊类型;1 住院 、2 门诊")
+    private java.lang.String treatmentType;
+	/**手术编号;手术编号,外部系统唯一主键*/
+	@Excel(name = "手术编号;手术编号,外部系统唯一主键", width = 15)
+    @ApiModelProperty(value = "手术编号;手术编号,外部系统唯一主键")
+    private java.lang.String operationNo;
+	/**手术编码;患者住院期间实施的手术/操作在特定编码体系中的代码,参照手术/操作的分类代码ICD9-CM*/
+	@Excel(name = "手术编码;患者住院期间实施的手术/操作在特定编码体系中的代码,参照手术/操作的分类代码ICD9-CM", width = 15)
+    @ApiModelProperty(value = "手术编码;患者住院期间实施的手术/操作在特定编码体系中的代码,参照手术/操作的分类代码ICD9-CM")
+    private java.lang.String operationCode;
+	/**个人编号*/
+	@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 patientGender;
+	/**操作名称;患者住院期间实施的手术/操作名称*/
+	@Excel(name = "操作名称;患者住院期间实施的手术/操作名称", width = 15)
+    @ApiModelProperty(value = "操作名称;患者住院期间实施的手术/操作名称")
+    private java.lang.String operationName;
+	/**手术开始时间;格式为yyyy-MM-dd HH:mm:ss*/
+	@Excel(name = "手术开始时间;格式为yyyy-MM-dd HH:mm:ss", 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 = "手术开始时间;格式为yyyy-MM-dd HH:mm:ss")
+    private java.util.Date operationStartTime;
+	/**手术结束时间;格式为yyyy-MM-dd HH:mm:ss*/
+	@Excel(name = "手术结束时间;格式为yyyy-MM-dd HH:mm:ss", 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 = "手术结束时间;格式为yyyy-MM-dd HH:mm:ss")
+    private java.util.Date operationEndTime;
+	/**手术医生编号*/
+	@Excel(name = "手术医生编号", width = 15)
+    @ApiModelProperty(value = "手术医生编号")
+    private java.lang.String operationDocNo;
+	/**手术医生姓名*/
+	@Excel(name = "手术医生姓名", width = 15)
+    @ApiModelProperty(value = "手术医生姓名")
+    private java.lang.String operationDocName;
+	/**手术科室编号*/
+	@Excel(name = "手术科室编号", width = 15)
+    @ApiModelProperty(value = "手术科室编号")
+    private java.lang.String operationDeptNo;
+	/**手术科室名称*/
+	@Excel(name = "手术科室名称", width = 15)
+    @ApiModelProperty(value = "手术科室名称")
+    private java.lang.String operationDeptName;
+	/**手术来源;0 本院手术 1 非本院手术*/
+	@Excel(name = "手术来源;0 本院手术 1 非本院手术", width = 15)
+    @ApiModelProperty(value = "手术来源;0 本院手术 1 非本院手术")
+    private java.lang.Integer operationSource;
+	/**手术医嘱时间;手术医嘱时间,手术医嘱创建时间,格式为yyyy-MM-dd HH:mm:ss*/
+	@Excel(name = "手术医嘱时间;手术医嘱时间,手术医嘱创建时间,格式为yyyy-MM-dd HH:mm:ss", 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 = "手术医嘱时间;手术医嘱时间,手术医嘱创建时间,格式为yyyy-MM-dd HH:mm:ss")
+    private java.util.Date operationOrderTime;
+	/**手术室编号*/
+	@Excel(name = "手术室编号", width = 15)
+    @ApiModelProperty(value = "手术室编号")
+    private java.lang.String operationRoomNo;
+	/**手术部位代码;参照CV5201.23 手术/操作体表部位代码*/
+	@Excel(name = "手术部位代码;参照CV5201.23 手术/操作体表部位代码", width = 15)
+    @ApiModelProperty(value = "手术部位代码;参照CV5201.23 手术/操作体表部位代码")
+    private java.lang.String operationSiteCode;
+	/**术前诊断编码*/
+	@Excel(name = "术前诊断编码", width = 15)
+    @ApiModelProperty(value = "术前诊断编码")
+    private java.lang.String operationDiagCode;
+	/**术前诊断名称*/
+	@Excel(name = "术前诊断名称", width = 15)
+    @ApiModelProperty(value = "术前诊断名称")
+    private java.lang.String operationDiagName;
+	/**术后诊断编码*/
+	@Excel(name = "术后诊断编码", width = 15)
+    @ApiModelProperty(value = "术后诊断编码")
+    private java.lang.String sufDiagCode;
+	/**术后诊断名称*/
+	@Excel(name = "术后诊断名称", width = 15)
+    @ApiModelProperty(value = "术后诊断名称")
+    private java.lang.String sufDiagName;
+	/**手术类型;1 一般 2 抢救 3 术中及抢救  9 其他   默认一般*/
+	@Excel(name = "手术类型;1 一般 2 抢救 3 术中及抢救  9 其他   默认一般", width = 15)
+    @ApiModelProperty(value = "手术类型;1 一般 2 抢救 3 术中及抢救  9 其他   默认一般")
+    private java.lang.Integer operationType;
+	/**手术等级*/
+	@Excel(name = "手术等级", width = 15)
+    @ApiModelProperty(value = "手术等级")
+    private java.lang.Integer operationLevel;
+	/**是否二次手术;0:否1:是*/
+	@Excel(name = "是否二次手术;0:否1:是", width = 15)
+    @ApiModelProperty(value = "是否二次手术;0:否1:是")
+    private java.lang.Integer reoperation;
+	/**切口愈合等级代码;参照CV5501.14 手术切口愈合等级代码*/
+	@Excel(name = "切口愈合等级代码;参照CV5501.14 手术切口愈合等级代码", width = 15)
+    @ApiModelProperty(value = "切口愈合等级代码;参照CV5501.14 手术切口愈合等级代码")
+    private java.lang.String incisionHealingCode;
+	/**手术切口类型;值:Ⅰ,Ⅱ,Ⅲ,Ⅳ*/
+	@Excel(name = "手术切口类型;值:Ⅰ,Ⅱ,Ⅲ,Ⅳ", width = 15)
+    @ApiModelProperty(value = "手术切口类型;值:Ⅰ,Ⅱ,Ⅲ,Ⅳ")
+    private java.lang.String incisionType;
+	/**是否有植入物;0 否 1 是,只能填入0或者1*/
+	@Excel(name = "是否有植入物;0 否 1 是,只能填入0或者1", width = 15)
+    @ApiModelProperty(value = "是否有植入物;0 否 1 是,只能填入0或者1")
+    private java.lang.Integer isImplant;
+	/**植入物标识*/
+	@Excel(name = "植入物标识", width = 15)
+    @ApiModelProperty(value = "植入物标识")
+    private java.lang.String implantNo;
+	/**植入物名称*/
+	@Excel(name = "植入物名称", width = 15)
+    @ApiModelProperty(value = "植入物名称")
+    private java.lang.String implantName;
+	/**手术一助唯一编号*/
+	@Excel(name = "手术一助唯一编号", width = 15)
+    @ApiModelProperty(value = "手术一助唯一编号")
+    private java.lang.String firstDocNo;
+	/**手术一助姓名*/
+	@Excel(name = "手术一助姓名", width = 15)
+    @ApiModelProperty(value = "手术一助姓名")
+    private java.lang.String firstDocName;
+	/**手术二助唯一编号*/
+	@Excel(name = "手术二助唯一编号", width = 15)
+    @ApiModelProperty(value = "手术二助唯一编号")
+    private java.lang.String secondDocNo;
+	/**手术二助姓名*/
+	@Excel(name = "手术二助姓名", width = 15)
+    @ApiModelProperty(value = "手术二助姓名")
+    private java.lang.String secondDocName;
+	/**手术三助唯一编号*/
+	@Excel(name = "手术三助唯一编号", width = 15)
+    @ApiModelProperty(value = "手术三助唯一编号")
+    private java.lang.String thirdDocNo;
+	/**手术三助姓名*/
+	@Excel(name = "手术三助姓名", width = 15)
+    @ApiModelProperty(value = "手术三助姓名")
+    private java.lang.String thirdDocName;
+	/**指导医生编号*/
+	@Excel(name = "指导医生编号", width = 15)
+    @ApiModelProperty(value = "指导医生编号")
+    private java.lang.String directDocNo;
+	/**指导医生姓名*/
+	@Excel(name = "指导医生姓名", width = 15)
+    @ApiModelProperty(value = "指导医生姓名")
+    private java.lang.String directDocName;
+	/**麻醉方式名称*/
+	@Excel(name = "麻醉方式名称", width = 15)
+    @ApiModelProperty(value = "麻醉方式名称")
+    private java.lang.String anesthesiaTypeName;
+	/**麻醉医生编号*/
+	@Excel(name = "麻醉医生编号", width = 15)
+    @ApiModelProperty(value = "麻醉医生编号")
+    private java.lang.String anesthesiaDocNo;
+	/**麻醉医生姓名*/
+	@Excel(name = "麻醉医生姓名", width = 15)
+    @ApiModelProperty(value = "麻醉医生姓名")
+    private java.lang.String anesthesiaDocName;
+	/**麻醉开始时间;格式为yyyy-MM-dd HH:mm:ss*/
+	@Excel(name = "麻醉开始时间;格式为yyyy-MM-dd HH:mm:ss", 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 = "麻醉开始时间;格式为yyyy-MM-dd HH:mm:ss")
+    private java.util.Date anesthesiaStartTime;
+	/**麻醉结束时间;格式为yyyy-MM-dd HH:mm:ss*/
+	@Excel(name = "麻醉结束时间;格式为yyyy-MM-dd HH:mm:ss", 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 = "麻醉结束时间;格式为yyyy-MM-dd HH:mm:ss")
+    private java.util.Date anesthesiaEndTime;
+	/**术前抗菌药物给药时间;格式为yyyy-MM-dd HH:mm:ss*/
+	@Excel(name = "术前抗菌药物给药时间;格式为yyyy-MM-dd HH:mm:ss", 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 = "术前抗菌药物给药时间;格式为yyyy-MM-dd HH:mm:ss")
+    private java.util.Date antibacterialTime;
+	/**术前首次预防用药时机*/
+	@Excel(name = "术前首次预防用药时机", width = 15)
+    @ApiModelProperty(value = "术前首次预防用药时机")
+    private java.lang.Integer premedicationTimePoint;
+	/**术中给药情况;0:未追加1:已追加*/
+	@Excel(name = "术中给药情况;0:未追加1:已追加", width = 15)
+    @ApiModelProperty(value = "术中给药情况;0:未追加1:已追加")
+    private java.lang.Integer intraoperativeDosing;
+	/**手术费用*/
+	@Excel(name = "手术费用", width = 15)
+    @ApiModelProperty(value = "手术费用")
+    private java.lang.Double amount;
+	/**创建人*/
+    @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;
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/AdvanceWarningDataDetailMapper.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.AdvanceWarningDataDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: advance_warning_data_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-06-25 10:10:43
+ * @Version: V1.0
+ */
+public interface AdvanceWarningDataDetailMapper extends BaseMapper<AdvanceWarningDataDetail> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/mapper/OperationMapper.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.Operation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: operation
+ * @Author: jeecg-boot
+ * @Date:   2023-06-08 09:21:37
+ * @Version: V1.0
+ */
+public interface OperationMapper extends BaseMapper<Operation> {
+
+}

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

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

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.medical.service;
+
+import org.jeecg.modules.medical.entity.AdvanceWarningDataDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: advance_warning_data_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-06-25 10:10:43
+ * @Version: V1.0
+ */
+public interface IAdvanceWarningDataDetailService extends IService<AdvanceWarningDataDetail> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.medical.service;
+
+import org.jeecg.modules.medical.entity.Operation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: operation
+ * @Author: jeecg-boot
+ * @Date:   2023-06-08 09:21:37
+ * @Version: V1.0
+ */
+public interface IOperationService extends IService<Operation> {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.medical.service.impl;
+
+import org.jeecg.modules.medical.entity.AdvanceWarningDataDetail;
+import org.jeecg.modules.medical.mapper.AdvanceWarningDataDetailMapper;
+import org.jeecg.modules.medical.service.IAdvanceWarningDataDetailService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: advance_warning_data_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-06-25 10:10:43
+ * @Version: V1.0
+ */
+@Service
+public class AdvanceWarningDataDetailServiceImpl extends ServiceImpl<AdvanceWarningDataDetailMapper, AdvanceWarningDataDetail> implements IAdvanceWarningDataDetailService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.medical.service.impl;
+
+import org.jeecg.modules.medical.entity.Operation;
+import org.jeecg.modules.medical.mapper.OperationMapper;
+import org.jeecg.modules.medical.service.IOperationService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: operation
+ * @Author: jeecg-boot
+ * @Date:   2023-06-08 09:21:37
+ * @Version: V1.0
+ */
+@Service
+public class OperationServiceImpl extends ServiceImpl<OperationMapper, Operation> implements IOperationService {
+
+}

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

@@ -0,0 +1,303 @@
+<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('advance_warning_data_detail')">导出</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>
+
+    <advance-warning-data-detail-modal ref="modalForm" @ok="modalFormOk"></advance-warning-data-detail-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import AdvanceWarningDataDetailModal from './modules/AdvanceWarningDataDetailModal'
+
+  export default {
+    name: 'AdvanceWarningDataDetailList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      AdvanceWarningDataDetailModal
+    },
+    data () {
+      return {
+        description: 'advance_warning_data_detail管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'事前提醒工单表ID',
+            align:"center",
+            dataIndex: 'advanceWarningAuditId'
+          },
+          {
+            title:'医保规则ID',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoId'
+          },
+          {
+            title:'医保规则编码',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoCode'
+          },
+          {
+            title:'医保规则名称',
+            align:"center",
+            dataIndex: 'medicalInsRuleInfoName'
+          },
+          {
+            title:'就诊类别;住院/门诊',
+            align:"center",
+            dataIndex: 'treatmentType'
+          },
+          {
+            title:'警示级别',
+            align:"center",
+            dataIndex: 'reminderLevel'
+          },
+          {
+            title:'提醒类别;事前提醒,事中预警,事后监管',
+            align:"center",
+            dataIndex: 'noticeType'
+          },
+          {
+            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: 'outpatientNumber'
+          },
+          {
+            title:'医嘱号/处方号',
+            align:"center",
+            dataIndex: 'prescriptionNumber'
+          },
+          {
+            title:'项目类型',
+            align:"center",
+            dataIndex: 'projectType'
+          },
+          {
+            title:'项目编码',
+            align:"center",
+            dataIndex: 'proejctCode'
+          },
+          {
+            title:'项目名称',
+            align:"center",
+            dataIndex: 'proejctName'
+          },
+          {
+            title:'扩展属性1',
+            align:"center",
+            dataIndex: 'extAttr1'
+          },
+          {
+            title:'扩展属性2',
+            align:"center",
+            dataIndex: 'extAttr2'
+          },
+          {
+            title:'扩展属性3',
+            align:"center",
+            dataIndex: 'extAttr3'
+          },
+          {
+            title:'扩展属性4',
+            align:"center",
+            dataIndex: 'extAttr4'
+          },
+          {
+            title:'规则处理结果',
+            align:"center",
+            dataIndex: 'description'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/advanceWarningDataDetail/list",
+          delete: "/medical/advanceWarningDataDetail/delete",
+          deleteBatch: "/medical/advanceWarningDataDetail/deleteBatch",
+          exportXlsUrl: "/medical/advanceWarningDataDetail/exportXls",
+          importExcelUrl: "medical/advanceWarningDataDetail/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:'advanceWarningAuditId',text:'事前提醒工单表ID'})
+        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:'treatmentType',text:'就诊类别;住院/门诊'})
+        fieldList.push({type:'string',value:'reminderLevel',text:'警示级别'})
+        fieldList.push({type:'string',value:'noticeType',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:'outpatientNumber',text:'住院号/门诊号'})
+        fieldList.push({type:'string',value:'prescriptionNumber',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:'extAttr1',text:'扩展属性1'})
+        fieldList.push({type:'string',value:'extAttr2',text:'扩展属性2'})
+        fieldList.push({type:'string',value:'extAttr3',text:'扩展属性3'})
+        fieldList.push({type:'string',value:'extAttr4',text:'扩展属性4'})
+        fieldList.push({type:'string',value:'description',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/AdvanceWarningDataDetail_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 ('2023062510103050430', NULL, 'advance_warning_data_detail', '/medical/advanceWarningDataDetailList', 'medical/AdvanceWarningDataDetailList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-06-25 10:10:43', 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 ('2023062510103050431', '2023062510103050430', '添加advance_warning_data_detail', NULL, NULL, 0, NULL, NULL, 2, 'medical:advance_warning_data_detail:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-25 10:10:43', 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 ('2023062510103050432', '2023062510103050430', '编辑advance_warning_data_detail', NULL, NULL, 0, NULL, NULL, 2, 'medical:advance_warning_data_detail:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-25 10:10:43', 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 ('2023062510103050433', '2023062510103050430', '删除advance_warning_data_detail', NULL, NULL, 0, NULL, NULL, 2, 'medical:advance_warning_data_detail:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-25 10:10:43', 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 ('2023062510103050434', '2023062510103050430', '批量删除advance_warning_data_detail', NULL, NULL, 0, NULL, NULL, 2, 'medical:advance_warning_data_detail:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-25 10:10:43', 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 ('2023062510103050435', '2023062510103050430', '导出excel_advance_warning_data_detail', NULL, NULL, 0, NULL, NULL, 2, 'medical:advance_warning_data_detail:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-25 10:10:43', 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 ('2023062510103050436', '2023062510103050430', '导入excel_advance_warning_data_detail', NULL, NULL, 0, NULL, NULL, 2, 'medical:advance_warning_data_detail:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-25 10:10:43', NULL, NULL, 0, 0, '1', 0);

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

@@ -0,0 +1,264 @@
+<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('mid_incident_visit_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>
+
+    <mid-incident-visit-log-modal ref="modalForm" @ok="modalFormOk"></mid-incident-visit-log-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import MidIncidentVisitLogModal from './modules/MidIncidentVisitLogModal'
+
+  export default {
+    name: 'MidIncidentVisitLogList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      MidIncidentVisitLogModal
+    },
+    data () {
+      return {
+        description: 'mid_incident_visit_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: 'doctorLevel'
+          },
+          {
+            title:'离院方式;1.医嘱离院 2.医嘱转院、转社区、转卫生机构 3.非医嘱离院 4.死亡 9.其他',
+            align:"center",
+            dataIndex: 'dischargeStatus'
+          },
+          {
+            title:'病人年龄;',
+            align:"center",
+            dataIndex: 'patientAge'
+          },
+          {
+            title:'病人性别;',
+            align:"center",
+            dataIndex: 'patientGender'
+          },
+          {
+            title:'项目总金额;',
+            align:"center",
+            dataIndex: 'totoalAmount'
+          },
+          {
+            title:'入院日期',
+            align:"center",
+            dataIndex: 'inHospDate',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title:'诊断编码',
+            align:"center",
+            dataIndex: 'diagnoses'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/midIncidentVisitLog/list",
+          delete: "/medical/midIncidentVisitLog/delete",
+          deleteBatch: "/medical/midIncidentVisitLog/deleteBatch",
+          exportXlsUrl: "/medical/midIncidentVisitLog/exportXls",
+          importExcelUrl: "medical/midIncidentVisitLog/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:'string',value:'doctorLevel',text:'医师级别;'})
+        fieldList.push({type:'string',value:'dischargeStatus',text:'离院方式;1.医嘱离院 2.医嘱转院、转社区、转卫生机构 3.非医嘱离院 4.死亡 9.其他'})
+        fieldList.push({type:'string',value:'patientAge',text:'病人年龄;'})
+        fieldList.push({type:'string',value:'patientGender',text:'病人性别;'})
+        fieldList.push({type:'number',value:'totoalAmount',text:'项目总金额;'})
+        fieldList.push({type:'date',value:'inHospDate',text:'入院日期'})
+        fieldList.push({type:'string',value:'diagnoses',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/MidIncidentVisitLog_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 ('2023052106302370540', NULL, 'mid_incident_visit_log', '/medical/midIncidentVisitLogList', 'medical/MidIncidentVisitLogList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-05-21 18:30:54', 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 ('2023052106302380541', '2023052106302370540', '添加mid_incident_visit_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:mid_incident_visit_log:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-21 18:30:54', 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 ('2023052106302380542', '2023052106302370540', '编辑mid_incident_visit_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:mid_incident_visit_log:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-21 18:30:54', 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 ('2023052106302380543', '2023052106302370540', '删除mid_incident_visit_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:mid_incident_visit_log:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-21 18:30:54', 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 ('2023052106302380544', '2023052106302370540', '批量删除mid_incident_visit_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:mid_incident_visit_log:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-21 18:30:54', 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 ('2023052106302380545', '2023052106302370540', '导出excel_mid_incident_visit_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:mid_incident_visit_log:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-21 18:30:54', 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 ('2023052106302380546', '2023052106302370540', '导入excel_mid_incident_visit_log', NULL, NULL, 0, NULL, NULL, 2, 'medical:mid_incident_visit_log:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-05-21 18:30:54', NULL, NULL, 0, 0, '1', 0);

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

@@ -0,0 +1,465 @@
+<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('operation')">导出</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>
+
+    <operation-modal ref="modalForm" @ok="modalFormOk"></operation-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import OperationModal from './modules/OperationModal'
+
+  export default {
+    name: 'OperationList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      OperationModal
+    },
+    data () {
+      return {
+        description: 'operation管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'结算单据号;',
+            align:"center",
+            dataIndex: 'hisid'
+          },
+          {
+            title:'就诊类型;1 住院 、2 门诊',
+            align:"center",
+            dataIndex: 'treatmentType'
+          },
+          {
+            title:'手术编号;手术编号,外部系统唯一主键',
+            align:"center",
+            dataIndex: 'operationNo'
+          },
+          {
+            title:'手术编码;患者住院期间实施的手术/操作在特定编码体系中的代码,参照手术/操作的分类代码ICD9-CM',
+            align:"center",
+            dataIndex: 'operationCode'
+          },
+          {
+            title:'个人编号',
+            align:"center",
+            dataIndex: 'patientId'
+          },
+          {
+            title:'患者姓名',
+            align:"center",
+            dataIndex: 'patientName'
+          },
+          {
+            title:'患者性别',
+            align:"center",
+            dataIndex: 'patientGender'
+          },
+          {
+            title:'操作名称;患者住院期间实施的手术/操作名称',
+            align:"center",
+            dataIndex: 'operationName'
+          },
+          {
+            title:'手术开始时间;格式为yyyy-MM-dd HH:mm:ss',
+            align:"center",
+            dataIndex: 'operationStartTime',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title:'手术结束时间;格式为yyyy-MM-dd HH:mm:ss',
+            align:"center",
+            dataIndex: 'operationEndTime',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title:'手术医生编号',
+            align:"center",
+            dataIndex: 'operationDocNo'
+          },
+          {
+            title:'手术医生姓名',
+            align:"center",
+            dataIndex: 'operationDocName'
+          },
+          {
+            title:'手术科室编号',
+            align:"center",
+            dataIndex: 'operationDeptNo'
+          },
+          {
+            title:'手术科室名称',
+            align:"center",
+            dataIndex: 'operationDeptName'
+          },
+          {
+            title:'手术来源;0 本院手术 1 非本院手术',
+            align:"center",
+            dataIndex: 'operationSource'
+          },
+          {
+            title:'手术医嘱时间;手术医嘱时间,手术医嘱创建时间,格式为yyyy-MM-dd HH:mm:ss',
+            align:"center",
+            dataIndex: 'operationOrderTime',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title:'手术室编号',
+            align:"center",
+            dataIndex: 'operationRoomNo'
+          },
+          {
+            title:'手术部位代码;参照CV5201.23 手术/操作体表部位代码',
+            align:"center",
+            dataIndex: 'operationSiteCode'
+          },
+          {
+            title:'术前诊断编码',
+            align:"center",
+            dataIndex: 'operationDiagCode'
+          },
+          {
+            title:'术前诊断名称',
+            align:"center",
+            dataIndex: 'operationDiagName'
+          },
+          {
+            title:'术后诊断编码',
+            align:"center",
+            dataIndex: 'sufDiagCode'
+          },
+          {
+            title:'术后诊断名称',
+            align:"center",
+            dataIndex: 'sufDiagName'
+          },
+          {
+            title:'手术类型;1 一般 2 抢救 3 术中及抢救  9 其他   默认一般',
+            align:"center",
+            dataIndex: 'operationType'
+          },
+          {
+            title:'手术等级',
+            align:"center",
+            dataIndex: 'operationLevel'
+          },
+          {
+            title:'是否二次手术;0:否1:是',
+            align:"center",
+            dataIndex: 'reoperation'
+          },
+          {
+            title:'切口愈合等级代码;参照CV5501.14 手术切口愈合等级代码',
+            align:"center",
+            dataIndex: 'incisionHealingCode'
+          },
+          {
+            title:'手术切口类型;值:Ⅰ,Ⅱ,Ⅲ,Ⅳ',
+            align:"center",
+            dataIndex: 'incisionType'
+          },
+          {
+            title:'是否有植入物;0 否 1 是,只能填入0或者1',
+            align:"center",
+            dataIndex: 'isImplant'
+          },
+          {
+            title:'植入物标识',
+            align:"center",
+            dataIndex: 'implantNo'
+          },
+          {
+            title:'植入物名称',
+            align:"center",
+            dataIndex: 'implantName'
+          },
+          {
+            title:'手术一助唯一编号',
+            align:"center",
+            dataIndex: 'firstDocNo'
+          },
+          {
+            title:'手术一助姓名',
+            align:"center",
+            dataIndex: 'firstDocName'
+          },
+          {
+            title:'手术二助唯一编号',
+            align:"center",
+            dataIndex: 'secondDocNo'
+          },
+          {
+            title:'手术二助姓名',
+            align:"center",
+            dataIndex: 'secondDocName'
+          },
+          {
+            title:'手术三助唯一编号',
+            align:"center",
+            dataIndex: 'thirdDocNo'
+          },
+          {
+            title:'手术三助姓名',
+            align:"center",
+            dataIndex: 'thirdDocName'
+          },
+          {
+            title:'指导医生编号',
+            align:"center",
+            dataIndex: 'directDocNo'
+          },
+          {
+            title:'指导医生姓名',
+            align:"center",
+            dataIndex: 'directDocName'
+          },
+          {
+            title:'麻醉方式名称',
+            align:"center",
+            dataIndex: 'anesthesiaTypeName'
+          },
+          {
+            title:'麻醉医生编号',
+            align:"center",
+            dataIndex: 'anesthesiaDocNo'
+          },
+          {
+            title:'麻醉医生姓名',
+            align:"center",
+            dataIndex: 'anesthesiaDocName'
+          },
+          {
+            title:'麻醉开始时间;格式为yyyy-MM-dd HH:mm:ss',
+            align:"center",
+            dataIndex: 'anesthesiaStartTime',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title:'麻醉结束时间;格式为yyyy-MM-dd HH:mm:ss',
+            align:"center",
+            dataIndex: 'anesthesiaEndTime',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title:'术前抗菌药物给药时间;格式为yyyy-MM-dd HH:mm:ss',
+            align:"center",
+            dataIndex: 'antibacterialTime',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            }
+          },
+          {
+            title:'术前首次预防用药时机',
+            align:"center",
+            dataIndex: 'premedicationTimePoint'
+          },
+          {
+            title:'术中给药情况;0:未追加1:已追加',
+            align:"center",
+            dataIndex: 'intraoperativeDosing'
+          },
+          {
+            title:'手术费用',
+            align:"center",
+            dataIndex: 'amount'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/medical/operation/list",
+          delete: "/medical/operation/delete",
+          deleteBatch: "/medical/operation/deleteBatch",
+          exportXlsUrl: "/medical/operation/exportXls",
+          importExcelUrl: "medical/operation/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:'hisid',text:'结算单据号;'})
+        fieldList.push({type:'string',value:'treatmentType',text:'就诊类型;1 住院 、2 门诊'})
+        fieldList.push({type:'string',value:'operationNo',text:'手术编号;手术编号,外部系统唯一主键'})
+        fieldList.push({type:'string',value:'operationCode',text:'手术编码;患者住院期间实施的手术/操作在特定编码体系中的代码,参照手术/操作的分类代码ICD9-CM'})
+        fieldList.push({type:'string',value:'patientId',text:'个人编号'})
+        fieldList.push({type:'string',value:'patientName',text:'患者姓名'})
+        fieldList.push({type:'string',value:'patientGender',text:'患者性别'})
+        fieldList.push({type:'string',value:'operationName',text:'操作名称;患者住院期间实施的手术/操作名称'})
+        fieldList.push({type:'date',value:'operationStartTime',text:'手术开始时间;格式为yyyy-MM-dd HH:mm:ss'})
+        fieldList.push({type:'date',value:'operationEndTime',text:'手术结束时间;格式为yyyy-MM-dd HH:mm:ss'})
+        fieldList.push({type:'string',value:'operationDocNo',text:'手术医生编号'})
+        fieldList.push({type:'string',value:'operationDocName',text:'手术医生姓名'})
+        fieldList.push({type:'string',value:'operationDeptNo',text:'手术科室编号'})
+        fieldList.push({type:'string',value:'operationDeptName',text:'手术科室名称'})
+        fieldList.push({type:'int',value:'operationSource',text:'手术来源;0 本院手术 1 非本院手术'})
+        fieldList.push({type:'date',value:'operationOrderTime',text:'手术医嘱时间;手术医嘱时间,手术医嘱创建时间,格式为yyyy-MM-dd HH:mm:ss'})
+        fieldList.push({type:'string',value:'operationRoomNo',text:'手术室编号'})
+        fieldList.push({type:'string',value:'operationSiteCode',text:'手术部位代码;参照CV5201.23 手术/操作体表部位代码'})
+        fieldList.push({type:'string',value:'operationDiagCode',text:'术前诊断编码'})
+        fieldList.push({type:'string',value:'operationDiagName',text:'术前诊断名称'})
+        fieldList.push({type:'string',value:'sufDiagCode',text:'术后诊断编码'})
+        fieldList.push({type:'string',value:'sufDiagName',text:'术后诊断名称'})
+        fieldList.push({type:'int',value:'operationType',text:'手术类型;1 一般 2 抢救 3 术中及抢救  9 其他   默认一般'})
+        fieldList.push({type:'int',value:'operationLevel',text:'手术等级'})
+        fieldList.push({type:'int',value:'reoperation',text:'是否二次手术;0:否1:是'})
+        fieldList.push({type:'string',value:'incisionHealingCode',text:'切口愈合等级代码;参照CV5501.14 手术切口愈合等级代码'})
+        fieldList.push({type:'string',value:'incisionType',text:'手术切口类型;值:Ⅰ,Ⅱ,Ⅲ,Ⅳ'})
+        fieldList.push({type:'int',value:'isImplant',text:'是否有植入物;0 否 1 是,只能填入0或者1'})
+        fieldList.push({type:'string',value:'implantNo',text:'植入物标识'})
+        fieldList.push({type:'string',value:'implantName',text:'植入物名称'})
+        fieldList.push({type:'string',value:'firstDocNo',text:'手术一助唯一编号'})
+        fieldList.push({type:'string',value:'firstDocName',text:'手术一助姓名'})
+        fieldList.push({type:'string',value:'secondDocNo',text:'手术二助唯一编号'})
+        fieldList.push({type:'string',value:'secondDocName',text:'手术二助姓名'})
+        fieldList.push({type:'string',value:'thirdDocNo',text:'手术三助唯一编号'})
+        fieldList.push({type:'string',value:'thirdDocName',text:'手术三助姓名'})
+        fieldList.push({type:'string',value:'directDocNo',text:'指导医生编号'})
+        fieldList.push({type:'string',value:'directDocName',text:'指导医生姓名'})
+        fieldList.push({type:'string',value:'anesthesiaTypeName',text:'麻醉方式名称'})
+        fieldList.push({type:'string',value:'anesthesiaDocNo',text:'麻醉医生编号'})
+        fieldList.push({type:'string',value:'anesthesiaDocName',text:'麻醉医生姓名'})
+        fieldList.push({type:'date',value:'anesthesiaStartTime',text:'麻醉开始时间;格式为yyyy-MM-dd HH:mm:ss'})
+        fieldList.push({type:'date',value:'anesthesiaEndTime',text:'麻醉结束时间;格式为yyyy-MM-dd HH:mm:ss'})
+        fieldList.push({type:'date',value:'antibacterialTime',text:'术前抗菌药物给药时间;格式为yyyy-MM-dd HH:mm:ss'})
+        fieldList.push({type:'int',value:'premedicationTimePoint',text:'术前首次预防用药时机'})
+        fieldList.push({type:'int',value:'intraoperativeDosing',text:'术中给药情况;0:未追加1:已追加'})
+        fieldList.push({type:'number',value:'amount',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/Operation_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 ('2023060809211960370', NULL, 'operation', '/medical/operationList', 'medical/OperationList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-06-08 09:21:37', 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 ('2023060809211960371', '2023060809211960370', '添加operation', NULL, NULL, 0, NULL, NULL, 2, 'medical:operation:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:37', 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 ('2023060809211960372', '2023060809211960370', '编辑operation', NULL, NULL, 0, NULL, NULL, 2, 'medical:operation:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:37', 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 ('2023060809211960373', '2023060809211960370', '删除operation', NULL, NULL, 0, NULL, NULL, 2, 'medical:operation:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:37', 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 ('2023060809211960374', '2023060809211960370', '批量删除operation', NULL, NULL, 0, NULL, NULL, 2, 'medical:operation:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:37', 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 ('2023060809211960375', '2023060809211960370', '导出excel_operation', NULL, NULL, 0, NULL, NULL, 2, 'medical:operation:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:37', 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 ('2023060809211960376', '2023060809211960370', '导入excel_operation', NULL, NULL, 0, NULL, NULL, 2, 'medical:operation:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:37', NULL, NULL, 0, 0, '1', 0);

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

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

+ 26 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/vue/OperativeItems_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 ('2023060809219280290', NULL, 'operative_items', '/medical/operativeItemsList', 'medical/OperativeItemsList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-06-08 09:21:29', 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 ('2023060809219280291', '2023060809219280290', '添加operative_items', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative_items:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:29', 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 ('2023060809219280292', '2023060809219280290', '编辑operative_items', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative_items:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:29', 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 ('2023060809219280293', '2023060809219280290', '删除operative_items', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative_items:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:29', 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 ('2023060809219280294', '2023060809219280290', '批量删除operative_items', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative_items:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:29', 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 ('2023060809219280295', '2023060809219280290', '导出excel_operative_items', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative_items:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:29', 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 ('2023060809219280296', '2023060809219280290', '导入excel_operative_items', NULL, NULL, 0, NULL, NULL, 2, 'medical:operative_items:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-06-08 09:21:29', NULL, NULL, 0, 0, '1', 0);

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

@@ -0,0 +1,214 @@
+<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="advanceWarningAuditId">
+              <a-input-number v-model="model.advanceWarningAuditId" placeholder="请输入事前提醒工单表ID" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <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="treatmentType">
+              <a-input v-model="model.treatmentType" placeholder="请输入就诊类别;住院/门诊"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="警示级别" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reminderLevel">
+              <a-input v-model="model.reminderLevel" placeholder="请输入警示级别"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="提醒类别;事前提醒,事中预警,事后监管" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="noticeType">
+              <a-input v-model="model.noticeType" 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="outpatientNumber">
+              <a-input v-model="model.outpatientNumber" placeholder="请输入住院号/门诊号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医嘱号/处方号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="prescriptionNumber">
+              <a-input v-model="model.prescriptionNumber" 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="扩展属性1" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="extAttr1">
+              <a-input v-model="model.extAttr1" placeholder="请输入扩展属性1"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="扩展属性2" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="extAttr2">
+              <a-input v-model="model.extAttr2" placeholder="请输入扩展属性2"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="扩展属性3" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="extAttr3">
+              <a-input v-model="model.extAttr3" placeholder="请输入扩展属性3"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="扩展属性4" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="extAttr4">
+              <a-input v-model="model.extAttr4" placeholder="请输入扩展属性4"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="规则处理结果" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="description">
+              <a-input v-model="model.description" 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: 'AdvanceWarningDataDetailForm',
+    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/advanceWarningDataDetail/add",
+          edit: "/medical/advanceWarningDataDetail/edit",
+          queryById: "/medical/advanceWarningDataDetail/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/AdvanceWarningDataDetailModal.Style#Drawer.vue

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

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

@@ -0,0 +1,179 @@
+<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="doctorLevel">
+              <a-input v-model="model.doctorLevel" placeholder="请输入医师级别;"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="离院方式;1.医嘱离院 2.医嘱转院、转社区、转卫生机构 3.非医嘱离院 4.死亡 9.其他" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="dischargeStatus">
+              <a-input v-model="model.dischargeStatus" placeholder="请输入离院方式;1.医嘱离院 2.医嘱转院、转社区、转卫生机构 3.非医嘱离院 4.死亡 9.其他"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="病人年龄;" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="patientAge">
+              <a-input v-model="model.patientAge" placeholder="请输入病人年龄;"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="病人性别;" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="patientGender">
+              <a-input v-model="model.patientGender" placeholder="请输入病人性别;"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="项目总金额;" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totoalAmount">
+              <a-input-number v-model="model.totoalAmount" placeholder="请输入项目总金额;" style="width: 100%" />
+            </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-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: 'MidIncidentVisitLogForm',
+    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/midIncidentVisitLog/add",
+          edit: "/medical/midIncidentVisitLog/edit",
+          queryById: "/medical/midIncidentVisitLog/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/MidIncidentVisitLogModal.Style#Drawer.vue

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

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

@@ -0,0 +1,334 @@
+<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="hisid">
+              <a-input v-model="model.hisid" placeholder="请输入结算单据号;"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="就诊类型;1 住院 、2 门诊" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="treatmentType">
+              <a-input v-model="model.treatmentType" placeholder="请输入就诊类型;1 住院 、2 门诊"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术编号;手术编号,外部系统唯一主键" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationNo">
+              <a-input v-model="model.operationNo" placeholder="请输入手术编号;手术编号,外部系统唯一主键"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术编码;患者住院期间实施的手术/操作在特定编码体系中的代码,参照手术/操作的分类代码ICD9-CM" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationCode">
+              <a-input v-model="model.operationCode" placeholder="请输入手术编码;患者住院期间实施的手术/操作在特定编码体系中的代码,参照手术/操作的分类代码ICD9-CM"  ></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="patientGender">
+              <a-input v-model="model.patientGender" placeholder="请输入患者性别"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="操作名称;患者住院期间实施的手术/操作名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationName">
+              <a-input v-model="model.operationName" placeholder="请输入操作名称;患者住院期间实施的手术/操作名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术开始时间;格式为yyyy-MM-dd HH:mm:ss" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationStartTime">
+              <j-date placeholder="请选择手术开始时间;格式为yyyy-MM-dd HH:mm:ss" v-model="model.operationStartTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术结束时间;格式为yyyy-MM-dd HH:mm:ss" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationEndTime">
+              <j-date placeholder="请选择手术结束时间;格式为yyyy-MM-dd HH:mm:ss" v-model="model.operationEndTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术医生编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationDocNo">
+              <a-input v-model="model.operationDocNo" placeholder="请输入手术医生编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术医生姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationDocName">
+              <a-input v-model="model.operationDocName" placeholder="请输入手术医生姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术科室编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationDeptNo">
+              <a-input v-model="model.operationDeptNo" placeholder="请输入手术科室编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术科室名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationDeptName">
+              <a-input v-model="model.operationDeptName" placeholder="请输入手术科室名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术来源;0 本院手术 1 非本院手术" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationSource">
+              <a-input-number v-model="model.operationSource" placeholder="请输入手术来源;0 本院手术 1 非本院手术" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术医嘱时间;手术医嘱时间,手术医嘱创建时间,格式为yyyy-MM-dd HH:mm:ss" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationOrderTime">
+              <j-date placeholder="请选择手术医嘱时间;手术医嘱时间,手术医嘱创建时间,格式为yyyy-MM-dd HH:mm:ss" v-model="model.operationOrderTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术室编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationRoomNo">
+              <a-input v-model="model.operationRoomNo" placeholder="请输入手术室编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术部位代码;参照CV5201.23 手术/操作体表部位代码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationSiteCode">
+              <a-input v-model="model.operationSiteCode" placeholder="请输入手术部位代码;参照CV5201.23 手术/操作体表部位代码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="术前诊断编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationDiagCode">
+              <a-input v-model="model.operationDiagCode" placeholder="请输入术前诊断编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="术前诊断名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationDiagName">
+              <a-input v-model="model.operationDiagName" placeholder="请输入术前诊断名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="术后诊断编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sufDiagCode">
+              <a-input v-model="model.sufDiagCode" placeholder="请输入术后诊断编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="术后诊断名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sufDiagName">
+              <a-input v-model="model.sufDiagName" placeholder="请输入术后诊断名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术类型;1 一般 2 抢救 3 术中及抢救  9 其他   默认一般" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationType">
+              <a-input-number v-model="model.operationType" placeholder="请输入手术类型;1 一般 2 抢救 3 术中及抢救  9 其他   默认一般" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术等级" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationLevel">
+              <a-input-number v-model="model.operationLevel" placeholder="请输入手术等级" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="是否二次手术;0:否1:是" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reoperation">
+              <a-input-number v-model="model.reoperation" placeholder="请输入是否二次手术;0:否1:是" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="切口愈合等级代码;参照CV5501.14 手术切口愈合等级代码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="incisionHealingCode">
+              <a-input v-model="model.incisionHealingCode" placeholder="请输入切口愈合等级代码;参照CV5501.14 手术切口愈合等级代码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术切口类型;值:Ⅰ,Ⅱ,Ⅲ,Ⅳ" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="incisionType">
+              <a-input v-model="model.incisionType" placeholder="请输入手术切口类型;值:Ⅰ,Ⅱ,Ⅲ,Ⅳ"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="是否有植入物;0 否 1 是,只能填入0或者1" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isImplant">
+              <a-input-number v-model="model.isImplant" placeholder="请输入是否有植入物;0 否 1 是,只能填入0或者1" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="植入物标识" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="implantNo">
+              <a-input v-model="model.implantNo" placeholder="请输入植入物标识"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="植入物名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="implantName">
+              <a-input v-model="model.implantName" placeholder="请输入植入物名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术一助唯一编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="firstDocNo">
+              <a-input v-model="model.firstDocNo" placeholder="请输入手术一助唯一编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术一助姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="firstDocName">
+              <a-input v-model="model.firstDocName" placeholder="请输入手术一助姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术二助唯一编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="secondDocNo">
+              <a-input v-model="model.secondDocNo" placeholder="请输入手术二助唯一编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术二助姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="secondDocName">
+              <a-input v-model="model.secondDocName" placeholder="请输入手术二助姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术三助唯一编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="thirdDocNo">
+              <a-input v-model="model.thirdDocNo" placeholder="请输入手术三助唯一编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术三助姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="thirdDocName">
+              <a-input v-model="model.thirdDocName" placeholder="请输入手术三助姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="指导医生编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="directDocNo">
+              <a-input v-model="model.directDocNo" placeholder="请输入指导医生编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="指导医生姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="directDocName">
+              <a-input v-model="model.directDocName" placeholder="请输入指导医生姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="麻醉方式名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="anesthesiaTypeName">
+              <a-input v-model="model.anesthesiaTypeName" placeholder="请输入麻醉方式名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="麻醉医生编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="anesthesiaDocNo">
+              <a-input v-model="model.anesthesiaDocNo" placeholder="请输入麻醉医生编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="麻醉医生姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="anesthesiaDocName">
+              <a-input v-model="model.anesthesiaDocName" placeholder="请输入麻醉医生姓名"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="麻醉开始时间;格式为yyyy-MM-dd HH:mm:ss" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="anesthesiaStartTime">
+              <j-date placeholder="请选择麻醉开始时间;格式为yyyy-MM-dd HH:mm:ss" v-model="model.anesthesiaStartTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="麻醉结束时间;格式为yyyy-MM-dd HH:mm:ss" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="anesthesiaEndTime">
+              <j-date placeholder="请选择麻醉结束时间;格式为yyyy-MM-dd HH:mm:ss" v-model="model.anesthesiaEndTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="术前抗菌药物给药时间;格式为yyyy-MM-dd HH:mm:ss" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="antibacterialTime">
+              <j-date placeholder="请选择术前抗菌药物给药时间;格式为yyyy-MM-dd HH:mm:ss" v-model="model.antibacterialTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="术前首次预防用药时机" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="premedicationTimePoint">
+              <a-input-number v-model="model.premedicationTimePoint" placeholder="请输入术前首次预防用药时机" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="术中给药情况;0:未追加1:已追加" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="intraoperativeDosing">
+              <a-input-number v-model="model.intraoperativeDosing" placeholder="请输入术中给药情况;0:未追加1:已追加" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术费用" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="amount">
+              <a-input-number v-model="model.amount" placeholder="请输入手术费用" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'OperationForm',
+    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/operation/add",
+          edit: "/medical/operation/edit",
+          queryById: "/medical/operation/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/OperationModal.Style#Drawer.vue

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

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

@@ -0,0 +1,141 @@
+<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="operativeCode">
+              <a-input v-model="model.operativeCode" placeholder="请输入医院手术编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医院手术名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operativeName">
+              <a-input v-model="model.operativeName" placeholder="请输入医院手术名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保手术编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalOperativeCode">
+              <a-input v-model="model.medicalOperativeCode" placeholder="请输入医保手术编码"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="医保手术名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="medicalOperativeName">
+              <a-input v-model="model.medicalOperativeName" placeholder="请输入医保手术名称"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="手术接口json信息" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operativeHisJson">
+              <a-textarea v-model="model.operativeHisJson" rows="4" placeholder="请输入手术接口json信息" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
+              <a-input v-model="model.state" placeholder="请输入状态"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'OperativeItemsForm',
+    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: {
+           operativeCode: [
+              { required: true, message: '请输入医院手术编码!'},
+           ],
+           operativeName: [
+              { required: true, message: '请输入医院手术名称!'},
+           ],
+           medicalOperativeCode: [
+              { required: true, message: '请输入医保手术编码!'},
+           ],
+           medicalOperativeName: [
+              { required: true, message: '请输入医保手术名称!'},
+           ],
+        },
+        url: {
+          add: "/medical/operativeItems/add",
+          edit: "/medical/operativeItems/edit",
+          queryById: "/medical/operativeItems/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/OperativeItemsModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <operative-items-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></operative-items-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 OperativeItemsForm from './OperativeItemsForm'
+
+  export default {
+    name: 'OperativeItemsModal',
+    components: {
+      OperativeItemsForm
+    },
+    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/OperativeItemsModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <operative-items-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></operative-items-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import OperativeItemsForm from './OperativeItemsForm'
+  export default {
+    name: 'OperativeItemsModal',
+    components: {
+      OperativeItemsForm
+    },
+    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>