From 5fccfd521d02ae9a3cd29a0bdc9dcf4b4b179f59 Mon Sep 17 00:00:00 2001 From: 克 刘 <4345453@qq.com> Date: Fri, 10 Apr 2020 11:40:25 +0800 Subject: [PATCH] Merge branch 'dev' of http://192.168.2.240:7070/r/kidgrow-microservices-platform into dev --- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml | 1 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java | 37 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDictionariesController.java | 30 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java | 3 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDictionariesMapper.xml | 14 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorAnswer.java | 2 kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js | 25 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java | 42 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java | 7 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysProductMapper.xml | 2 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java | 4 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessServer.java | 2 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java | 24 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DataNeed.java | 2 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml | 17 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/sysdictionaries.html | 285 +++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java | 37 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java | 43 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDoctor.java | 19 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDictionariesMapper.java | 2 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysArea.java | 21 kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/treetable2/treeTable.css | 396 +++++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysProductService.java | 7 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/sysArea.html | 187 ++ kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java | 33 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysAreaMapper.java | 8 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java | 2 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java | 26 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java | 2 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorDto.java | 9 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysAreaService.java | 8 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java | 10 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/resources/application.yml | 5 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor.html | 711 +++++++++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorServer.java | 3 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html | 153 + kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysAreaMapper.xml | 5 kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/treetable2/treeTable.js | 1494 ++++++++++++++++++ kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDictionaries.java | 9 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html | 236 ++ kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorVo.java | 9 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java | 2 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml | 4 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java | 7 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java | 12 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java | 37 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorSigning.java | 12 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDictionariesVo.java | 10 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDictionariesService.java | 8 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java | 3 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java | 125 + kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessRecords.java | 2 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysProductController.java | 60 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorTemplete.java | 2 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDictionariesServiceImpl.java | 47 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java | 18 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/SecurityConstants.java | 5 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java | 10 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java | 7 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/sysArea_form.html | 110 + kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product_form.html | 101 + kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysAreaController.java | 45 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html | 133 + kidgrow-web/kidgrow-web-manager/src/main/resources/static/index.html | 33 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java | 5 65 files changed, 4,557 insertions(+), 173 deletions(-) diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessRecords.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessRecords.java index d2f1139..37c7539 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessRecords.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessRecords.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -61,6 +62,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic private Boolean isDel; /** * 状态,1启用,0停用 diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessServer.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessServer.java index bbe86f9..79457ae 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessServer.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/BusinessServer.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -54,6 +55,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DataNeed.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DataNeed.java index f32429d..df4fc12 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DataNeed.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DataNeed.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -72,6 +73,7 @@ /** * 是否删除,1删除(已下载),0未删除(未下载) */ + @TableLogic private Boolean isDel; /** * 文件路径 diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorAnswer.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorAnswer.java index cedd506..7f5cad4 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorAnswer.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorAnswer.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -29,6 +30,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorServer.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorServer.java index d89f08c..f72a645 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorServer.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorServer.java @@ -1,12 +1,12 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.NotBlank; import org.hibernate.validator.constraints.NotEmpty; /** @@ -42,6 +42,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorSigning.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorSigning.java index 0efd75b..3c0f4cd 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorSigning.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorSigning.java @@ -1,18 +1,13 @@ package com.kidgrow.oprationcenter.model; -import com.kidgrow.common.model.SuperModel; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.*; - -import java.util.Date; +import org.hibernate.validator.constraints.NotEmpty; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -34,6 +29,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorTemplete.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorTemplete.java index 8d1ebf5..e26093c 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorTemplete.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/DoctorTemplete.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -76,6 +77,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java index d856b5d..57a9392 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java @@ -1,12 +1,12 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.NotBlank; import org.hibernate.validator.constraints.NotEmpty; /** @@ -46,6 +46,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java index 32c138c..8995728 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -72,6 +73,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java index 5865e22..f0d6424 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -50,6 +51,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java index 639fef6..bc8236d 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -66,6 +67,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic private Boolean isDel; /** * 状态,1已查收,0未处理 diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java index f822277..a38e4f4 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -8,6 +9,7 @@ import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.math.BigDecimal; /** @@ -35,31 +37,37 @@ /** * 时长(天) */ - @NotEmpty(message = "时长(天)不能为空") + @NotNull(message = "时长不能为空") private Integer proTime; + /** + * 时长单位 + */ + @NotNull(message = "时长单位不能为空") + private Integer proTimeUnit; /** * 产品类型 0试用 1正式 */ - @NotEmpty(message = "产品类型 0试用 1正式不能为空") + @NotNull(message = "产品类型 0试用 1正式不能为空") private Integer proType; /** * 建议售价 */ - @NotEmpty(message = "建议售价不能为空") + @NotNull(message = "建议售价不能为空") private BigDecimal proPrice; /** * 报告量 */ - @NotEmpty(message = "报告量不能为空") + @NotNull(message = "报告量不能为空") private Integer recordCount; /** * 读片量 */ - @NotEmpty(message = "读片量不能为空") + @NotNull(message = "读片量不能为空") private Integer ailightCount; /** * 是否删除,1删除,0未删除 */ + @TableLogic private Boolean isDel; /** * 状态,1启用,0停用 diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java index 3f9f798..f7b1772 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.service; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.oprationcenter.model.SysFeedback; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.service.ISuperService; @@ -29,5 +30,11 @@ * @return SysFeedback对象 */ SysFeedback findByObject(SysFeedback sysFeedback); + /** + * 状态变更 + * @param params + * @return + */ + ResultBody updateEnabled(Map<String, Object> params); } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysProductService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysProductService.java index 0487484..64d7428 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysProductService.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysProductService.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.service; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.oprationcenter.model.SysProduct; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.service.ISuperService; @@ -29,5 +30,11 @@ * @return SysProduct对象 */ SysProduct findByObject(SysProduct sysProduct); + /** + * 状态变更 + * @param params + * @return + */ + ResultBody updateEnabled(Map<String, Object> params); } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java index a3ca564..0c7e151 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java @@ -1,18 +1,19 @@ package com.kidgrow.oprationcenter.service.impl; -import org.springframework.stereotype.Service; -import com.kidgrow.common.model.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.service.impl.SuperServiceImpl; +import com.kidgrow.oprationcenter.mapper.SysFeedbackMapper; +import com.kidgrow.oprationcenter.model.SysFeedback; +import com.kidgrow.oprationcenter.service.ISysFeedbackService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; +import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; -import org.apache.commons.collections4.MapUtils; -import lombok.extern.slf4j.Slf4j; - -import com.kidgrow.oprationcenter.model.SysFeedback; -import com.kidgrow.oprationcenter.mapper.SysFeedbackMapper; -import com.kidgrow.oprationcenter.service.ISysFeedbackService; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -46,4 +47,24 @@ public SysFeedback findByObject(SysFeedback sysFeedback){ return baseMapper.findByObject(sysFeedback); } + + /** + * 根据id和启用禁用值更新数据 + * @param params + * @return ResultBody + */ + @Override + public ResultBody updateEnabled(Map<String, Object> params) { + Long id = MapUtils.getLong(params, "id"); + Boolean enabled = MapUtils.getBoolean(params, "enabled"); + + SysFeedback feedback = baseMapper.selectById(id); + if (feedback == null) { + return ResultBody.failed("该反馈数据不存在!"); + } + feedback.setEnabled(enabled); + feedback.setUpdateTime(new Date()); + int i = baseMapper.updateById(feedback); + return i > 0 ? ResultBody.ok().data(feedback).msg("更新成功") : ResultBody.failed("更新失败"); + } } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java index 82797e4..a57e78b 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java @@ -1,18 +1,19 @@ package com.kidgrow.oprationcenter.service.impl; -import org.springframework.stereotype.Service; -import com.kidgrow.common.model.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.service.impl.SuperServiceImpl; +import com.kidgrow.oprationcenter.mapper.SysProductMapper; +import com.kidgrow.oprationcenter.model.SysProduct; +import com.kidgrow.oprationcenter.service.ISysProductService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; +import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; -import org.apache.commons.collections4.MapUtils; -import lombok.extern.slf4j.Slf4j; - -import com.kidgrow.oprationcenter.model.SysProduct; -import com.kidgrow.oprationcenter.mapper.SysProductMapper; -import com.kidgrow.oprationcenter.service.ISysProductService; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -46,4 +47,24 @@ public SysProduct findByObject(SysProduct sysProduct){ return baseMapper.findByObject(sysProduct); } + + /** + * 根据id和启用禁用值更新数据 + * @param params + * @return ResultBody + */ + @Override + public ResultBody updateEnabled(Map<String, Object> params) { + Long id = MapUtils.getLong(params, "id"); + Boolean enabled = MapUtils.getBoolean(params, "enabled"); + + SysProduct sysProduct = baseMapper.selectById(id); + if (sysProduct == null) { + return ResultBody.failed("该数据不存在!"); + } + sysProduct.setEnabled(enabled); + sysProduct.setUpdateTime(new Date()); + int i = baseMapper.updateById(sysProduct); + return i > 0 ? ResultBody.ok().data(sysProduct).msg("更新成功") : ResultBody.failed("更新失败"); + } } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml index de5684f..50c3397 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml @@ -4,7 +4,13 @@ <mapper namespace="com.kidgrow.oprationcenter.mapper.SysFeedbackMapper"> <!--定义查询列--> <sql id="Column_List"> - * + id, + doctor_name, + doctor_tel, + department_name, + hospital_name, + enabled, + create_time </sql> <!--sql查询片段--> @@ -19,7 +25,7 @@ and doctor_id = #{p.doctorId} </if> <if test="p.doctorName != null and p.doctorName !=''"> - and doctor_name = #{p.doctorName} + and doctor_name like concat('%', #{p.doctorName}, '%') </if> <if test="p.doctorTel != null and p.doctorTel !=''"> and doctor_tel = #{p.doctorTel} @@ -57,11 +63,8 @@ <if test="p.updateUserName != null and p.updateUserName !=''"> and update_user_name = #{p.updateUserName} </if> - <if test="p.createTime != null and p.createTime !=''"> - and create_time = #{p.createTime} - </if> - <if test="p.updateTime != null and p.updateTime !=''"> - and update_time = #{p.updateTime} + <if test="p.createTime != null and p.createTime !='' and p.updateTime != null and p.updateTime !=''"> + and (create_time between #{p.createTime} and #{p.updateTime}) </if> </where> </sql> diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysProductMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysProductMapper.xml index e015f6f..c23f867 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysProductMapper.xml +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysProductMapper.xml @@ -16,7 +16,7 @@ and id = #{p.id} </if> <if test="p.proName != null and p.proName !=''"> - and pro_name = #{p.proName} + and pro_name like concat('%', #{p.proName}, '%') </if> <if test="p.proTime != null and p.proTime !=''"> and pro_time = #{p.proTime} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java index 5376e06..e95b416 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java @@ -1,28 +1,24 @@ package com.kidgrow.oprationcenter.controller; -import java.util.Map; import com.kidgrow.common.controller.BaseController; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.ObjectError; -import org.springframework.web.bind.annotation.*; +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.model.ResultBody; +import com.kidgrow.oprationcenter.model.SysFeedback; +import com.kidgrow.oprationcenter.service.ISysFeedbackService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; - -import com.kidgrow.oprationcenter.model.SysFeedback; -import com.kidgrow.oprationcenter.service.ISysFeedbackService; -import com.kidgrow.common.model.*; - +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.annotation.*; + import javax.validation.Valid; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Set; /** @@ -50,12 +46,12 @@ @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping - public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) { + public PageResult list(@RequestParam Map<String, Object> params) { if(params.size()==0){ params.put("page",1); params.put("limit",10); } - return ResultBody.ok().data(sysFeedbackService.findList(params)); + return sysFeedbackService.findList(params); } /** @@ -115,4 +111,23 @@ return ResultBody.failed().msg("删除失败"); } } + /** + * 修改状态 + * + * @param params + * @return + */ + @ApiOperation(value = "修改反馈数据状态") + @GetMapping("/updateEnabled") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Boolean") + }) + public ResultBody updateEnabled(@RequestParam Map<String, Object> params) { + if (params.size()==0) + { + return ResultBody.failed().msg("参数异常!"); + } + return sysFeedbackService.updateEnabled(params); + } } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java index ee6f3b1..35c2c14 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java @@ -1,28 +1,24 @@ package com.kidgrow.oprationcenter.controller; -import java.util.Map; import com.kidgrow.common.controller.BaseController; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.ObjectError; -import org.springframework.web.bind.annotation.*; +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.model.ResultBody; +import com.kidgrow.oprationcenter.model.SysLogger; +import com.kidgrow.oprationcenter.service.ISysLoggerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; - -import com.kidgrow.oprationcenter.model.SysLogger; -import com.kidgrow.oprationcenter.service.ISysLoggerService; -import com.kidgrow.common.model.*; - +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.annotation.*; + import javax.validation.Valid; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Set; /** @@ -93,10 +89,10 @@ } else { boolean v= sysLoggerService.saveOrUpdate(sysLogger); if(v) { - return ResultBody.ok().data(sysLogger).msg("保存成功"); + return ResultBody.ok().data(sysLogger).msg("反馈提交成功"); } else { - return ResultBody.failed().msg("保存失败"); + return ResultBody.failed().msg("信息提交失败"); } } } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysProductController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysProductController.java index dea3751..16185a5 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysProductController.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysProductController.java @@ -3,13 +3,16 @@ import com.kidgrow.common.controller.BaseController; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; +import com.kidgrow.oprationcenter.model.ProductOrderDetail; import com.kidgrow.oprationcenter.model.SysProduct; +import com.kidgrow.oprationcenter.service.IProductOrderDetailService; import com.kidgrow.oprationcenter.service.ISysProductService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; @@ -31,11 +34,13 @@ */ @Slf4j @RestController -@RequestMapping("/sysproduct") +@RequestMapping("/product") @Api(tags = "") public class SysProductController extends BaseController{ @Autowired private ISysProductService sysProductService; + @Autowired + private IProductOrderDetailService productOrderDetailService; /** * 列表 @@ -46,12 +51,12 @@ @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping - public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) { + public PageResult list(@RequestParam Map<String, Object> params) { if(params.size()==0){ params.put("page",1); params.put("limit",10); } - return ResultBody.ok().data(sysProductService.findList(params)); + return sysProductService.findList(params); } /** @@ -103,12 +108,53 @@ @ApiOperation(value = "删除") @DeleteMapping("/{id}") public ResultBody delete(@PathVariable Long id) { - boolean v= sysProductService.removeById(id); - if(v) { - return ResultBody.ok().msg("删除成功"); + if (!ProIsUseed(id)) { + return ResultBody.failed().msg("该产品已经被使用,无法删除!"); } else { - return ResultBody.failed().msg("删除失败"); + boolean v = sysProductService.removeById(id); + if (v) { + return ResultBody.ok().msg("删除成功"); + } else { + return ResultBody.failed().msg("删除失败"); + } + } + } + + /** + * 判断该产品id下有没有已经使用的订单明细 + * @param id + * @return + */ + private boolean ProIsUseed(Long id) + { + ProductOrderDetail productOrderDetail=new ProductOrderDetail(); + productOrderDetail.setProId(id); + productOrderDetail=productOrderDetailService.findByObject(productOrderDetail); + return (productOrderDetail==null); + } + /** + * 修改状态 + * + * @param params + * @return + */ + @ApiOperation(value = "修改数据状态") + @GetMapping("/updateEnabled") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Boolean") + }) + public ResultBody updateEnabled(@RequestParam Map<String, Object> params) { + if (params.size()==0) + { + return ResultBody.failed().msg("参数异常!"); + } + else if (!ProIsUseed(Long.valueOf(MapUtils.getInteger(params, "id")))) { + return ResultBody.failed().msg("该产品已经被使用,无法删除!"); + } + else{ + return sysProductService.updateEnabled(params); } } } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml index 0a3f8d2..dc1f9c9 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml @@ -61,6 +61,7 @@ - sys_logger - data_need - business_records + - sys_feedback ignoreSqls: - com.kidgrow.usercenter.mapper.SysRoleMapper.findAll diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysArea.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysArea.java index 7b93ba0..57cfc7b 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysArea.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysArea.java @@ -1,11 +1,13 @@ package com.kidgrow.usercenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; -import com.kidgrow.common.model.SuperModel; +import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.NotEmpty; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -21,12 +23,16 @@ @NoArgsConstructor @AllArgsConstructor @TableName("sys_area") -public class SysArea extends SuperModel { - private static final long serialVersionUID = 1L; +public class SysArea extends Model<SysArea> { + /** + * 区域id + */ + private Long id; /** * 区域名称 */ + @NotEmpty(message = "区域名称不能为空") private String areaName; /** * 父级区域id @@ -60,4 +66,13 @@ * 名称拼音 */ private String areaCh; + /** + * 状态,1启用,0停用 + */ + private Boolean enabled; + /** + * 是否删除,1删除,0未删除 + */ + @TableLogic + private Boolean isDel; } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDictionaries.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDictionaries.java index a04cd74..563a202 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDictionaries.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDictionaries.java @@ -1,10 +1,7 @@ package com.kidgrow.usercenter.model; +import com.baomidou.mybatisplus.annotation.*; import com.kidgrow.common.model.SuperModel; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.AllArgsConstructor; import lombok.Data; @@ -36,6 +33,9 @@ */ @NotEmpty(message = "字典值不能为空") private String dictionariesName; + + @NotEmpty(message = "字典KEY不能为空") + private String dictionariesKey; /** * 字典归属分类的标识(如果这个字典项是分类,则该字段为空) */ @@ -47,6 +47,7 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic private Integer isDel; /** * 状态,1启用,0停用 diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDoctor.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDoctor.java index 1927292..e738e58 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDoctor.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDoctor.java @@ -1,5 +1,6 @@ package com.kidgrow.usercenter.model; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.kidgrow.common.model.SuperModel; import lombok.AllArgsConstructor; @@ -7,6 +8,8 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.NotEmpty; + +import javax.validation.constraints.NotNull; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -32,7 +35,7 @@ /** * 所属医院ID */ - @NotEmpty(message = "所属医院ID不能为空") + @NotNull(message = "所属医院ID不能为空") private Long hospitalId; /** * 医院名称 @@ -42,12 +45,10 @@ /** * 科室ID */ - @NotEmpty(message = "科室ID不能为空") private Long departmentId; /** * 科室名称 */ - @NotEmpty(message = "科室名称不能为空") private String departmentName; /** * 医生姓名 @@ -98,14 +99,24 @@ /** * 是否删除,1删除,0未删除 */ + @TableLogic private Boolean isDel; /** * 医生状态 1正常 0试用 */ - @NotEmpty(message = "医生状态 1正常 0试用不能为空") + @NotNull(message = "医生状态 1正常 0试用不能为空") private Boolean doctorState; /** * 启用禁用状态,1启用,0停用 */ private Boolean enabled; + + /** + * 销售代表的id + */ + private String serverUserId; + /** + * 销售代表名称 + */ + private String serverUserName; } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDictionariesVo.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDictionariesVo.java new file mode 100644 index 0000000..28ede91 --- /dev/null +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDictionariesVo.java @@ -0,0 +1,10 @@ +package com.kidgrow.usercenter.vo; + +import com.kidgrow.usercenter.model.SysDictionaries; +import lombok.Data; + +@Data +public class SysDictionariesVo extends SysDictionaries { + + private String dictionariesClassName; +} diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorDto.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorDto.java new file mode 100644 index 0000000..b8900fe --- /dev/null +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorDto.java @@ -0,0 +1,9 @@ +package com.kidgrow.usercenter.vo; + +import lombok.Data; + +@Data +public class SysDoctorDto extends SysDoctorVo { + private String username; + private String password; +} diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorVo.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorVo.java new file mode 100644 index 0000000..562f388 --- /dev/null +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorVo.java @@ -0,0 +1,9 @@ +package com.kidgrow.usercenter.vo; + +import com.kidgrow.usercenter.model.SysDoctor; +import lombok.Data; + +@Data +public class SysDoctorVo extends SysDoctor { + private String username; +} diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysAreaMapper.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysAreaMapper.java index 344a45e..0524888 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysAreaMapper.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysAreaMapper.java @@ -1,8 +1,7 @@ package com.kidgrow.usercenter.mapper; -import com.kidgrow.usercenter.model.SysArea; import com.kidgrow.db.mapper.SuperMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.kidgrow.usercenter.model.SysArea; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,12 +17,11 @@ */ public interface SysAreaMapper extends SuperMapper<SysArea> { /** - * 分页查询省市区数据表列表 - * @param page + * 查询省市区数据表列表 * @param params * @return */ - List<SysArea> findList(Page<SysArea> page, @Param("p") Map<String, Object> params); + List<SysArea> findList(@Param("p") Map<String, Object> params); /** * 根据SysArea对象当做查询条件进行查询 diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDictionariesMapper.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDictionariesMapper.java index 8721214..141fe6e 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDictionariesMapper.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDictionariesMapper.java @@ -31,4 +31,6 @@ * @return SysDictionaries对象 */ SysDictionaries findByObject(@Param("p") SysDictionaries sysDictionaries); + + List<SysDictionaries> findAll(@Param("p") Map<String, Object> params); } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysAreaService.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysAreaService.java index 4d484bb..7ce78d4 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysAreaService.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysAreaService.java @@ -1,5 +1,6 @@ package com.kidgrow.usercenter.service; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.usercenter.model.SysArea; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.service.ISuperService; @@ -29,5 +30,12 @@ * @return SysArea对象 */ SysArea findByObject(SysArea sysArea); + + /** + * 状态变更 + * @param params + * @return + */ + ResultBody updateEnabled(Map<String, Object> params); } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java index c90eea9..9775fca 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java @@ -1,5 +1,6 @@ package com.kidgrow.usercenter.service; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.usercenter.model.SysDepartment; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.service.ISuperService; @@ -29,5 +30,9 @@ * @return SysDepartment对象 */ SysDepartment findByObject(SysDepartment sysDepartment); + + ResultBody findAll(Map<String, Object> params); + + ResultBody findListByHospitalId(Map<String, Object> params); } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDictionariesService.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDictionariesService.java index 1c5fba0..933ce9d 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDictionariesService.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDictionariesService.java @@ -1,9 +1,11 @@ package com.kidgrow.usercenter.service; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.usercenter.model.SysDictionaries; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.service.ISuperService; +import java.util.List; import java.util.Map; /** @@ -20,7 +22,7 @@ * @param params * @return */ - PageResult<SysDictionaries> findList(Map<String, Object> params); + PageResult findList(Map<String, Object> params); /** @@ -29,5 +31,9 @@ * @return SysDictionaries对象 */ SysDictionaries findByObject(SysDictionaries sysDictionaries); + + ResultBody updateEnabled(Map<String, Object> params); + + List<SysDictionaries> findAll(Map<String, Object> params); } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java index ec3e4b7..988ccbb 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java @@ -1,9 +1,13 @@ package com.kidgrow.usercenter.service; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.usercenter.model.SysDoctor; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.service.ISuperService; +import com.kidgrow.usercenter.vo.SysDoctorDto; +import com.kidgrow.usercenter.vo.SysDoctorVo; +import javax.servlet.http.HttpServletRequest; import java.util.Map; /** @@ -20,7 +24,7 @@ * @param params * @return */ - PageResult<SysDoctor> findList(Map<String, Object> params); + PageResult<SysDoctorVo> findList(Map<String, Object> params); /** @@ -29,5 +33,11 @@ * @return SysDoctor对象 */ SysDoctor findByObject(SysDoctor sysDoctor); + + boolean delete(Long id); + + ResultBody enable(Map<String, Object> params); + + boolean saveOrUpdateSer(SysDoctorDto sysDoctor, HttpServletRequest request); } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java index 42b2137..2c44889 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java @@ -1,5 +1,6 @@ package com.kidgrow.usercenter.service; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.usercenter.model.SysHospital; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.service.ISuperService; @@ -29,5 +30,7 @@ * @return SysHospital对象 */ SysHospital findByObject(SysHospital sysHospital); + + ResultBody<SysHospital> findAll(Map<String, Object> params); } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java index 8792cdd..28c445c 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java @@ -3,7 +3,9 @@ import com.kidgrow.common.model.*; import com.kidgrow.common.service.ISuperService; import com.kidgrow.usercenter.model.SysUserExcel; +import org.springframework.web.bind.annotation.RequestBody; +import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; import java.util.Set; @@ -107,4 +109,6 @@ boolean delUser(Long id); ResultBody findAll(Map<String, Object> map); + + ResultBody getThisUserOrganizationUser(HttpServletRequest request); } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java index 99e8614..e7b5972 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java @@ -1,7 +1,7 @@ package com.kidgrow.usercenter.service.impl; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.service.impl.SuperServiceImpl; import com.kidgrow.usercenter.mapper.SysAreaMapper; import com.kidgrow.usercenter.model.SysArea; @@ -31,9 +31,8 @@ */ @Override public PageResult<SysArea> findList(Map<String, Object> params){ - Page<SysArea> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); - List<SysArea> list = baseMapper.findList(page, params); - return PageResult.<SysArea>builder().data(list).code(0).count(page.getTotal()).build(); + List<SysArea> list = baseMapper.findList(params); + return PageResult.<SysArea>builder().data(list).code(0).count((long) list.size()).build(); } /** @@ -45,4 +44,23 @@ public SysArea findByObject(SysArea sysArea){ return baseMapper.findByObject(sysArea); } + /** + * 根据id和启用禁用值更新数据 + * @param params + * @return ResultBody + */ + @Override + public ResultBody updateEnabled(Map<String, Object> params) { + Long id = MapUtils.getLong(params, "id"); + Boolean enabled = MapUtils.getBoolean(params, "enabled"); + + SysArea area = baseMapper.selectById(id); + if (area == null) { + return ResultBody.failed("该数据不存在!"); + } + area.setEnabled(enabled); + + int i = baseMapper.updateById(area); + return i > 0 ? ResultBody.ok().data(area).msg("更新成功") : ResultBody.failed("更新失败"); + } } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java index 7095637..f0c9c3b 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java @@ -1,12 +1,24 @@ package com.kidgrow.usercenter.service.impl; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.kidgrow.common.model.ResultBody; +import com.kidgrow.common.model.SysOrganization; +import com.kidgrow.usercenter.model.SysHospital; +import com.kidgrow.usercenter.service.ISysHospitalService; +import com.kidgrow.usercenter.service.ISysOrganizationService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.kidgrow.common.model.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.service.impl.SuperServiceImpl; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; + import org.apache.commons.collections4.MapUtils; import lombok.extern.slf4j.Slf4j; @@ -25,6 +37,11 @@ @Slf4j @Service public class SysDepartmentServiceImpl extends SuperServiceImpl<SysDepartmentMapper, SysDepartment> implements ISysDepartmentService { + + @Autowired + private ISysOrganizationService iSysOrganizationService; + @Autowired + private ISysHospitalService iSysHospitalService; /** * 列表 * @param params @@ -46,4 +63,29 @@ public SysDepartment findByObject(SysDepartment sysDepartment){ return baseMapper.findByObject(sysDepartment); } + + @Override + public ResultBody findAll(Map<String, Object> params) { + return ResultBody.ok().data(baseMapper.selectByMap(params)); + } + + @Override + public ResultBody findListByHospitalId(Map<String, Object> params) { + //查询组织 + Long id = MapUtils.getLong(params, "id"); + List<SysDepartment> sysDepartments=new ArrayList<>(); + SysHospital byId = iSysHospitalService.getById(id); + if(byId!=null){ + params=new HashMap<>(); + params.put("org_parent_id",byId.getOrgId()); + List<SysOrganization> sysOrganizations = iSysOrganizationService.listByMap(params); + if (sysOrganizations.size()>0) { + List<Long> collect = sysOrganizations.stream().map(e -> e.getId()).collect(Collectors.toList()); + QueryWrapper<SysDepartment> queryWrapper=new QueryWrapper(); + queryWrapper.in("org_id",collect ); + sysDepartments= baseMapper.selectList(queryWrapper); + } + } + return ResultBody.ok().data(sysDepartments); + } } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDictionariesServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDictionariesServiceImpl.java index 7b5ad28..f53f2a7 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDictionariesServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDictionariesServiceImpl.java @@ -1,10 +1,18 @@ package com.kidgrow.usercenter.service.impl; +import com.baomidou.mybatisplus.core.conditions.AbstractWrapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.kidgrow.common.model.ResultBody; +import com.kidgrow.usercenter.vo.SysDictionariesVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.cglib.beans.BeanCopier; import org.springframework.stereotype.Service; import com.kidgrow.common.model.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.service.impl.SuperServiceImpl; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.collections4.MapUtils; @@ -31,10 +39,24 @@ * @return */ @Override - public PageResult<SysDictionaries> findList(Map<String, Object> params){ + public PageResult findList(Map<String, Object> params){ Page<SysDictionaries> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); List<SysDictionaries> list = baseMapper.findList(page, params); - return PageResult.<SysDictionaries>builder().data(list).code(0).count(page.getTotal()).build(); + List<SysDictionariesVo> listvo = new ArrayList<>(); + for (SysDictionaries dictionaries:list + ) { + SysDictionariesVo sysDictionariesVo=new SysDictionariesVo(); + BeanCopier beanCopier = BeanCopier.create(SysDictionaries.class, SysDictionariesVo.class, false); + beanCopier.copy(dictionaries,sysDictionariesVo,null); + if(StringUtils.isNotBlank(dictionaries.getDictionariesClassId())){ + SysDictionaries dic = baseMapper.selectById(dictionaries.getDictionariesClassId()); + if(dic!=null){ + sysDictionariesVo.setDictionariesClassName(dic.getDictionariesName()); + } + } + listvo.add(sysDictionariesVo); + } + return PageResult.<SysDictionariesVo>builder().data(listvo).code(0).count(page.getTotal()).build(); } /** @@ -46,4 +68,25 @@ public SysDictionaries findByObject(SysDictionaries sysDictionaries){ return baseMapper.findByObject(sysDictionaries); } + + @Override + public ResultBody updateEnabled(Map<String, Object> params) { + Long id = MapUtils.getLong(params, "id"); + SysDictionaries dictionaries = baseMapper.selectById(id); + if(dictionaries!=null){ + Integer enabled = MapUtils.getInteger( params,"enabled"); + dictionaries.setEnabled(enabled); + dictionaries.setUpdateTime(new Date()); + int i = baseMapper.updateById(dictionaries); + return ResultBody.ok(0,"更新成功"); + }else { + return ResultBody.failed("更新成功"); + } + + } + + @Override + public List<SysDictionaries> findAll(Map<String, Object> params) { + return baseMapper.findAll(params); + } } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java index 8566373..4fcd9b5 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java @@ -1,49 +1,156 @@ package com.kidgrow.usercenter.service.impl; +import com.kidgrow.common.constant.SecurityConstants; +import com.kidgrow.common.model.ResultBody; +import com.kidgrow.common.model.SysUser; +import com.kidgrow.usercenter.service.ISysUserService; +import com.kidgrow.usercenter.vo.SysDoctorDto; +import com.kidgrow.usercenter.vo.SysDoctorVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cglib.beans.BeanCopier; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import com.kidgrow.common.model.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.service.impl.SuperServiceImpl; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; + import org.apache.commons.collections4.MapUtils; import lombok.extern.slf4j.Slf4j; import com.kidgrow.usercenter.model.SysDoctor; import com.kidgrow.usercenter.mapper.SysDoctorMapper; import com.kidgrow.usercenter.service.ISysDoctorService; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * + * @version 1.0 * @Description: <br> * @Project: 用户中心<br> * @CreateDate: Created in 2020-04-02 14:02:50 <br> * @Author: <a href="4345453@kidgrow.com">liuke</a> - * @version 1.0 */ @Slf4j @Service public class SysDoctorServiceImpl extends SuperServiceImpl<SysDoctorMapper, SysDoctor> implements ISysDoctorService { /** * 列表 + * * @param params * @return */ + @Autowired + private ISysUserService iSysUserService; + @Autowired + private PasswordEncoder passwordEncoder; + @Override - public PageResult<SysDoctor> findList(Map<String, Object> params){ + public PageResult<SysDoctorVo> findList(Map<String, Object> params) { Page<SysDoctor> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); - List<SysDoctor> list = baseMapper.findList(page, params); - return PageResult.<SysDoctor>builder().data(list).code(0).count(page.getTotal()).build(); + List<SysDoctor> list = baseMapper.findList(page, params); + List<SysDoctorVo> listvo = new ArrayList<>(); + list.forEach(e -> { + SysDoctorVo vo = new SysDoctorVo(); + BeanCopier beanCopier = BeanCopier.create(SysDoctor.class, SysDoctorVo.class, false); + beanCopier.copy(e, vo, null); + //查询用户的登录账号; + if (e.getUserId() != null) { + SysUser sysUser = iSysUserService.getById(e.getUserId()); + if (sysUser != null) { + vo.setUsername(sysUser.getUsername()); + } + } + listvo.add(vo); + }); + return PageResult.<SysDoctorVo>builder().data(listvo).code(0).count(page.getTotal()).build(); } /** - * 根据SysDoctor对象当做查询条件进行查询 - * @param sysDoctor - * @return SysDoctor - */ + * 根据SysDoctor对象当做查询条件进行查询 + * + * @param sysDoctor + * @return SysDoctor + */ @Override - public SysDoctor findByObject(SysDoctor sysDoctor){ + public SysDoctor findByObject(SysDoctor sysDoctor) { return baseMapper.findByObject(sysDoctor); } + + @Override + public boolean delete(Long id) { + //查询user表 + SysDoctor sysDoctor = baseMapper.selectById(id); + if (sysDoctor != null && sysDoctor.getUserId() != null) { + boolean b = iSysUserService.delUser(sysDoctor.getUserId()); + } + sysDoctor.setIsDel(true); + int i = baseMapper.deleteById(id); + return true; + } + + @Override + public ResultBody enable(Map<String, Object> params) { + Long aLong = MapUtils.getLong(params,"id"); + SysDoctor sysDoctor = baseMapper.selectById(aLong); + if (sysDoctor != null && sysDoctor.getUserId() != null) { + SysUser byId = iSysUserService.getById(sysDoctor.getUserId()); + if(byId!=null){ + byId.setEnabled(true); + iSysUserService.updateById(byId); + } + } + if(sysDoctor!=null){ + sysDoctor.setEnabled(true); + baseMapper.updateById(sysDoctor); + }else { + return ResultBody.failed("禁用失败"); + } + return ResultBody.ok(0,"禁用成功"); + } + + @Override + @Transactional + public boolean saveOrUpdateSer(SysDoctorDto sysDoctor, HttpServletRequest request) { + String id = request.getHeader(SecurityConstants.USER_ID_HEADER); + if(null==sysDoctor){ + return false; + }else { + if (sysDoctor.getId()==null) { + //保存 + SysUser sysUser=new SysUser(); + sysUser.setUsername(sysDoctor.getUsername()); + sysUser.setPassword(passwordEncoder.encode(sysDoctor.getPassword())); + sysUser.setNickname(sysDoctor.getHospitalName()); + sysUser.setHeadImgUrl(sysDoctor.getDoctorLogo()); + sysUser.setMobile(sysDoctor.getDoctorTel()); + sysUser.setType("doctor"); + sysUser.setTenantId("hospital"); + sysUser.setCreateTime(new Date()); + SysUser byId = iSysUserService.getById(id); + if(byId!=null){ + sysUser.setCreateUserId(byId.getId()); + sysUser.setCreateUserName(byId.getUsername()); + } + iSysUserService.save(sysUser); + //保存doctor的数据 + SysDoctor sysDoc=new SysDoctor(); + BeanCopier beanCopier = BeanCopier.create(SysDoctorDto.class, SysDoctor.class, false); + beanCopier.copy(sysDoctor,sysDoc,null); + sysDoc.setUserId(sysUser.getId()); + baseMapper.insert(sysDoc); + }else { + //更新 + baseMapper.updateById(sysDoctor); + } + } + return true; + } } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java index 949389f..accdf78 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java @@ -1,5 +1,6 @@ package com.kidgrow.usercenter.service.impl; +import com.kidgrow.common.model.ResultBody; import org.springframework.stereotype.Service; import com.kidgrow.common.model.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -46,4 +47,10 @@ public SysHospital findByObject(SysHospital sysHospital){ return baseMapper.findByObject(sysHospital); } + + @Override + public ResultBody<SysHospital> findAll(Map<String, Object> params) { + List<SysHospital> sysHospitals = baseMapper.selectByMap(params); + return ResultBody.ok().data(sysHospitals).msg("查询成功"); + } } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java index bcb4b7c..94f1dad 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.constant.CommonConstant; +import com.kidgrow.common.constant.SecurityConstants; import com.kidgrow.common.context.ClientContextHolder; import com.kidgrow.common.lock.DistributedLock; import com.kidgrow.common.model.*; @@ -14,11 +15,13 @@ import com.kidgrow.usercenter.model.SysUserExcel; import com.kidgrow.usercenter.service.ISysOrganizationService; import com.kidgrow.usercenter.service.ISysRoleUserService; +import com.kidgrow.usercenter.service.ISysUserOrgService; import com.kidgrow.usercenter.service.ISysUserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.hibernate.validator.constraints.NotBlank; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.password.PasswordEncoder; @@ -27,6 +30,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; @@ -54,6 +58,8 @@ @Autowired private ISysOrganizationService organizationService; + @Autowired + private ISysUserOrgService iSysUserOrgService; @@ -285,4 +291,35 @@ List<SysUser> sysUsers = baseMapper.selectByMap(map); return ResultBody.ok().data(sysUsers).msg("操作成功"); } + + /** + * 获取当前用的 组织下的所有人员 + * @param request + * @return + */ + @Override + public ResultBody getThisUserOrganizationUser(HttpServletRequest request) { + String id = request.getHeader(SecurityConstants.USER_ID_HEADER); + List<SysUser> sysUsers=new ArrayList<>(); + if(StringUtils.isNotBlank(id)){ + QueryWrapper<SysUserOrg> queryWrapper=new QueryWrapper(); + queryWrapper.eq("user_id",id); + List<SysUserOrg> list = iSysUserOrgService.list(queryWrapper); + if(list.size()>0){ + List<Long> collect = list.stream().map(e -> e.getOrgId()).collect(Collectors.toList()); + if (collect.size()>0) { + queryWrapper=new QueryWrapper<>(); + queryWrapper.in("org_id",collect); + List<SysUserOrg> sysUserOrgs = iSysUserOrgService.list(queryWrapper); + List<Long> userIds = sysUserOrgs.stream().map(e -> e.getUserId()).collect(Collectors.toList()); + QueryWrapper<SysUser> sysUserQueryWrapper=new QueryWrapper(); + sysUserQueryWrapper.in("id",userIds); + sysUsers= baseMapper.selectList(sysUserQueryWrapper); + } + } + }else { + return ResultBody.failed("暂无数据"); + } + return ResultBody.ok().data(sysUsers); + } } \ No newline at end of file diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysAreaMapper.xml b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysAreaMapper.xml index 2adbfca..b9271bd 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysAreaMapper.xml +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysAreaMapper.xml @@ -42,6 +42,9 @@ <if test="p.areaCh != null and p.areaCh !=''"> and area_ch = #{p.areaCh} </if> + <if test="p.enabled != null and p.enabled !=''"> + and enabled = #{p.enabled} + </if> </where> </sql> @@ -61,6 +64,6 @@ <include refid="Column_List"/> from sys_area <include refid="where"/> - order by id desc + order by id </select> </mapper> \ No newline at end of file diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDictionariesMapper.xml b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDictionariesMapper.xml index f9c5492..b8f51c3 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDictionariesMapper.xml +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDictionariesMapper.xml @@ -16,10 +16,13 @@ and id = #{p.id} </if> <if test="p.dictionariesName != null and p.dictionariesName !=''"> - and dictionaries_name = #{p.dictionariesName} + and dictionaries_name like '%${p.dictionariesName}%' </if> <if test="p.dictionariesClassId != null and p.dictionariesClassId !=''"> and dictionaries_class_id = #{p.dictionariesClassId} + </if> + <if test="p.dictionariesClassIdIsNull != null and p.dictionariesClassIdIsNull !=''"> + and dictionaries_class_id is null </if> <if test="p.dictionariesOrder != null and p.dictionariesOrder !=''"> and dictionaries_order = #{p.dictionariesOrder} @@ -67,6 +70,13 @@ <include refid="Column_List"/> from sys_dictionaries <include refid="where"/> - order by id desc + order by id asc + </select> + <select id="findAll" resultType="com.kidgrow.usercenter.model.SysDictionaries"> + select + <include refid="Column_List"/> + from sys_dictionaries + <include refid="where"/> + order by id asc </select> </mapper> \ No newline at end of file diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml index 04087be..e9af41f 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml @@ -31,13 +31,13 @@ and department_name = #{p.departmentName} </if> <if test="p.doctorName != null and p.doctorName !=''"> - and doctor_name = #{p.doctorName} + and doctor_name like '%${p.doctorName}%' </if> <if test="p.doctorLogo != null and p.doctorLogo !=''"> and doctor_logo = #{p.doctorLogo} </if> <if test="p.doctorTel != null and p.doctorTel !=''"> - and doctor_tel = #{p.doctorTel} + and doctor_tel like '%${p.doctorTel}%' </if> <if test="p.doctorRankId != null and p.doctorRankId !=''"> and doctor_rank_id = #{p.doctorRankId} diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysAreaController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysAreaController.java index ad22d4d..7a5e36c 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysAreaController.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysAreaController.java @@ -41,17 +41,9 @@ * 列表 */ @ApiOperation(value = "查询列表") - @ApiImplicitParams({ - @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), - @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") - }) - @GetMapping - public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) { - if(params.size()==0){ - params.put("page",1); - params.put("limit",10); - } - return ResultBody.ok().data(sysAreaService.findList(params)); + @GetMapping("/findAlls") + public PageResult<SysArea> findAlls(@RequestParam Map<String, Object> params) { + return sysAreaService.findList(params); } /** @@ -87,6 +79,18 @@ } return ResultBody.failed().msg(errMsg.toString()); } else { + //如果父级id是空的,默认填-1 + if (sysArea.getAreaParentId()==null) { + sysArea.setAreaParentId(-1L); + } + //添加的时候得判断主键唯一 + if (sysArea.getIsDel()==null) { + SysArea model =sysAreaService.getById(sysArea.getId()); + if (model!=null) + { + return ResultBody.failed().msg("区域编号已存在!"); + } + } boolean v= sysAreaService.saveOrUpdate(sysArea); if(v) { return ResultBody.ok().data(sysArea).msg("保存成功"); @@ -111,4 +115,23 @@ return ResultBody.failed().msg("删除失败"); } } + /** + * 修改状态 + * + * @param params + * @return + */ + @ApiOperation(value = "修改反馈数据状态") + @GetMapping("/updateEnabled") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Boolean") + }) + public ResultBody updateEnabled(@RequestParam Map<String, Object> params) { + if (params.size()==0) + { + return ResultBody.failed().msg("参数异常!"); + } + return sysAreaService.updateEnabled(params); + } } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java index 4f68ff7..157e44f 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java @@ -115,4 +115,14 @@ return ResultBody.failed().msg("删除失败"); } } + + /** + * 根据医院获取 组织,通过组织,获取科室; + * @param params + * @return + */ + @GetMapping("findListByHospitalId") + public ResultBody findListByHospitalId(@RequestParam Map<String, Object> params) { + return sysDepartmentService.findListByHospitalId(params); + } } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDictionariesController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDictionariesController.java index 47b328b..4fc3002 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDictionariesController.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDictionariesController.java @@ -2,6 +2,7 @@ import java.util.Map; import com.kidgrow.common.controller.BaseController; +import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; @@ -50,12 +51,12 @@ @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping - public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) { + public PageResult list(@RequestParam Map<String, Object> params) { if(params.size()==0){ params.put("page",1); params.put("limit",10); } - return ResultBody.ok().data(sysDictionariesService.findList(params)); + return sysDictionariesService.findList(params); } /** @@ -65,6 +66,12 @@ @GetMapping("/{id}") public ResultBody findById(@PathVariable Long id) { SysDictionaries model = sysDictionariesService.getById(id); + return ResultBody.ok().data(model).msg("查询成功"); + } + @ApiOperation(value = "根据SysDictionaries当做查询条件进行查询") + @PostMapping("/findAll") + public ResultBody findAll(@RequestBody Map<String, Object> params) { + List<SysDictionaries> model = sysDictionariesService.findAll(params); return ResultBody.ok().data(model).msg("查询成功"); } @@ -102,6 +109,25 @@ } /** + * 修改字典表状态 + * + * @param params + * @return + */ + @ApiOperation(value = "修改字典表状态") + @GetMapping("/updateEnabled") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "用户id", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Integer") + }) + public ResultBody updateEnabled(@RequestParam Map<String, Object> params) { + Long id = MapUtils.getLong(params, "id"); + if (id==null) { + return ResultBody.failed("请选择一条数据"); + } + return sysDictionariesService.updateEnabled(params); + } + /** * 删除 */ @ApiOperation(value = "删除") diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java index 51be1e4..0a589ab 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java @@ -2,6 +2,9 @@ import java.util.Map; import com.kidgrow.common.controller.BaseController; +import com.kidgrow.usercenter.vo.SysDoctorVo; +import com.kidgrow.usercenter.vo.SysDoctorDto; +import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; @@ -16,13 +19,11 @@ import com.kidgrow.common.model.*; import org.springframework.validation.BindingResult; + +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.Set; /** @@ -50,12 +51,12 @@ @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping - public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) { + public PageResult<SysDoctorVo> list(@RequestParam Map<String, Object> params) { if(params.size()==0){ params.put("page",1); params.put("limit",10); } - return ResultBody.ok().data(sysDoctorService.findList(params)); + return sysDoctorService.findList(params); } /** @@ -83,7 +84,7 @@ */ @ApiOperation(value = "保存") @PostMapping - public ResultBody save(@Valid @RequestBody SysDoctor sysDoctor, BindingResult bindingResult) { + public ResultBody save(@Valid @RequestBody SysDoctorDto sysDoctor, BindingResult bindingResult, HttpServletRequest request) { List<String> errMsg= new ArrayList<>(); if (bindingResult.hasErrors()) { for (ObjectError error : bindingResult.getAllErrors()) { @@ -91,7 +92,8 @@ } return ResultBody.failed().msg(errMsg.toString()); } else { - boolean v= sysDoctorService.saveOrUpdate(sysDoctor); + boolean v= sysDoctorService.saveOrUpdateSer(sysDoctor,request); + if(v) { return ResultBody.ok().data(sysDoctor).msg("保存成功"); } @@ -107,7 +109,7 @@ @ApiOperation(value = "删除") @DeleteMapping("/{id}") public ResultBody delete(@PathVariable Long id) { - boolean v= sysDoctorService.removeById(id); + boolean v= sysDoctorService.delete(id); if(v) { return ResultBody.ok().msg("删除成功"); } @@ -115,4 +117,17 @@ return ResultBody.failed().msg("删除失败"); } } + /** + * 状态 + */ + @ApiOperation(value = "修改状态") + @PostMapping("enable") + public ResultBody enable(@RequestBody Map<String, Object> params) { + Long id = MapUtils.getLong(params, "id"); + if (id==null) { + return ResultBody.failed("请选择一条数据"); + } + return sysDoctorService.enable(params); + } + } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java index e673471..7b1e22b 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java @@ -50,14 +50,18 @@ @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping - public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) { + public PageResult<SysHospital> list(@RequestParam Map<String, Object> params) { if(params.size()==0){ params.put("page",1); params.put("limit",10); } - return ResultBody.ok().data(sysHospitalService.findList(params)); + return sysHospitalService.findList(params); } - + @PostMapping("findAll") + @ApiOperation(value = "查询所有列表") + public ResultBody<SysHospital> findAll(@RequestBody Map<String, Object> params) { + return sysHospitalService.findAll(params); + } /** * 查询 */ diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java index 7e38efd..0bd18d0 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java @@ -336,4 +336,11 @@ public ResultBody findAll(@RequestParam Map<String,Object> map) { return appUserService.findAll(map); } + /** + * 获取当前用的 组织下的所有人员 + */ + @GetMapping("users/getThisUserOrganizationUser") + public ResultBody getThisUserOrganizationUser(HttpServletRequest request){ + return appUserService.getThisUserOrganizationUser(request); + } } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/resources/application.yml b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/resources/application.yml index 2837660..185051f 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/resources/application.yml +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/resources/application.yml @@ -65,6 +65,11 @@ - sys_user_logs - sys_organization - sys_user_org + - sys_dictionaries + - sys_hospital + - sys_doctor + - sys_department + - sys_area ignoreSqls: - com.kidgrow.usercenter.mapper.SysRoleMapper.findAll diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/SecurityConstants.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/SecurityConstants.java index 18e47d2..f1b26c1 100644 --- a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/SecurityConstants.java +++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/SecurityConstants.java @@ -43,7 +43,10 @@ * 用户所属部门名称 */ String USER_DEP_NAME_HEADER="x-user-dep-name-header"; - + /** + * 用户真实名信息头 + */ + String USER_REAL_NAME = "x-user-real-name-header"; /** * 角色信息头 */ diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js index 8d1b993..9042ad8 100644 --- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js @@ -4,11 +4,32 @@ }).extend({ formSelects: 'formSelects/formSelects-v4', treetable: 'treetable-lay/treetable', + treetable2: 'treetable2/TreeTable', step: 'step-lay/step' -}).use(['layer'], function () { +}).use(['layer','config', 'index', 'element'], function () { var $ = layui.jquery; var layer = layui.layer; + let config = layui.config; + let index = layui.index; + let element = layui.element; + // 检查是否登录 + if (!config.getToken() || config.getToken() == '') { + location.replace('login.html'); + return; + } + + // 检查多标签功能是否开启 + index.checkPageTabs(); + + // 获取当前用户信息 + index.getUser(function (user) { + $('.layui-layout-admin .layui-header').vm(user); + index.initLeftNav(); + element.render('nav'); + index.initRouter(); + index.bindEvent(); + }); // 加载设置的主题 var theme = layui.data('easyweb').theme; if (theme) { @@ -236,4 +257,4 @@ } return true; } -}; \ No newline at end of file +}; diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/index.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/index.html index 567d597..28c158c 100644 --- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/index.html +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/index.html @@ -1,6 +1,5 @@ <!DOCTYPE html> <html> - <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta charset="utf-8"/> @@ -60,37 +59,5 @@ <script type="text/javascript" src="assets/libs/layui/layui.js"></script> <script type="text/javascript" src="assets/js/common.js?v=1.0"></script> <script type="text/javascript" src="assets/libs/zTree/js/jquery.ztree.all-3.5.min.js"></script> - -<script> - layui.config({ - base: 'module/' - }).extend({ - formSelects: 'formSelects/formSelects-v4', - treetable: 'treetable-lay/treetable' - }).use(['config', 'index', 'element'], function () { - let config = layui.config; - let index = layui.index; - let element = layui.element; - - // 检查是否登录 - if (!config.getToken() || config.getToken() == '') { - location.replace('login.html'); - return; - } - - // 检查多标签功能是否开启 - index.checkPageTabs(); - - // 获取当前用户信息 - index.getUser(function (user) { - $('.layui-layout-admin .layui-header').vm(user); - index.initLeftNav(); - element.render('nav'); - index.initRouter(); - index.bindEvent(); - }); - }); -</script> </body> - </html> \ No newline at end of file diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/treetable2/treeTable.css b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/treetable2/treeTable.css new file mode 100644 index 0000000..147dc2f --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/treetable2/treeTable.css @@ -0,0 +1,396 @@ +/* 最外层容器 */ +.ew-tree-table { + margin: 10px 0; + position: relative; +} + +.ew-tree-table .layui-table { + margin: 0; + table-layout: fixed; +} + +/* 表格容器 */ +.ew-tree-table-group { + position: relative; +} + +/* 主体表格容器 */ +.ew-tree-table > .ew-tree-table-group > .ew-tree-table-box { + overflow: auto; + position: relative; + box-sizing: border-box; +} + +/* 表头表格容器 */ +.ew-tree-table > .ew-tree-table-group > .ew-tree-table-head { + overflow: hidden; + position: relative; + box-sizing: border-box; + background-color: #f2f2f2; +} + +/* 容器加边框 */ +.ew-tree-table .ew-tree-table-border { + position: absolute; + background-color: #e6e6e6; +} + +.ew-tree-table .ew-tree-table-border.top { + left: 0; + right: 0; + top: 0; + height: 1px; +} + +.ew-tree-table .ew-tree-table-border.left { + top: 0; + left: 0; + bottom: 0; + width: 1px; +} + +.ew-tree-table .ew-tree-table-border.right { + top: 0; + right: 0; + bottom: 0; + width: 0.52px; +} + +.ew-tree-table .ew-tree-table-border.bottom { + left: 0; + right: 0; + bottom: 0; + height: 0.52px; +} + +/* table的loading */ +.ew-tree-table .ew-tree-table-box > .ew-tree-table-loading { + padding: 10px 0; + text-align: center; +} + +.ew-tree-table .ew-tree-table-box > .ew-tree-table-loading > i { + color: #999; + font-size: 30px; +} + +.ew-tree-table .ew-tree-table-box > .ew-tree-table-loading.ew-loading-float { + position: absolute; + left: 0; + right: 0; + top: 0; +} + +/* 空数据提示 */ +.ew-tree-table .ew-tree-table-box > .ew-tree-table-empty { + color: #666; + font-size: 14px; + text-align: center; +} + +/* 折叠箭头 */ +.ew-tree-table .ew-tree-table-arrow { + margin-right: 5px; + vertical-align: middle; +} + +.ew-tree-table .ew-tree-table-arrow:before { + content: "\e623"; +} + +.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow:before { + content: "\e625"; +} + +.ew-tree-table .ew-tree-table-arrow.arrow2 { + font-size: 13px; + font-weight: 600; + line-height: 16px; + height: 16px; + width: 16px; + display: inline-block; + text-align: center; + color: #888; +} + +.ew-tree-table .ew-tree-table-arrow.arrow2:before { + content: "\e602"; +} + +.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow.arrow2:before { + content: "\e61a"; +} + +/* 箭头隐藏 */ +.ew-tree-table-arrow.ew-tree-table-arrow-hide { + visibility: hidden; +} + +/* 箭头变加载中状态 */ +.ew-tree-table .ew-tree-table-loading > td .ew-tree-pack > .ew-tree-table-arrow:before { + content: "\e63d" !important; +} + +.ew-tree-table .ew-tree-table-loading > td .ew-tree-pack > .ew-tree-table-arrow { + margin-right: 0; +} + +.ew-tree-table .ew-tree-table-loading > td .ew-tree-pack > .ew-tree-table-arrow + * { + margin-left: 5px; +} + +/* tr加载中禁用事件 */ +.ew-tree-table tr.ew-tree-table-loading > * { + pointer-events: none !important; +} + +/* 图标列 */ +.ew-tree-table .ew-tree-pack { + cursor: pointer; + line-height: 16px; + display: inline-block; + vertical-align: middle; +} + +.ew-tree-table .ew-tree-pack > span { + height: 16px; + line-height: 16px; + display: inline-block; + vertical-align: middle; +} + +/* 折叠行 */ +.ew-tree-table .ew-tree-tb-hide { + display: none; +} + +/* 缩进 */ +.ew-tree-table .ew-tree-table-indent { + margin-right: 5px; + padding-left: 16px; +} + +/* 图标 */ +.ew-tree-table .ew-tree-icon { + margin-right: 5px; + display: inline-block; + vertical-align: middle; +} + +.ew-tree-table .ew-tree-icon-folder, .ew-tree-table .ew-tree-icon-file { + width: 22px; + height: 16px; + line-height: 16px; + position: relative; +} + +.ew-tree-table .ew-tree-icon-folder:after, .ew-tree-table .ew-tree-icon-file:after { + content: ""; + width: 22px; + height: 22px; + position: absolute; + left: 0; + top: -3px; + background-size: cover; + background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTc0MDYyMzE3MTQ3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIxNTgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTE4MSA4MjNoLTMxLjFjLTI4LjYgMC01MS45LTIzLjItNTEuOS01MS45VjI1Mi40YzAtMjguNiAyMy4yLTUxLjkgNTEuOS01MS45SDQzMGw4MyA3Ny44aDMzMmM0NS42IDAgODMgMzUgODMgNzcuOHYzODkuMWMwIDQyLjgtMzcuMyA3Ny44LTgzIDc3LjhIMTgxeiIgcC1pZD0iMjE1OSIgZmlsbD0iI0ZGQTUwMCI+PC9wYXRoPjwvc3ZnPg==") +} + +.ew-tree-table tr.ew-tree-table-open > td > .ew-tree-pack .ew-tree-icon-folder:after { + background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTc0MDYyMzA5MDQwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE5NzciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTMyNi40IDQ2MC4xSDkyOGwtODIuMyAzMjRjLTUuOCAyMy0yNi42IDM5LjEtNTAuMyAzOS4xSDE0OS45Yy0yOC42IDAtNTEuOS0yMy4yLTUxLjktNTEuOVYyNTIuNmMwLTI4LjYgMjMuMi01MS45IDUxLjktNTEuOUg0MTNsMTA1IDEwMy43aDI5MS44YzE0LjMgMCAyNS45IDExLjYgMjUuOSAyNS45djc3LjhoLTUyN0wyMDMuNCA1NjMuOWg1Mi43bDcwLjMtMTAzLjh6IiBwLWlkPSIxOTc4IiBmaWxsPSIjRkZBNTAwIj48L3BhdGg+PC9zdmc+") +} + +.ew-tree-table .ew-tree-icon-file:after { + background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTc0MDYyNTE1MDUxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEzNTE4IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij48ZGVmcz48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwvc3R5bGU+PC9kZWZzPjxwYXRoIGQ9Ik03NDEuMyAxNjEuNmgtNDIuNGMtMTAuNSAwLTE5LjEgOC42LTE5LjEgMTkuMXM4LjYgMTkuMSAxOS4xIDE5LjFoNDIuNGM0MiAwIDc2LjIgMzQuMiA3Ni4yIDc2LjN2NDc3LjRjMCA0Mi4xLTM0LjMgNzYuMy03Ni40IDc2LjNIMjgyLjljLTQyLjEgMC03Ni4zLTM0LjItNzYuMy03Ni4zVjI3Ni4xYzAtNDIuMSAzNC4yLTc2LjMgNzYuMy03Ni4zaDQ0LjljMTAuNSAwIDE5LjEtOC42IDE5LjEtMTkuMXMtOC42LTE5LjEtMTkuMS0xOS4xaC00NC45Yy02My4xIDAtMTE0LjUgNTEuNC0xMTQuNSAxMTQuNXY0NzcuNGMwIDYzLjEgNTEuNCAxMTQuNSAxMTQuNSAxMTQuNWg0NTguM2M2My4xIDAgMTE0LjUtNTEuNCAxMTQuNS0xMTQuNVYyNzYuMWMtMC4xLTYzLjEtNTEuNC0xMTQuNS0xMTQuNC0xMTQuNXoiIHAtaWQ9IjEzNTE5IiBmaWxsPSIjRkZBNTAwIj48L3BhdGg+PHBhdGggZD0iTTY4MC42IDUwNS4zSDM0My40Yy0xMi4zIDAtMjIuMyA4LjYtMjIuMyAxOS4xczEwIDE5LjEgMjIuMyAxOS4xaDMzNy4yYzEyLjMgMCAyMi4zLTguNiAyMi4zLTE5LjEgMC0xMC42LTEwLTE5LjEtMjIuMy0xOS4xek00MzkuMyAyMTMuM2gxNDQuNmMxOSAwIDM0LjQtMTIuOCAzNC40LTI4LjZzLTE1LjQtMjguNi0zNC40LTI4LjZINDM5LjNjLTE5IDAtMzQuNCAxMi44LTM0LjQgMjguNi0wLjEgMTUuNyAxNS4zIDI4LjYgMzQuNCAyOC42ek02ODAuNiA2NThIMzQzLjRjLTEyLjMgMC0yMi4zIDguNS0yMi4zIDE5LjEgMCAxMC41IDEwIDE5LjEgMjIuMyAxOS4xaDMzNy4yYzEyLjMgMCAyMi4zLTguNiAyMi4zLTE5LjEgMC0xMC42LTEwLTE5LjEtMjIuMy0xOS4xek02ODAuNiAzNTIuNUgzNDMuNGMtMTIuMyAwLTIyLjMgOC42LTIyLjMgMTkuMXMxMCAxOS4xIDIyLjMgMTkuMWgzMzcuMmMxMi4zIDAgMjIuMy04LjYgMjIuMy0xOS4xIDAtMTAuNS0xMC0xOS4xLTIyLjMtMTkuMXoiIHAtaWQ9IjEzNTIwIiBmaWxsPSIjRkZBNTAwIj48L3BhdGg+PC9zdmc+") +} + +/* 序号列调整 */ +.ew-tree-table td[data-type="numbers"] { + padding-left: 0; + padding-right: 0; + text-align: center; +} + +/* 单元格内表单元素样式调整 */ +.ew-tree-table .layui-form-switch { + margin-top: 0; +} + +.ew-tree-table .layui-form-radio { + margin: 0; +} + +/* checkbox和radio列调整 */ +.ew-tree-table-checkbox + .layui-form-checkbox { + padding: 0; +} + +.ew-tree-table-checkbox + .layui-form-checkbox > .layui-icon { + color: transparent; + transition: background-color .1s linear; +} + +.ew-tree-table-checkbox + .layui-form-checkbox.layui-form-checked > .layui-icon { + color: #fff; +} + +.ew-tree-table-radio + .layui-form-radio { + padding: 0; + height: 20px; + line-height: 20px; +} + +.ew-tree-table-radio + .layui-form-radio > i { + margin: 0; + height: 20px; + font-size: 20px; + line-height: 20px; +} + +/* checkbox半选状态 */ +.ew-tree-table .layui-form-checked.ew-form-indeterminate > .layui-icon:before { + content: ""; + width: 9px; + height: 2px; + display: inline-block; + background-color: #eee; + vertical-align: middle; +} + +.ew-tree-table .layui-form-checked.ew-form-indeterminate > .layui-icon { + line-height: 14px; +} + +/* 单元格编辑 */ +.ew-tree-table .layui-table td[data-edit] { + cursor: text; +} + +.ew-tree-table .ew-tree-table-edit { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + border-radius: 0; + box-shadow: 1px 1px 20px rgba(0, 0, 0, .15); +} + +.ew-tree-table .ew-tree-table-edit:focus { + border-color: #5FB878 !important; +} + +.ew-tree-table .ew-tree-table-edit.layui-form-danger { + border-color: #FF5722 !important; +} + +/* 搜索数据隐藏行 */ +.ew-tree-table tr.ew-tree-table-filter-hide { + display: none !important; +} + +/* 单元格超出隐藏 */ +.ew-tree-table-td-single { + position: relative; +} + +.ew-tree-table-td-single > .ew-tree-tips { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.ew-tree-table-td-single > .ew-tree-tips-c { + position: absolute; + right: -10px; + top: -6px; + width: 24px; + height: 24px; + line-height: 24px; + font-size: 18px; + text-align: center; + color: #fff; + border-radius: 50%; + background-color: #666; + cursor: pointer; + display: none; +} + +.ew-tree-table table tr:first-child .ew-tree-table-td-single > .ew-tree-tips-c { + top: 2px; + bottom: auto; + right: -12px; +} + +.ew-tree-table-td-single.ew-tree-tips-open { + position: absolute; + top: 0; + left: 0; + z-index: 5; + background-color: #fff; + min-height: 100%; + box-sizing: border-box; + box-shadow: 3px 3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table table thead .ew-tree-table-td-single.ew-tree-tips-open { + background-color: #f2f2f2; +} + +.ew-tree-table-td-single.ew-tree-tips-open.ew-show-left { + right: 0; + left: auto; + box-shadow: -3px 3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-td-single.ew-tree-tips-open.ew-show-bottom { + bottom: 0; + top: auto; + box-shadow: 3px -3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-td-single.ew-tree-tips-open.ew-show-left.ew-show-bottom { + box-shadow: -3px -3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-td-single.ew-tree-tips-open > .ew-tree-tips { + padding: 9px 15px; + overflow: auto; + max-width: 280px; + max-height: 100px; + width: max-content; + white-space: normal; +} + +.ew-tree-table-td-single.ew-tree-tips-open > .ew-tree-tips-c { + display: block; +} + +.ew-tree-table-td-single.ew-tree-tips-open.ew-show-left > .ew-tree-tips-c { + left: -10px; + right: auto !important; +} + +.ew-tree-table td > .layui-table-grid-down { + bottom: 0; + height: auto; +} + +/* 辅助样式 */ +.pd-tb-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.break-all { + word-break: break-all !important; +} + +/* 列宽拖拽调整 */ +/*.ew-tree-table .ew-tb-resize { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 10px; + cursor: col-resize; +}*/ diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/treetable2/treeTable.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/treetable2/treeTable.js new file mode 100644 index 0000000..8906848 --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/treetable2/treeTable.js @@ -0,0 +1,1494 @@ +/** + * 树形表格 2.x + * date:2019-11-08 License By http://easyweb.vip + */ +layui.define(['layer', 'laytpl', 'form'], function (exports) { + var $ = layui.jquery; + var layer = layui.layer; + var laytpl = layui.laytpl; + var form = layui.form; + var device = layui.device(); + var MOD_NAME = 'treeTable2'; // 绑定事件的模块名 + // 改为同步加载css,避免滚动条补丁首次进入无效 + $.ajax({ + url: layui.cache.base + 'treeTable2/treeTable.css', + async: false, + success: function (res) { + $('head').append('<style id="ew-tree-table-css">' + res + '</style>'); + } + }); + + /** TreeTable类构造方法 */ + var TreeTable = function (options) { + // 表格默认参数 + var defaultOption = { + elem: undefined, // table容器 + data: [], // 数据 + cols: [], // 列配置 + reqData: undefined, // 异步加载数据的方法 + width: undefined, // 容器宽度 + height: undefined, // 容器高度 + cellMinWidth: 100, // 单元格最小宽度 + skin: undefined, // 表格风格 + size: undefined, // 表格尺寸 + even: undefined, // 是否开启隔行变色 + style: undefined, // 容器样式 + getThead: function () { // 获取表头 + return getThead(this); + }, + getAllChooseBox: function () { // 获取全选按钮 + return getAllChooseBox(this); + }, + getColgroup: function () { // 获取colgroup + return getColgroup(this); + }, + getTbWidth: function () { // 计算table的宽度 + return getTbWidth(this); + }, + tree: {}, + text: {} + }; + // 默认tree参数 + var treeDefaultOption = { + idName: 'id', // id的字段名 + pidName: 'pid', // pid的字段名 + childName: 'children', // children的字段名 + haveChildName: 'haveChild', // 是否有children标识的字段名 + openName: 'open', // 是否默认展开的字段名 + isPidData: false, // 是否是pid形式的数据 + iconIndex: 0, // 图标列的索引 + arrowType: undefined, // 箭头类型 + onlyIconControl: false, // 仅允许点击图标折叠 + getIcon: function (d) { // 自定义图标 + return getIcon(d, this); + } + }; + // 默认提示文本 + var textDefaultOption = { + none: '<div style="padding: 18px 0;">暂无数据</div>' // 空文本提示文字 + }; + this.options = $.extend(defaultOption, options); + this.options.tree = $.extend(treeDefaultOption, options.tree); + this.options.text = $.extend(textDefaultOption, options.text); + for (var i = 0; i < options.cols.length; i++) { + // 列默认参数 + var colDefaultOption = { + field: undefined, // 字段名 + title: undefined, // 标题 + align: undefined, // 对齐方式 + templet: undefined, // 自定义模板 + toolbar: undefined, // 工具列 + width: undefined, // 宽度 + minWidth: undefined, // 最小宽度 + type: undefined, // 列类型 + style: undefined, // 单元格样式 + class: '', // 单元格class + singleLine: true, // 一行显示 + fixed: undefined, // 固定列 + unresize: false // 关闭拖拽列宽 + }; + this.options.cols[i] = $.extend(colDefaultOption, options.cols[i]); + } + this.init(); // 初始化表格 + this.bindEvents(); // 绑定事件 + }; + + /** 初始化表格 */ + TreeTable.prototype.init = function () { + var options = this.options; + var tbFilter = options.elem.substring(1); // 树表格的filter + var $elem = $(options.elem); // 原始表格 + + // 生成树表格dom + $elem.removeAttr('lay-filter'); + $elem.next('.ew-tree-table').remove(); + var viewHtml = '<div class="layui-form ew-tree-table" style="' + (options.style || '') + '">'; + viewHtml += ' <div class="ew-tree-table-group">'; + viewHtml += ' <div class="ew-tree-table-head">'; + viewHtml += ' <table class="layui-table"></table>'; + viewHtml += ' <div class="ew-tree-table-border bottom"></div>'; + viewHtml += ' </div>'; + viewHtml += ' <div class="ew-tree-table-box">'; + viewHtml += ' <table class="layui-table"></table>'; + viewHtml += ' <div class="ew-tree-table-loading"><i class="layui-icon layui-anim layui-anim-rotate layui-anim-loop"></i></div>'; + viewHtml += ' <div class="ew-tree-table-empty" style="display: none;">' + (options.text.none || '') + '</div>'; + viewHtml += ' </div>'; + viewHtml += ' </div>'; + viewHtml += ' <div class="ew-tree-table-border top"></div><div class="ew-tree-table-border left"></div>'; + viewHtml += ' <div class="ew-tree-table-border right"></div><div class="ew-tree-table-border bottom"></div>'; + viewHtml += ' </div>'; + $elem.after(viewHtml); + + // 获取各个组件 + var components = this.getComponents(); + var $view = components.$view; // 容器 + $view.attr('lay-filter', tbFilter); + var $group = components.$group; // 表格容器 + var $tbBox = components.$tbBox; // 表格主体部分容器 + var $table = components.$table; // 主体表格 + var $headTb = components.$headTb; // 表头表格 + var $tbEmpty = components.$tbEmpty; // 空视图 + var $tbLoading = components.$tbLoading; // 空视图 + + // 基础参数设置 + options.skin && $table.attr('lay-skin', options.skin); + options.size && $table.attr('lay-size', options.size); + options.even && $table.attr('lay-even', options.even); + + // 容器边框调整 + if (device.ie) { + $view.find('.ew-tree-table-border.bottom').css('height', '1px'); + $view.find('.ew-tree-table-border.right').css('width', '1px'); + } + + // 固定宽度 + if (options.width) { + $view.css('width', options.width); + $headTb.parent().css('width', options.width); + $tbBox.css('width', options.width); + } + // col最小宽度 + var tbWidth = options.getTbWidth(); + if (tbWidth.setWidth) { + $table.css('width', tbWidth.minWidth); + $headTb.css('width', tbWidth.minWidth); + } else { + $table.css('min-width', tbWidth.minWidth); + $headTb.css('min-width', tbWidth.minWidth); + } + + // 渲染表结构及表头 + var colgroupHtmlStr = options.getColgroup(); + var headHtmlStr = colgroupHtmlStr + '<thead>' + options.getThead() + '</thead>'; + if (options.height) { // 固定表头 + $table.html(colgroupHtmlStr + '<tbody></tbody>'); + $headTb.html(headHtmlStr); + $table.css('margin-top', '-1px'); + if (options.height.indexOf('full-') == 0) { // 差值高度 + var h = parseFloat(options.height.substring(5)); + var cssStr = '<style>.ew-tree-table > .ew-tree-table-group > .ew-tree-table-box {'; + cssStr += ' height: ' + (getPageHeight() - h) + 'px;'; + cssStr += ' height: -moz-calc(100vh - ' + h + 'px);'; + cssStr += ' height: -webkit-calc(100vh - ' + h + 'px);'; + cssStr += ' height: calc(100vh - ' + h + 'px);'; + cssStr += ' }</style>'; + $tbBox.after(cssStr); + $tbBox.attr('ew-tree-full', h); + } else { // 固定高度 + $tbBox.css('height', options.height); + } + } else { + $table.html(headHtmlStr + '<tbody></tbody>'); + } + form.render('checkbox', tbFilter); // 渲染表头的表单元素 + + // 渲染数据 + if (options.reqData) { // 异步加载 + this.renderBodyAsync(); + } else { // 一次性渲染 + if (options.data && options.data.length > 0) { + // 处理数据 + if (options.tree.isPidData) { // pid形式数据 + options.data = treeTb.pidToChildren(options.data, options.tree.idName, options.tree.pidName, options.tree.childName); + } else { // children形式数据 + addPidField(options.data, options.tree); + } + $table.children('tbody').html(this.renderBody(options.data)); + $tbLoading.hide(); + this.renderNumberCol(); // 渲染序号列 + form.render(null, tbFilter); // 渲染表单元素 + this.checkChooseAllCB(); // 联动全选框 + updateFixedTbHead($view); + } else { + $tbLoading.hide(); + $tbEmpty.show(); + } + } + }; + + /** 绑定各项事件 */ + TreeTable.prototype.bindEvents = function () { + var that = this; + var options = this.options; + var components = this.getComponents(); + var $view = components.$view; + var $table = components.$table; + var $tbEmpty = components.$tbEmpty; + var tbFilter = components.tbFilter; + var checkboxFilter = components.checkboxFilter; + var radioFilter = components.radioFilter; + var cbAllFilter = components.cbAllFilter; + var $tbody = $table.children('tbody'); + + /** 行事件公共返回对象 */ + var commonMember = function (ext) { + var $tr = $(this); + if (!$tr.is('tr')) { + var $td_tr = $tr.parent('tr[data-id]'); + if ($td_tr.length > 0) { + $tr = $td_tr; + } else { + $tr = $tr.parentsUntil('tr[data-id]').last().parent(); + } + } + var id = $tr.data('id'); + var data = getDataById(options.data, id, options.tree); + var obj = { + tr: $tr, // 当前行 + data: data, //当前行数据 + del: function () { // 删除行 + var indent = parseInt(this.tr.data('indent')); + this.tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) { + return false; + } + $(this).remove(); + }); + var $parentTr = this.tr.prevAll('tr'); + this.tr.remove(); + delDataById(options.data, id, options.tree); + if (!options.data || options.data.length <= 0) { + $tbEmpty.show(); + } + that.renderNumberCol(); // 渲染序号列 + // 联动父级 + $parentTr.each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + that.checkParentCB($(this)); + indent = tInd; + } + }); + that.checkChooseAllCB(); // 联动全选框 + }, + update: function (fields) { // 修改行 + data = $.extend(data, fields); + var indent = parseInt(this.tr.data('indent')); + that.renderBodyTr(data, indent, undefined, this.tr); + form.render(null, tbFilter); // 渲染表单元素 + that.checkIndeterminateCB(); // 恢复半选框状态 + that.checkChooseAllCB(); // 联动全选框 + } + }; + return $.extend(obj, ext); + }; + + // 绑定折叠展开事件 + $tbody.off('click.fold').on('click.fold', '.ew-tree-pack', function (e) { + layui.stope(e); + var $tr = $(this).parentsUntil('tr').last().parent(); + if ($tr.hasClass('ew-tree-table-loading')) { // 已是加载中 + return; + } + var haveChild = $tr.data('have-child'); + if (haveChild != true && haveChild != 'true') { // 子节点 + return; + } + var id = $tr.data('id'); + var isOpen = $tr.hasClass('ew-tree-table-open'); + var data = getDataById(options.data, id, options.tree); + if (!isOpen && (!data[options.tree.childName] || data[options.tree.childName].length <= 0)) { + that.renderBodyAsync(data, $tr); + } else { + toggleRow($tr); + } + }); + + // 绑定lay-event事件 + $tbody.off('click.tool').on('click.tool', '*[lay-event]', function (e) { + layui.stope(e); + var $this = $(this); + layui.event.call(this, MOD_NAME, 'tool(' + tbFilter + ')', commonMember.call(this, { + event: $this.attr('lay-event') + })); + }); + + // 绑定单选框事件 + form.on('radio(' + radioFilter + ')', function (data) { + var d = getDataById(options.data, data.value, options.tree); + that.removeAllChecked(); + d.LAY_CHECKED = true; // 同时更新数据 + layui.event.call(this, MOD_NAME, 'checkbox(' + tbFilter + ')', {checked: true, data: d, type: 'one'}); + }); + + // 绑定复选框事件 + form.on('checkbox(' + checkboxFilter + ')', function (data) { + var checked = data.elem.checked; + var $cb = $(data.elem); + var $layCb = $cb.next('.layui-form-checkbox'); + // 如果是半选状态,点击全选 + if (!checked && $layCb.hasClass('ew-form-indeterminate')) { + checked = true; + $cb.prop('checked', checked); + $cb.data('indeterminate', 'false'); + $layCb.addClass('layui-form-checked'); + $layCb.removeClass('ew-form-indeterminate'); + } + var d = getDataById(options.data, data.value, options.tree); + d.LAY_CHECKED = checked; // 同时更新数据 + // 联动操作 + var $tr = $cb.parentsUntil('tr').last().parent(); + if (d[options.tree.childName] && d[options.tree.childName].length > 0) { + that.checkSubCB($tr, checked); // 联动子级 + } + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + that.checkParentCB($(this)); // 联动父级 + indent = tInd; + } + }); + that.checkChooseAllCB(); // 联动全选框 + // 回调事件 + layui.event.call(this, MOD_NAME, 'checkbox(' + tbFilter + ')', { + checked: checked, + data: d, + type: 'one' + }); + }); + + // 绑定全选复选框事件 + form.on('checkbox(' + cbAllFilter + ')', function (data) { + var checked = data.elem.checked; + var $cb = $(data.elem); + var $layCb = $cb.next('.layui-form-checkbox'); + if (!options.data || options.data.length <= 0) { // 如果数据为空 + $cb.prop('checked', false); + $cb.data('indeterminate', 'false'); + $layCb.removeClass('layui-form-checked ew-form-indeterminate'); + return; + } + // 如果是半选状态,点击全选 + if (!checked && $layCb.hasClass('ew-form-indeterminate')) { + checked = true; + $cb.prop('checked', checked); + $cb.data('indeterminate', 'false'); + $layCb.addClass('layui-form-checked'); + $layCb.removeClass('ew-form-indeterminate'); + } + layui.event.call(this, MOD_NAME, 'checkbox(' + tbFilter + ')', { + checked: checked, + data: undefined, + type: 'all' + }); + that.checkSubCB($table.children('tbody'), checked); // 联动操作 + }); + + // 绑定行单击事件 + $tbody.off('click.row').on('click.row', 'tr', function () { + layui.event.call(this, MOD_NAME, 'row(' + tbFilter + ')', commonMember.call(this, {})); + }); + + // 绑定行双击事件 + $tbody.off('dblclick.rowDouble').on('dblclick.rowDouble', 'tr', function () { + layui.event.call(this, MOD_NAME, 'rowDouble(' + tbFilter + ')', commonMember.call(this, {})); + }); + + // 绑定单元格点击事件 + $tbody.off('click.cell').on('click.cell', 'td', function (e) { + var $td = $(this); + var type = $td.data('type'); + // 判断是否是复选框、单选框列 + if (type == 'checkbox' || type == 'radio') { + layui.stope(e); + return; + } + var edit = $td.data('edit'); + var field = $td.data('field'); + if (edit) { // 开启了单元格编辑 + layui.stope(e); + if ($tbody.find('.ew-tree-table-edit').length > 0) { + return; + } + var index = $td.data('index'); + var indentSize = $td.children('.ew-tree-table-indent').length; + var id = $td.parent().data('id'); + var d = getDataById(options.data, id, options.tree); + if ('text' == edit || 'number' == edit) { // 文本框 + var $input = $('<input type="' + edit + '" class="layui-input ew-tree-table-edit"/>'); + $input[0].value = d[field]; + $td.append($input); + $input.focus(); + $input.blur(function () { + var value = $(this).val(); + if (value == d[field]) { + $(this).remove(); + return; + } + var rs = layui.event.call(this, MOD_NAME, 'edit(' + tbFilter + ')', commonMember.call(this, { + value: value, + field: field + })); + if (rs == false) { + $(this).addClass('layui-form-danger'); + $(this).focus(); + } else { + d[field] = value; // 同步更新数据 + that.renderBodyTd(d, indentSize, index, $td); // 更新单元格 + } + }); + } else { + console.error('不支持的单元格编辑类型:' + edit); + } + } else { // 回调单元格点击事件 + var rs = layui.event.call(this, MOD_NAME, 'cell(' + tbFilter + ')', commonMember.call(this, { + td: $td, + field: field + })); + if (rs == false) { + layui.stope(e); + } + } + }); + + // 绑定单元格双击事件 + $tbody.off('dblclick.cellDouble').on('dblclick.cellDouble', 'td', function (e) { + var $td = $(this); + var type = $td.data('type'); + // 判断是否是复选框、单选框列 + if (type == 'checkbox' || type == 'radio') { + layui.stope(e); + return; + } + var edit = $td.data('edit'); + var field = $td.data('field'); + if (edit) { // 开启了单元格编辑 + layui.stope(e); + } else { // 回调单元格双击事件 + var rs = layui.event.call(this, MOD_NAME, 'cellDouble(' + tbFilter + ')', commonMember.call(this, { + td: $td, + field: field + })); + if (rs == false) { + layui.stope(e); + } + } + }); + + // 同步滚动条 + components.$tbBox.on('scroll', function () { + var $this = $(this); + var scrollLeft = $this.scrollLeft(); + var scrollTop = $this.scrollTop(); + components.$headTb.parent().scrollLeft(scrollLeft); + // $headGroup.scrollTop(scrollTop); + }); + + // 列宽拖拽调整 + /*$view.off('mousedown.resize').on('mousedown.resize', '.ew-tb-resize', function (e) { + layui.stope(e); + var index = $(this).parent().data('index'); + $(this).data('move', 'true'); + $(this).data('x', e.clientX); + var w = $(this).parent().parent().parent().parent().children('colgroup').children('col').eq(index).attr('width'); + $(this).data('width', w); + }); + $view.off('mousemove.resize').on('mousemove.resize', '.ew-tb-resize', function (e) { + layui.stope(e); + var move = $(this).data('move'); + if ('true' == move) { + var x = $(this).data('x'); + var w = $(this).data('width'); + var index = $(this).parent().data('index'); + var nw = parseFloat(w) + e.clientX - parseFloat(x); + $(this).parent().parent().parent().parent().children('colgroup').children('col').eq(index).attr('width', nw); + } + }); + $view.off('mouseup.resize').on('mouseup.resize', '.ew-tb-resize', function (e) { + layui.stope(e); + $(this).data('move', 'false'); + }); + $view.off('mouseleave.resize').on('mouseleave.resize', '.ew-tb-resize', function (e) { + layui.stope(e); + $(this).data('move', 'false'); + });*/ + + }; + + /** 获取各个组件 */ + TreeTable.prototype.getComponents = function () { + var $view = $(this.options.elem).next(); // 容器 + var $group = $view.children('.ew-tree-table-group'); // 表格容器 + var $tbBox = $group.children('.ew-tree-table-box'); // 表格主体部分容器 + var $table = $tbBox.children('.layui-table'); // 主体表格 + var $headTb = $group.children('.ew-tree-table-head').children('.layui-table'); // 表头表格 + var $tbEmpty = $tbBox.children('.ew-tree-table-empty'); // 空视图 + var $tbLoading = $tbBox.children('.ew-tree-table-loading'); // 加载视图 + var tbFilter = $view.attr('lay-filter'); // 容器filter + var checkboxFilter = 'ew_tb_checkbox_' + tbFilter; // 复选框filter + var radioFilter = 'ew_tb_radio_' + tbFilter; // 单选框filter + var cbAllFilter = 'ew_tb_choose_all_' + tbFilter; // 全选按钮filter + return { + $view: $view, + $group: $group, + $tbBox: $tbBox, + $table: $table, + $headTb: $headTb, + $tbEmpty: $tbEmpty, + $tbLoading: $tbLoading, + tbFilter: tbFilter, + checkboxFilter: checkboxFilter, + radioFilter: radioFilter, + cbAllFilter: cbAllFilter + }; + }; + + /** + * 递归渲染表格主体部分 + * @param data 数据列表 + * @param indentSize 缩进大小 + * @param isHide 是否默认隐藏 + * @returns {string} + */ + TreeTable.prototype.renderBody = function (data, indentSize, isHide) { + var options = this.options; + var treeOption = options.tree; + indentSize || (indentSize = 0); + var htmlStr = ''; + for (var i = 0; i < data.length; i++) { + var d = data[i]; + htmlStr += this.renderBodyTr(d, indentSize, isHide); + // 递归渲染子集 + var children = d[treeOption.childName]; + if (children && children.length > 0) { + htmlStr += this.renderBody(children, indentSize + 1, !d[treeOption.openName]); + } + } + return htmlStr; + }; + + /** + * 渲染一行数据 + * @param d 行数据 + * @param option 配置 + * @param indentSize 缩进大小 + * @param isHide 是否隐藏 + * @param $tr + * @returns {string} + */ + TreeTable.prototype.renderBodyTr = function (d, indentSize, isHide, $tr) { + var options = this.options; + var cols = options.cols; + var treeOption = options.tree; + indentSize || (indentSize = 0); + var htmlStr = ''; + var haveChild = getHaveChild(d, treeOption); + if ($tr) { + $tr.data('pid', d[treeOption.pidName] || ''); + $tr.data('have-child', haveChild); + $tr.data('indent', indentSize); + $tr.removeClass('ew-tree-table-loading'); + } else { + var classNames = ''; + if (haveChild && d[treeOption.openName]) { + classNames += 'ew-tree-table-open'; + } + if (isHide) { + classNames += 'ew-tree-tb-hide'; + } + htmlStr += '<tr class="' + classNames + '" data-id="' + d[treeOption.idName] + '"'; + htmlStr += ' data-pid="' + (d[treeOption.pidName] || '') + '" data-have-child="' + haveChild + '"'; + htmlStr += ' data-indent="' + indentSize + '">'; + } + for (var j = 0; j < cols.length; j++) { + var $td; + if ($tr) { + $td = $tr.children('td').eq(j); + } + htmlStr += this.renderBodyTd(d, indentSize, j, $td); + } + htmlStr += '</tr>'; + return htmlStr; + }; + + /** + * 渲染每一个单元格数据 + * @param d 行数据 + * @param indentSize 缩进大小 + * @param index 第几列 + * @param $td + * @returns {string} + */ + TreeTable.prototype.renderBodyTd = function (d, indentSize, index, $td) { + var options = this.options; + var col = options.cols[index]; + var treeOption = options.tree; + var components = this.getComponents(); + var checkboxFilter = components.checkboxFilter; + var radioFilter = components.radioFilter; + indentSize || (indentSize = 0); + // 内容填充 + var fieldStr = ''; + if (col.type == 'numbers') { // 序号列 + fieldStr += '<span class="ew-tree-table-numbers"></span>'; + col.singleLine = false; + } else if (col.type == 'checkbox') { // 复选框列 + var attrStr = 'name="' + checkboxFilter + '" lay-filter="' + checkboxFilter + '" value="' + d[treeOption.idName] + '"'; + attrStr += d.LAY_CHECKED ? ' checked="checked"' : ''; + fieldStr += '<input type="checkbox" lay-skin="primary" ' + attrStr + ' class="ew-tree-table-checkbox" />'; + col.singleLine = false; + } else if (col.type == 'radio') { // 单选框列 + var attrStr = 'name="' + radioFilter + '" lay-filter="' + radioFilter + '" value="' + d[treeOption.idName] + '"'; + attrStr += d.LAY_CHECKED ? ' checked="checked"' : ''; + fieldStr += '<input type="radio" ' + attrStr + ' class="ew-tree-table-radio" />'; + col.singleLine = false; + } else if (col.templet) { // 自定义模板 + if (typeof col.templet == 'function') { + fieldStr += col.templet(d); + } else if (typeof col.templet == 'string') { + laytpl($(col.templet).html()).render(d, function (html) { + fieldStr += html; + }); + } + } else if (col.toolbar) { // 工具列 + laytpl($(col.toolbar).html()).render(d, function (html) { + fieldStr += html; + }); + } else if (col.field && d[col.field] != undefined && d[col.field] != null) { // 普通字段 + fieldStr += d[col.field]; + } + var tdStr = ''; + // 图标列处理 + if (index == treeOption.iconIndex) { + // 缩进 + for (var k = 0; k < indentSize; k++) { + tdStr += '<span class="ew-tree-table-indent"></span>'; + } + tdStr += '<span class="ew-tree-pack">'; + // 加箭头 + var haveChild = getHaveChild(d, treeOption); + tdStr += ('<i class="layui-icon ew-tree-table-arrow ' + (haveChild ? '' : 'ew-tree-table-arrow-hide') + ' ' + (options.tree.arrowType || '') + '"></i>'); + // 加图标 + tdStr += treeOption.getIcon(d); + if (options.tree.onlyIconControl) { + tdStr += '</span>'; + tdStr += ('<span>' + fieldStr + '</span>'); + } else { + tdStr += ('<span>' + fieldStr + '</span>'); + tdStr += '</span>'; + } + } else { + tdStr += fieldStr; + } + if ($td && col.type != 'numbers') { + $td.html(tdStr); + } + var htmlStr = '<td data-index="' + index + '" '; + col.field && (htmlStr += (' data-field="' + col.field + '"')); + col.edit && (htmlStr += (' data-edit="' + col.edit + '"')); + col.type && (htmlStr += (' data-type="' + col.type + '"')); + col.align && (htmlStr += (' align="' + col.align + '"')); // 对齐方式 + col.style && (htmlStr += (' style="' + col.style + '"')); // 单元格样式 + col.class && (htmlStr += (' class="' + col.class + '"')); // 单元格样式 + htmlStr += '>'; + if (col.singleLine) { + htmlStr += ('<div class="ew-tree-table-td-single"><i class="layui-icon layui-icon-close ew-tree-tips-c"></i><div class="ew-tree-tips">' + tdStr + '</div></div>'); + } else { + htmlStr += tdStr; + } + htmlStr += '</td>'; + return htmlStr; + }; + + /** + * 异步加载渲染 + * @param data 父级数据 + * @param $tr 父级dom + */ + TreeTable.prototype.renderBodyAsync = function (d, $tr) { + var that = this; + var options = this.options; + var components = this.getComponents(); + var $tbEmpty = components.$tbEmpty; + var $tbLoading = components.$tbLoading; + // 显示loading + if ($tr) { + $tr.addClass('ew-tree-table-loading'); + $tr.children('td').find('.ew-tree-pack').children('.ew-tree-table-arrow').addClass('layui-anim layui-anim-rotate layui-anim-loop'); + } else { + if (options.data && options.data.length > 0) { + $tbLoading.addClass('ew-loading-float'); + } + $tbLoading.show(); + $tbEmpty.hide(); + } + // 请求数据 + options.reqData(d, function (res) { + if (options.tree.isPidData) { + res = treeTb.pidToChildren(res, options.tree.idName, options.tree.pidName, options.tree.childName); + } + that.renderBodyData(res, d, $tr); // 渲染内容 + // 移除loading + if ($tr) { + $tr.removeClass('ew-tree-table-loading'); + $tr.children('td').find('.ew-tree-pack').children('.ew-tree-table-arrow').removeClass('layui-anim layui-anim-rotate layui-anim-loop'); + } else { + $tbLoading.hide(); + $tbLoading.removeClass('ew-loading-float'); + // 是否为空 + if (!res || res.length == 0) { + $tbEmpty.show(); + } else { + $tbEmpty.hide(); + } + } + }); + }; + + /** + * 根据数据渲染body + * @param data 数据集合 + * @param option 配置项 + * @param d 父级数据 + * @param $tr 父级dom + */ + TreeTable.prototype.renderBodyData = function (data, d, $tr) { + var that = this; + var options = this.options; + var components = this.getComponents(); + var $view = components.$view; + var $table = components.$table; + var tbFilter = components.tbFilter; + addPidField(data, options.tree, d); // 补充pid字段 + // 更新到数据 + if (d == undefined) { + options.data = data; + } else { + d[options.tree.childName] = data; + } + var indent; + if ($tr) { + indent = parseInt($tr.data('indent')) + 1; + } + var htmlStr = this.renderBody(data, indent); + if ($tr) { + // 移除旧dom + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= (indent - 1)) { + return false; + } + $(this).remove(); + }); + // 渲染新dom + $tr.after(htmlStr); + $tr.addClass('ew-tree-table-open'); + } else { + $table.children('tbody').html(htmlStr); + } + form.render(null, tbFilter); // 渲染表单元素 + this.renderNumberCol(); // 渲染序号列 + this.checkIndeterminateCB(); // 恢复复选框半选状态 + if ($tr) { + // 更新父级复选框状态 + this.checkParentCB($tr); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < (indent - 1)) { + that.checkParentCB($(this)); + indent = tInd + 1; + } + }); + } + this.checkChooseAllCB(); // 联动全选框 + updateFixedTbHead($view); + }; + + /** + * 联动子级复选框状态 + * @param $tr 当前tr的dom + * @param checked + */ + TreeTable.prototype.checkSubCB = function ($tr, checked) { + var that = this; + var components = this.getComponents(); + var cbFilter = components.checkboxFilter; + var indent = -1, $trList; + if ($tr.is('tbody')) { + $trList = $tr.children('tr'); + } else { + indent = parseInt($tr.data('indent')); + $trList = $tr.nextAll('tr') + } + $trList.each(function () { + if (parseInt($(this).data('indent')) <= indent) { + return false; + } + var $cb = $(this).children('td').find('input[name="' + cbFilter + '"]'); + $cb.prop('checked', checked); + if (checked) { + $cb.data('indeterminate', 'false'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + $cb.next('.layui-form-checkbox').removeClass('ew-form-indeterminate'); + } else { + $cb.data('indeterminate', 'false'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked ew-form-indeterminate'); + } + that.update($(this).data('id'), {LAY_CHECKED: checked}); // 同步更新数据 + }); + }; + + /** + * 联动父级复选框状态 + * @param $tr 父级的dom + */ + TreeTable.prototype.checkParentCB = function ($tr) { + var that = this; + var components = this.getComponents(); + var cbFilter = components.checkboxFilter; + var indent = parseInt($tr.data('indent')); + var ckNum = 0, unCkNum = 0; + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) { + return false; + } + var $cb = $(this).children('td').find('input[name="' + cbFilter + '"]'); + if ($cb.prop('checked')) { + ckNum++; + } else { + unCkNum++; + } + }); + var $cb = $tr.children('td').find('input[name="' + cbFilter + '"]'); + if (ckNum > 0 && unCkNum == 0) { // 全选 + $cb.prop('checked', true); + $cb.data('indeterminate', 'false'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + $cb.next('.layui-form-checkbox').removeClass('ew-form-indeterminate'); + that.update($tr.data('id'), {LAY_CHECKED: true}); // 同步更新数据 + } else if (ckNum == 0 && unCkNum > 0) { // 全不选 + $cb.prop('checked', false); + $cb.data('indeterminate', 'false'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked ew-form-indeterminate'); + that.update($tr.data('id'), {LAY_CHECKED: false}); // 同步更新数据 + } else if (ckNum > 0 && unCkNum > 0) { // 半选 + $cb.prop('checked', true); + $cb.data('indeterminate', 'true'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked ew-form-indeterminate'); + that.update($tr.data('id'), {LAY_CHECKED: true}); // 同步更新数据 + } + }; + + /** 联动全选复选框 */ + TreeTable.prototype.checkChooseAllCB = function () { + var components = this.getComponents(); + var cbAllFilter = components.cbAllFilter; + var cbFilter = components.checkboxFilter; + var $tbody = components.$table.children('tbody'); + var ckNum = 0, unCkNum = 0; + $tbody.children('tr').each(function () { + var $cb = $(this).children('td').find('input[name="' + cbFilter + '"]'); + if ($cb.prop('checked')) { + ckNum++; + } else { + unCkNum++; + } + }); + var $cb = $('input[lay-filter="' + cbAllFilter + '"]'); + if (ckNum > 0 && unCkNum == 0) { // 全选 + $cb.prop('checked', true); + $cb.data('indeterminate', 'false'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + $cb.next('.layui-form-checkbox').removeClass('ew-form-indeterminate'); + } else if ((ckNum == 0 && unCkNum > 0) || (ckNum == 0 && unCkNum == 0)) { // 全不选 + $cb.prop('checked', false); + $cb.data('indeterminate', 'false'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked ew-form-indeterminate'); + } else if (ckNum > 0 && unCkNum > 0) { // 半选 + $cb.prop('checked', true); + $cb.data('indeterminate', 'true'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked ew-form-indeterminate'); + } + }; + + /** 填充序号列 */ + TreeTable.prototype.renderNumberCol = function () { + var components = this.getComponents(); + var $tbody = components.$table.children('tbody'); + $tbody.children('tr').each(function (index) { + $(this).children('td').find('.ew-tree-table-numbers').text(index + 1); + }); + }; + + /* 解决form.render之后半选框被重置的问题 */ + TreeTable.prototype.checkIndeterminateCB = function () { + var components = this.getComponents(); + var cbFilter = components.checkboxFilter; + $('input[lay-filter="' + cbFilter + '"]').each(function () { + var $cb = $(this); + if ($cb.data('indeterminate') == 'true' && $cb.prop('checked')) { + $cb.next('.layui-form-checkbox').addClass('ew-form-indeterminate'); + } + }); + }; + + /** + * 搜索数据 + * @param ids 关键字或数据id集合 + */ + TreeTable.prototype.filterData = function (ids) { + var components = this.getComponents(); + var $trList = components.$table.children('tbody').children('tr'); + if (typeof ids == 'string') { // 关键字 + var keyword = ids; + ids = []; + $trList.each(function () { + var id = $(this).data('id'); + $(this).children('td').each(function () { + if ($(this).text().indexOf(keyword) != -1) { + ids.push(id); + return false; + } + }); + }); + } + $trList.addClass('ew-tree-table-filter-hide'); + for (var i = 0; i < ids.length; i++) { + var $tr = $trList.filter('[data-id="' + ids[i] + '"]'); + $tr.removeClass('ew-tree-table-filter-hide'); + // 联动父级 + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + $(this).removeClass('ew-tree-table-filter-hide'); // 联动父级 + if (!$(this).hasClass('ew-tree-table-open')) { + toggleRow($(this)); + } + indent = tInd; + } + }); + } + }; + + /** 重置搜索 */ + TreeTable.prototype.clearFilter = function () { + var components = this.getComponents(); + var $trList = components.$table.children('tbody').children('tr'); + $trList.removeClass('ew-tree-table-filter-hide'); + }; + + /** 展开指定行 */ + TreeTable.prototype.expand = function (id, cascade) { + var components = this.getComponents(); + var $tr = components.$table.children('tbody').children('tr[data-id="' + id + '"]'); + if (!$tr.hasClass('ew-tree-table-open')) { + $tr.children('td').find('.ew-tree-pack').trigger('click'); + } + if (cascade == false) { + return; + } + // 联动父级 + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + if (!$(this).hasClass('ew-tree-table-open')) { + $(this).children('td').find('.ew-tree-pack').trigger('click'); + } + indent = tInd; + } + }); + }; + + /** 折叠指定行 */ + TreeTable.prototype.fold = function (id, cascade) { + var components = this.getComponents(); + var $tr = components.$table.children('tbody').children('tr[data-id="' + id + '"]'); + if ($tr.hasClass('ew-tree-table-open')) { + $tr.children('td').find('.ew-tree-pack').trigger('click'); + } + if (cascade == false) { + return; + } + // 联动父级 + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + if ($(this).hasClass('ew-tree-table-open')) { + $(this).children('td').find('.ew-tree-pack').trigger('click'); + } + indent = tInd; + } + }); + }; + + /** 全部展开 */ + TreeTable.prototype.expandAll = function () { + var that = this; + var components = this.getComponents(); + var $trList = components.$table.children('tbody').children('tr'); + $trList.each(function () { + that.expand($(this).data('id'), false); + }); + }; + + /** 全部折叠 */ + TreeTable.prototype.foldAll = function () { + var that = this; + var components = this.getComponents(); + var $trList = components.$table.children('tbody').children('tr'); + $trList.each(function () { + that.fold($(this).data('id'), false); + }); + }; + + /** 获取当前数据 */ + TreeTable.prototype.getData = function () { + return this.options.data; + }; + + /** 重载表格 */ + TreeTable.prototype.reload = function (opt) { + treeTb.render($.extend(this.options, opt)); + }; + + /** 根据id更新数据 */ + TreeTable.prototype.update = function (id, fields) { + var data = getDataById(this.getData(), id, this.options.tree); + $.extend(data, fields); + }; + + /** 根据id删除数据 */ + TreeTable.prototype.del = function (id) { + delDataById(this.getData(), id, this.options.tree); + }; + + /** 获取当前选中行 */ + TreeTable.prototype.checkStatus = function (needIndeterminate) { + (needIndeterminate == undefined) && (needIndeterminate = true); + var that = this; + var components = this.getComponents(); + var $table = components.$table; + var checkboxFilter = components.checkboxFilter; + var radioFilter = components.radioFilter; + var list = []; + // 获取单选框选中数据 + var $radio = $table.find('input[name="' + radioFilter + '"]'); + if ($radio.length > 0) { + var id = $radio.filter(':checked').val(); + var d = getDataById(this.getData(), id, this.options.tree); + if (d) { + list.push(d); + } + } else { // 获取复选框数据 + $table.find('input[name="' + checkboxFilter + '"]:checked').each(function () { + var id = $(this).val(); + var isIndeterminate = $(this).next('.layui-form-checkbox').hasClass('ew-form-indeterminate'); + if (needIndeterminate || !isIndeterminate) { + var d = getDataById(that.getData(), id, that.options.tree); + if (d) { + d.isIndeterminate = isIndeterminate; + list.push(d); + } + } + }); + } + return list; + }; + + /** 设置复/单选框选中 */ + TreeTable.prototype.setChecked = function (ids) { + var components = this.getComponents(); + var $table = components.$table; + var checkboxFilter = components.checkboxFilter; + var radioFilter = components.radioFilter; + var $radio = $table.find('input[name="' + radioFilter + '"]'); + if ($radio.length > 0) { // 开启了单选框 + $radio.each(function () { + if (ids[ids.length - 1] == $(this).val()) { + $(this).next('.layui-form-radio').trigger('click'); + return false; + } + }); + } else { // 开启了复选框 + $table.find('input[name="' + checkboxFilter + '"]').each(function () { + var $cb = $(this); + var value = $cb.val(); + var $layCb = $cb.next('.layui-form-checkbox'); + for (var i = 0; i < ids.length; i++) { + if (value == ids[i]) { + var checked = $cb.prop('checked'); + var indeterminate = $layCb.hasClass('ew-form-indeterminate'); + if (!checked || indeterminate) { + $layCb.trigger('click'); + } + } + } + }); + } + }; + + /** 移除全部选中 */ + TreeTable.prototype.removeAllChecked = function () { + var components = this.getComponents(); + var $table = components.$table; + var checkboxFilter = components.checkboxFilter; + this.checkSubCB($table.children('tbody'), false); + }; + + /** + * 刷新指定父级下的节点 + * @param id 父级id,空则全部刷新 + * @param data 非异步模式替换的数据 + */ + TreeTable.prototype.refresh = function (id, data) { + if (isClass(id) == 'Array') { + data = id; + id = undefined; + } + var components = this.getComponents(); + var $table = components.$table; + var d, $tr; + if (id != undefined) { + d = getDataById(this.getData(), id, this.options.tree); + $tr = $table.children('tbody').children('tr[data-id="' + id + '"]'); + } + if (data) { // 数据模式 + components.$tbLoading.addClass('ew-loading-float'); + components.$tbLoading.show(); + this.renderBodyData(data, d, $tr); + components.$tbLoading.hide(); + components.$tbLoading.removeClass('ew-loading-float'); + if (data && data.length > 0) { + components.$tbEmpty.hide(); + } else { + components.$tbEmpty.show(); + } + } else { // 异步模式 + this.renderBodyAsync(d, $tr); + } + }; + + /** 生成表头 */ + function getThead(options) { + var htmlStr = '<tr>'; + for (var i = 0; i < options.cols.length; i++) { + var col = options.cols[i]; + htmlStr += '<td data-index="' + i + '" '; + col.align && (htmlStr += ' align="' + col.align + '"'); // 对齐方式 + htmlStr += ' >'; + if (col.singleLine && col.type != 'checkbox') { // 单行显示 + htmlStr += '<div class="ew-tree-table-td-single"><i class="layui-icon layui-icon-close ew-tree-tips-c"></i><div class="ew-tree-tips">'; + } + // 标题 + if (col.type == 'checkbox') { + htmlStr += options.getAllChooseBox(); + } else { + htmlStr += (col.title || ''); + } + // 列宽拖拽 + if (!col.unresize && 'checkbox' != col.type && 'radio' != col.type && 'numbers' != col.type && 'space' != col.type) { + htmlStr += '<span class="ew-tb-resize"></span>'; + } + if (col.singleLine) { // 单行显示 + htmlStr += '</div></div>'; + } + htmlStr += '</td>'; + } + htmlStr += '</tr>'; + return htmlStr; + } + + /** 生成colgroup */ + function getColgroup(options) { + var htmlStr = '<colgroup>'; + for (var i = 0; i < options.cols.length; i++) { + var col = options.cols[i]; + htmlStr += '<col '; + // 设置宽度 + if (col.width) { + htmlStr += 'width="' + col.width + '"' + } else if (col.type == 'space') { // 空列 + htmlStr += 'width="15"' + } else if (col.type == 'numbers') { // 序号列 + htmlStr += 'width="40"' + } else if (col.type == 'checkbox' || col.type == 'radio') { // 复/单选框列 + htmlStr += 'width="48"' + } + htmlStr += ' />'; + } + htmlStr += '</colgroup>'; + return htmlStr; + } + + /** 计算table宽度 */ + function getTbWidth(options) { + var minWidth = 0, setWidth = true; + for (var i = 0; i < options.cols.length; i++) { + var col = options.cols[i]; + if (col.type == 'space') { // 空列 + minWidth += 15; + } else if (col.type == 'numbers') { // 序号列 + minWidth += 40; + } else if (col.type == 'checkbox' || col.type == 'radio') { // 复/单选框列 + minWidth += 48; + } else if (!col.width || /\d+%$/.test(col.width)) { // 列未固定宽度 + setWidth = false; + if (col.minWidth) { + minWidth += col.minWidth; + } else if (options.cellMinWidth) { + minWidth += options.cellMinWidth; + } + } else { // 列固定宽度 + minWidth += col.width; + } + } + return {minWidth: minWidth, setWidth: setWidth}; + } + + /** 生成全选按钮 */ + function getAllChooseBox(options) { + var tbFilter = $(options.elem).next().attr('lay-filter'); + var cbAllFilter = 'ew_tb_choose_all_' + tbFilter; + return '<input type="checkbox" lay-filter="' + cbAllFilter + '" lay-skin="primary" class="ew-tree-table-checkbox"/>'; + } + + /** 获取列图标 */ + function getIcon(d, treeOption) { + if (getHaveChild(d, treeOption)) { + return '<i class="ew-tree-icon layui-icon layui-icon-layer"></i>'; + } else { + return '<i class="ew-tree-icon layui-icon layui-icon-file"></i>'; + } + } + + /** 折叠/展开行 */ + function toggleRow($tr) { + var indent = parseInt($tr.data('indent')); + var isOpen = $tr.hasClass('ew-tree-table-open'); + if (isOpen) { // 折叠 + $tr.removeClass('ew-tree-table-open'); + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) { + return false; + } + $(this).addClass('ew-tree-tb-hide'); + }); + } else { // 展开 + $tr.addClass('ew-tree-table-open'); + var hideInd; + $tr.nextAll('tr').each(function () { + var ind = parseInt($(this).data('indent')); + if (ind <= indent) { + return false; + } + if (hideInd != undefined && ind > hideInd) { + return true; + } + $(this).removeClass('ew-tree-tb-hide'); + if (!$(this).hasClass('ew-tree-table-open')) { + hideInd = parseInt($(this).data('indent')); + } else { + hideInd = undefined; + } + }); + } + updateFixedTbHead($tr.parent().parent().parent().parent().parent()); + } + + /** 固定表头滚动条补丁 */ + function updateFixedTbHead($view) { + var $group = $view.children('.ew-tree-table-group'); + var $headBox = $group.children('.ew-tree-table-head'); + var $tbBox = $group.children('.ew-tree-table-box'); + var sWidth = $tbBox.width() - $tbBox.prop('clientWidth'); + if (sWidth > 0) { + $headBox.css('border-right', sWidth + 'px solid #f2f2f2'); + } else { + $headBox.css('border-right', 'none'); + } + } + + // 监听窗口大小改变 + $(window).resize(function () { + $('.ew-tree-table').each(function () { + updateFixedTbHead($(this)); + var $tbBox = $(this).children('.ew-tree-table-group').children('.ew-tree-table-box'); + var full = $tbBox.attr('ew-tree-full'); + if (full && device.ie && device.ie < 10) { + $tbBox.css('height', getPageHeight() - full); + } + }); + }); + + // 表格溢出点击展开功能 + $(document).on('mouseenter', '.ew-tree-table td', function () { + var $tdSingle = $(this).children('.ew-tree-table-td-single'); + var $content = $tdSingle.children('.ew-tree-tips'); + if ($tdSingle.length > 0 && $content.prop('scrollWidth') > $content.outerWidth()) { + $(this).append('<div class="layui-table-grid-down"><i class="layui-icon layui-icon-down"></i></div>'); + } + }).on('mouseleave', '.ew-tree-table td', function () { + $(this).children('.layui-table-grid-down').remove(); + }); + // 点击箭头展开 + $(document).on('click', '.ew-tree-table td>.layui-table-grid-down', function (e) { + hideAllTdTips(); + var $tdSingle = $(this).parent().children('.ew-tree-table-td-single'); + $tdSingle.addClass('ew-tree-tips-open'); + var $box = $tdSingle.parents().filter('.ew-tree-table-box'); + if ($box.length <= 0) { + $box = $tdSingle.parents().filter('.ew-tree-table-head'); + } + if (($tdSingle.outerWidth() + $tdSingle.parent().offset().left) > $box.offset().left + $box.outerWidth()) { + $tdSingle.addClass('ew-show-left'); + } + if (($tdSingle.outerHeight() + $tdSingle.parent().offset().top) > $box.offset().top + $box.outerHeight()) { + $tdSingle.addClass('ew-show-bottom'); + } + e.stopPropagation(); + }); + // 点击关闭按钮关闭 + $(document).on('click', '.ew-tree-table .ew-tree-tips-c', function (e) { + hideAllTdTips(); + }); + // 点击空白部分关闭 + $(document).on('click', function () { + hideAllTdTips(); + }); + $(document).on('click', '.ew-tree-table-td-single.ew-tree-tips-open', function (e) { + e.stopPropagation(); + }); + + /* 关闭所有单元格溢出提示框 */ + function hideAllTdTips() { + var $single = $('.ew-tree-table-td-single'); + $single.removeClass('ew-tree-tips-open'); + $single.removeClass('ew-show-left'); + } + + /** 判断是否还有子节点 */ + function getHaveChild(d, treeOption) { + var haveChild = false; + if (d[treeOption.haveChildName] != undefined) { + haveChild = d[treeOption.haveChildName]; + haveChild = haveChild == true || haveChild == 'true'; + } else if (d[treeOption.childName]) { + haveChild = d[treeOption.childName].length > 0; + } + return haveChild; + } + + /** 补充pid字段 */ + function addPidField(data, treeOption, parent) { + for (var i = 0; i < data.length; i++) { + if (parent) { + data[i][treeOption.pidName] = parent[treeOption.idName]; + } + if (data[i][treeOption.childName] && data[i][treeOption.childName].length > 0) { + addPidField(data[i][treeOption.childName], treeOption, data[i]); + } + } + } + + /** 根据id获取数据 */ + function getDataById(data, id, treeOption) { + for (var i = 0; i < data.length; i++) { + if (data[i][treeOption.idName] == id) { + return data[i]; + } + if (data[i][treeOption.childName] && data[i][treeOption.childName].length > 0) { + var d = getDataById(data[i][treeOption.childName], id, treeOption); + if (d != undefined) { + return d; + } + } + } + } + + /** 根据id删除数据 */ + function delDataById(data, id, treeOption) { + for (var i = 0; i < data.length; i++) { + if (data[i][treeOption.idName] == id) { + data.splice(i, 1); + return true; + } + if (data[i][treeOption.childName] && data[i][treeOption.childName].length > 0) { + var rs = delDataById(data[i][treeOption.childName], id, treeOption); + if (rs) { + return true; + } + } + } + } + + /** 获取顶级的pId */ + function getPids(list, idName, pidName) { + var pids = []; + for (var i = 0; i < list.length; i++) { + var hasPid = false; + for (var j = 0; j < list.length; j++) { + if (i != j && list[j][idName] == list[i][pidName]) { + hasPid = true; + } + } + if (!hasPid) { + pids.push(list[i][pidName]); + } + } + return pids; + } + + /** 判断pId是否相等 */ + function pidEquals(pId, pIds) { + if (isClass(pIds) == 'Array') { + for (var i = 0; i < pIds.length; i++) { + if (pId == pIds[i]) { + return true; + } + } + } else { + return pId == pIds; + } + return false; + } + + /** 获取变量类型 */ + function isClass(o) { + if (o === null) + return 'Null'; + if (o === undefined) + return 'Undefined'; + return Object.prototype.toString.call(o).slice(8, -1); + } + + /* 获取浏览器高度 */ + function getPageHeight() { + return document.documentElement.clientHeight || document.body.clientHeight; + } + + /* 获取浏览器宽度 */ + function getPageWidth() { + return document.documentElement.clientWidth || document.body.clientWidth; + } + + /** 对外提供的方法 */ + var treeTb = { + /* 渲染 */ + render: function (options) { + return new TreeTable(options); + }, + /* 事件监听 */ + on: function (events, callback) { + return layui.onevent.call(this, MOD_NAME, events, callback); + }, + /* pid转children形式 */ + pidToChildren: function (data, idName, pidName, childName, pId) { + childName || (childName = 'children'); + var newList = []; + for (var i = 0; i < data.length; i++) { + (pId == undefined) && (pId = getPids(data, idName, pidName)); + if (pidEquals(data[i][pidName], pId)) { + var children = this.pidToChildren(data, idName, pidName, childName, data[i][idName]); + (children.length > 0) && (data[i][childName] = children); + newList.push(data[i]); + } + } + return newList; + } + }; + + exports('treeTable', treeTb); +}); diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor.html new file mode 100644 index 0000000..f9ba10b --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor.html @@ -0,0 +1,711 @@ +<div class="layui-card"> + <div class="layui-card-header"> + <h2 class="header-title">医生管理</h2> + <span class="layui-breadcrumb pull-right"> + <a href="#!home_console">首页</a> + <a><cite>医生管理</cite></a> + </span> + </div> + <div class="layui-card-body"> + <div class="layui-form toolbar"> + <button id="doctor-btn-add" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button> + <select placeholder="选择一个应用" id="doctorState" lay-filter="role_clients"> + <option value="">-请选择-</option> + <option value="true">正常</option> + <option value="false">试用</option> + </select> + <select id="hospitalName-seach" placeholder="选择一个应用" lay-filter="role_clients"> + <option value="">-请选择-</option> + </select> + <input id="doctorTel" class="layui-input search-input" type="text" placeholder="按手机号..." />  + <input id="doctorName" class="layui-input search-input" type="text" placeholder="按医生..." />  + <button id="app-btn-search" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索</button> + </div> + + <!-- 数据表格 --> + <table class="layui-table" id="app-table" lay-filter="app-table"></table> + </div> +</div> + +<!-- 表格操作列 --> + +<script type="text/html" id="doctor-table-bar"> + <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a> + <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="reset">重置密码</a> + <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a> + <a class="layui-btn layui-btn-xs" lay-event="del">删除</a> + <a class="layui-btn layui-btn-xs" lay-event="enable">停用</a> +</script> + + +<!-- 表单弹窗 --> +<script type="text/html" id="app-model"> + <form id="app-form" lay-filter="app-form" class="layui-form model-form"> + <input name="id" type="hidden"/> + <div class="layui-form-item"> + <label class="layui-form-label">医院名称</label> + <div class="layui-input-block"> + <input name="hospitalName" id="hospitalName" type="hidden" class="layui-input" maxlength="20"/> + <select id="hospitalId" name="hospitalId" lay-filter="getdepartment" placeholder="选择一个应用" lay-filter="role_clients"> + <option value="">-请选择-</option> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">科室</label> + <div class="layui-input-block"> + <input name="departmentName" id="departmentName" placeholder="请输入应用名称" type="hidden" class="layui-input" maxlength="20"/> + <select id="departmentId" name="departmentId" lay-filter="departmentId" placeholder="选择一个应用" lay-filter="role_clients"> + <option value="">-请选择-</option> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">医生姓名</label> + <div class="layui-input-block"> + <input name="doctorName" type="text" class="layui-input" maxlength="20" + lay-verify="required" required /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">医生的头像</label> + <div class="layui-input-block"> + <input name="doctorLogo" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">联系方式</label> + <div class="layui-input-block"> + <input name="doctorTel" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">职称</label> + <div class="layui-input-block"> + <input name="doctorRank" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">其它联系方式</label> + <div class="layui-input-block"> + <input name="doctorOtherLink" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">医生的email</label> + <div class="layui-input-block"> + <input name="doctorEmail" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">医生简介</label> + <div class="layui-input-block"> + <input name="doctorAbout" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">是否医答</label> + <div class="layui-input-block"> + <input name="isAnswer" id="isAnswer-shi" type="radio" checked value="true" title="是" class="layui-input" maxlength="20"/> + <input name="isAnswer" id="isAnswer-fou" type="radio" value="false" title="否" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">是否签约医生</label> + <div class="layui-input-block"> + <input name="isSigning" id="isSigning-shi" type="radio" checked value="true" title="是" class="layui-input" maxlength="20"/> + <input name="isSigning" id="isSigning-fou" type="radio" value="false" title="否" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label"> 是否置顶</label> + <div class="layui-input-block"> + <input name="isTop" id="isTop-shi" type="radio" checked value="true" title="是" class="layui-input" maxlength="20"/> + <input name="isTop" id="isTop-fou" type="radio" value="false" title="否" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label"> 医生状态</label> + <div class="layui-input-block"> + <input name="doctorState" id="doctorState-shi" type="radio" checked value="true" title="是" class="layui-input" maxlength="20"/> + <input name="doctorState" id="doctorState-fou" type="radio" value="false" title="否" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" >销售代表名称</label> + <div class="layui-input-block"> + <input name="serverUserName" type="text" class="layui-input" maxlength="15"/> + </div> + </div> + <div class="layui-form-item model-form-footer"> + <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button> + <button class="layui-btn" id="sure" lay-filter="user-form-submit" lay-submit>保存</button> + </div> + </form> +</script> + +<!-- 表单弹窗 添加--> +<script type="text/html" id="app-model-add"> + + <form id="app-form-add" lay-filter="app-form-add" class="layui-form model-form"> + <input name="id" type="hidden"/> + <div class="layui-form-item"> + <label class="layui-form-label">医院名称</label> + <div class="layui-input-block"> + <input name="hospitalName" id="hospitalId-add" type="hidden" class="layui-input" maxlength="20"/> + <select id="hospitalName-add" name="hospitalId" lay-filter="getdepartment-add" placeholder="选择一个应用" lay-filter="role_clients"> + <option value="">-请选择-</option> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">姓名</label> + <div class="layui-input-block"> + <input name="doctorName" type="text" class="layui-input" maxlength="20" + lay-verify="required" required /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">科室</label> + <div class="layui-input-block"> + <input name="departmentName" id="departmentName" placeholder="请输入应用名称" type="hidden" class="layui-input" maxlength="20"/> + <select id="departmentId" name="departmentId" lay-filter="departmentId" placeholder="选择一个应用" lay-filter="role_clients"> + <option value="">-请选择-</option> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">职称</label> + <div class="layui-input-block"> + <select id="doctorRankId" name="doctorRankId" lay-filter="doctorRankId" placeholder="选择一个职称" > + <option value="">-请选择-</option> + </select> + <input name="doctorRank" id='doctorRank' type="hidden" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">联系电话</label> + <div class="layui-input-block"> + <input name="doctorTel" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">其它联系方式</label> + <div class="layui-input-block"> + <input name="doctorOtherLink" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">医生的email</label> + <div class="layui-input-block"> + <input name="doctorEmail" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">医生简介</label> + <div class="layui-input-block"> + <input name="doctorAbout" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">医生的头像</label> + <div class="layui-input-block" id="demo"> + <button type="button" class="layui-btn" id="phonto"> + <i class="layui-icon"></i>上传图片 + </button> + <input name="doctorLogo" id="doctorLogo-add" type="hidden" class="layui-input" maxlength="20"/> + <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> + 预览图: + <div class="layui-upload-list" id="demo2"></div> + </blockquote> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label"> 是否置顶</label> + <div class="layui-input-block"> + <input name="isTop" id="isTop-shi" type="radio" checked value="true" title="是" class="layui-input" maxlength="20"/> + <input name="isTop" id="isTop-fou" type="radio" value="false" title="否" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">是否医答</label> + <div class="layui-input-block"> + <input name="isAnswer" id="isAnswer-shi" type="radio" checked value="true" title="是" class="layui-input" maxlength="20"/> + <input name="isAnswer" id="isAnswer-fou" type="radio" value="false" title="否" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">是否签约医生</label> + <div class="layui-input-block"> + <input name="isSigning" id="isSigning-shi" type="radio" checked value="true" title="是" class="layui-input" maxlength="20"/> + <input name="isSigning" id="isSigning-fou" type="radio" value="false" title="否" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label"> 医生状态</label> + <div class="layui-input-block"> + <input name="doctorState" id="doctorState-shi" type="radio" checked value="true" title="是" class="layui-input" maxlength="20"/> + <input name="doctorState" id="doctorState-fou" type="radio" value="false" title="否" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" >登录帐号</label> + <div class="layui-input-block"> + <input name="username" type="text" class="layui-input" maxlength="15"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" >登录密码</label> + <div class="layui-input-block"> + <input name="password" type="text" class="layui-input" maxlength="15"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" >确认密码</label> + <div class="layui-input-block"> + <input name="passwordSure" type="text" class="layui-input" maxlength="15"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" >销售代表名称</label> + <div class="layui-input-block"> + <input name="serverUserName" id="serverUserName-add" type="hidden" class="layui-input" maxlength="15"/> + <select id="serverUserId-add" name="serverUserId" lay-filter="serverUserId-add" placeholder="选择一个应用" lay-filter="role_clients"> + <option value="">-请选择-</option> + </select> + </div> + </div> + <div class="layui-form-item model-form-footer"> + <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button> + <button class="layui-btn" id="sure" lay-filter="user-form-submit" lay-submit>保存</button> + </div> + </form> +</script> + + +<script> + layui.use(['form', 'table', 'laydate', 'util', 'config', 'upload', 'admin'], function () { + var form = layui.form; + var table = layui.table; + var config = layui.config; + var layer = layui.layer; + var util = layui.util; + var admin = layui.admin; + var upload = layui.upload; + + + //执行实例 + var uploadInst = upload.render({ + elem: '#phonto' //绑定元素 + , url: '/upload/' //上传接口 + , done: function (res) { + //上传完毕回调 + } + , error: function () { + //请求异常回调 + } + }); + //医院数据绑定在弹框里 + var hospital = ""; + + var department = ""; + //销售代表 + var user = ""; + //职称 + var doctorRank=""; + // 获取应用列表 + // layer.load(2); + admin.req('api-user/syshospital/findAll', JSON.stringify({ is_del: 0 }), function (data) { + layer.closeAll('loading'); + if (0 === data.code) { + let selected = false; + clientsAll = data.data; + hospital = data.data; + $.each(data.data, function (index, item) { + if (config.clientId === item.clientId) { + selected = true; + } else { + selected = false; + } + //往下拉菜单里添加元素 + $('#hospitalName-seach').append(new Option(item.hospitalName, item.id, false, selected)); + // $('#hospitalId').append(new Option(item.hospitalName, item.id, false, selected)); + form.render('select', 'app-form'); + }) + form.render(); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'Post'); + //职称添加数据 + var getZhiCheng = function () { + admin.req('api-user/sysdictionaries/findAll', JSON.stringify({ dictionariesClassId: "1248150699682988034" }), function (data) { + layer.closeAll('loading'); + if (0 === data.code) { + let selected = false; + doctorRank = data.data; + $.each(data.data, function (index, item) { + if (config.clientId === item.clientId) { + selected = true; + } else { + selected = false; + } + //往下拉菜单里添加元素 + $('#doctorRankId').append(new Option(item.dictionariesName, item.id, false, selected)); + }) + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'Post'); + } + //获取销售代表 + var getXiaoShouDaiBiao = function () { + admin.req('api-user/users/getThisUserOrganizationUser', {}, function (data) { + layer.closeAll('loading'); + if (0 === data.code) { + user = data.data; + $.each(data.data, function (index, item) { + //往下拉菜单里添加元素 + console.log(item.nickname) + $('#serverUserId-add').append(new Option(item.nickname, item.id, false, false)); + }) + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'get'); + } + + // 添加按钮点击事件 + $('#doctor-btn-add').click(function () { + showEditModel_add(undefined, 2); + }); + //时间格式 + var laydate = layui.laydate; + //执行一个laydate实例 + laydate.render({ + elem: '#test1' //指定元素 + }); + laydate.render({ + elem: '#test2' //指定元素 + }); + + // 渲染表格 + table.render({ + elem: '#app-table', + url: config.base_server + 'api-user/sysdoctor', + method: 'GET', + headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, + page: true, + cols: [[ + { type: 'numbers' }, + { field: 'hospitalName', width: 180, sort: true, title: '医院名称' }, + { field: 'doctorName', width: 200, sort: true, title: '医生姓名' }, + { field: 'doctorRank', width: 180, sort: true, title: '职称' }, + { field: 'username', width: 300, sort: true, title: '登录帐号' }, + { field: 'doctorTel', width: 300, sort: true, title: '联系方式' }, + { + field: 'doctorState', width: 300, sort: true, title: '状态', templet: function (d) { + return d.doctorState ? "正式" : "试用" + } + }, + { + field: 'isAnswer', width: 300, sort: true, title: '医答', templet: function (d) { + return d.isAnswer ? "是" : "否" + } + }, + { + field: 'isSigning', width: 300, sort: true, title: '签约', templet: function (d) { + return d.isSigning ? "是" : "否" + } + }, + { field: 'createTime', width: 250, sort: true, title: '时间', templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy年MM月dd日 HH:mm:ss')}}</div>" }, + { field: 'serverUserName', width: 100, sort: true, title: '销售代表' }, + { width: 200, width: 300, align: 'center', toolbar: '#doctor-table-bar', sort: true, title: '操作' }, + ]] + }); + + // 工具条点击事件 + table.on('tool(app-table)', function (obj) { + var data = obj.data; + var layEvent = obj.event; + if (layEvent === 'detail') { // 查看详情 + showEditModel(data, 1); + } else if (layEvent === 'reset') { + layer.confirm('确定重置此用户的密码吗?', function (i) { + layer.close(i); + layer.load(2); + admin.req('api-user/users/' + obj.data.userId + '/password', {}, function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + layer.msg(data.msg, { icon: 1, time: 500 }); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'PUT'); + }); + } else if (layEvent === 'edit') { + showEditModel(data, 3); + } else if (layEvent === 'del') { + layer.confirm('确定删除此用户吗?', function (i) { + layer.close(i); + layer.load(2); + admin.req('api-user/sysdoctor/' + obj.data.id, {}, function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + layer.msg(data.msg, { icon: 1, time: 500 }); + table.reload('app-table', {}); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'delete'); + }); + } else if (layEvent === 'enable') { + layer.confirm('确定删除此用户吗?', function (i) { + layer.close(i); + layer.load(2); + admin.req('api-user/sysdoctor/enable', JSON.stringify({ id: obj.data.id }), function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + layer.msg(data.msg, { icon: 1, time: 500 }); + table.reload('app-table', {}); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'post'); + }); + } + }); + + // 搜索按钮点击事件 + $('#app-btn-search').click(function () { + var doctorState = $('#doctorState').val(); + var hospitalName = $('#hospitalName-seach').val(); + var doctorTel = $('#doctorTel').val(); + var doctorName = $('#doctorName').val(); + table.reload('app-table', { where: { doctorState: doctorState, hospitalId: hospitalName, doctorTel: doctorTel, doctorName: doctorName } }); + }); + // 显示新增弹窗 + var showEditModel_add = function () { + layer.open({ + type: 1, + title: '新增', + area: '450px', + offset: '120px', + content: $('#app-model-add').html(), + success: function () { + $('#app-form-add')[0].reset(); + $('#app-form-add').attr('method', 'POST'); + $('.layui-layer-content').css('overflow','auto'); + //将医院的数据保存到下拉表 + let selected = false; + //获取职称的 + getZhiCheng(); + //获取销售代表 + getXiaoShouDaiBiao(); + var upload = layui.upload; + //执行实例 + upload.render({ + elem: '#phonto', + url: config.base_server + 'api-file/files-anon', + accept: 'file', + auto: true, + headers: { "Authorization": "Bearer " + config.getToken().access_token }, + before: function (obj) { + layer.load(); //上传loading + //预读本地文件示例,不支持ie8 + obj.preview(function (index, file, result) { + $(".layui-upload-img").remove(); + $('#demo2').append('<img src="' + result + '" width="50px" height="50px" alt="' + file.name + '" class="layui-upload-img">') + }); + }, + done: function (data) { + layer.closeAll('loading'); + $("#doctorLogo-add").val(data.url); + }, + error: function (data) { + layer.closeAll('loading'); + } + }); + $.each(hospital, function (index, item) { + if (config.clientId === item.clientId) { + selected = true; + } else { + selected = false; + } + console.log(item) + $('#hospitalName-add').append(new Option(item.hospitalName, item.id, false, selected)); + }) + form.render(); + } + }); + }; + // 显示编辑弹窗 + var showEditModel = function (data, flag) { + var title = ""; + if (flag == 1) { + title = "查看详情"; + } else if (flag == 2) { + title = "新增"; + } else if (flag == 3) { + title = "编辑"; + } + + layer.open({ + type: 1, + title: title, + area: '450px', + offset: '120px', + content: $('#app-model').html(), + success: function () { + $('#app-form')[0].reset(); + $('#app-form').attr('method', 'POST'); + //将医院的数据保存到下拉表 + let selected = false; + $.each(hospital, function (index, item) { + if (config.clientId === item.clientId) { + selected = true; + } else { + selected = false; + } + //往下拉菜单里添加元素 + $('#hospitalId').append(new Option(item.hospitalName, item.id, false, selected)); + }) + //将科室的数据绑定到里面 + if (flag != 2) { + getdepartment(data.hospitalId); + } + if (data) { + if (data.isAnswer) { + $("#isAnswer-shi").attr('checked', true); + } else { + $("#isAnswer-fou").attr('checked', true); + } + + if (data.isSigning) { + $("#isSigning-shi").attr('checked', true); + } else { + $("#isSigning-fou").attr('checked', true); + } + + if (data.isTop) { + $("#isTop-shi").attr('checked', true); + } else { + $("#isTop-fou").attr('checked', true); + } + + if (data.doctorState) { + $("#doctorState-shi").attr('checked', true); + } else { + $("#doctorState-fou").attr('checked', true); + } + form.val('app-form', data); + if (flag == 1) { + //将确定隐藏 doctorState-shi + $("#sure").hide(); + //将所有的设置为只读 + $('#app-form').find('input').attr('readonly', true); + $('#app-form').find('select,input[type="radio"]').attr('disabled', true); + } else { + $("#sure").show(); + $('#app-form').attr('method', 'POST'); + } + } + } + }); + }; + // 表单提交事件 + form.on('submit(user-form-submit)', function (data) { + layer.load(2); + data.field.hospitalId = parseInt(data.field.hospitalId); + admin.req('api-user/sysdoctor', JSON.stringify(data.field), function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + // layer.msg(data.msg, { icon: 1, time: 500 }); + layer.closeAll(); + table.reload('app-table', {}); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, "POST"); + return false; + }); + //更新 点击医院触发的事件 + form.on('select(getdepartment)', function (data) { + //将医院名称赋值 + $.each(hospital, function (index, item) { + if (item.id == data.value) { + $('#hospitalName').val(item.hospitalName); + } + }) + // + getdepartment(data.value); + }); + //新增----点击医院触发的事件 + form.on('select(getdepartment-add)', function (data) { + //将医院名称赋值 + $.each(hospital, function (index, item) { + if (item.id == data.value) { + $('#hospitalId-add').val(item.hospitalName); + console.log($('#hospitalId-add').val()) + } + }) + // + getdepartment(data.value); + }); + //将新增 中的 serverUserName 赋值 + form.on('select(serverUserId-add)', function (data) { + //将医院名称赋值 + $.each(user, function (index, item) { + if (item.id == data.value) { + $('#serverUserName-add').val(item.nickname); + console.log($('#serverUserName-add').val()) + } + }) + // + }); + //新增 点击职称的触发事件 + form.on('select(doctorRankId)', function (data) { + //将部门名称赋值 + + $.each(doctorRank, function (index, item) { + if (item.id == data.value) { + console.log(12312312312) + $('#doctorRank').val(item.dictionariesName); + console.log($('#doctorRank').val()) + } + }) + }); + //新增 和 更新 科室触发的事件 + form.on('select(departmentId)', function (data) { + //将部门名称赋值 + $.each(department, function (index, item) { + if (item.id == data.value) { + $('#departmentName').val(item.departmentName); + } + }) + // + // getdepartment(data.value); + }); + //获取科室 + var getdepartment = function (data) { + admin.req('api-user/sysdepartment/findListByHospitalId', { id: data }, function (data) { + layer.closeAll('loading'); + if (0 === data.code) { + department = data.data; + $('#departmentId').empty(); + if(data.data.length>0){ + $('#departmentName').val(data.data[0].departmentName); + } + $.each(data.data, function (index, item) { + //往下拉菜单里添加元素 + $('#departmentId').append(new Option(item.departmentName, item.id, false, false)); + form.render('select', 'app-form'); + }) + form.render(); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'get'); + } + }); +</script> \ No newline at end of file diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html new file mode 100644 index 0000000..57dbde3 --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html @@ -0,0 +1,153 @@ +<div class="layui-card"> + <div class="layui-card-header"> + <h2 class="header-title">用户反馈</h2> + <span class="layui-breadcrumb pull-right"> + <a href="#!console">首页</a> + <a><cite>用户反馈</cite></a> + </span> + </div> + <div class="layui-card-body"> + <div class="layui-form toolbar">  + <input id="user-search-value" class="layui-input search-input" type="text" placeholder="输入医生姓名" />  + <input type="text" name="date" id="datebegin" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off" + class="layui-input search-input"> + 至 + <input type="text" name="date" id="dateend" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off" + class="layui-input search-input">   + <button id="user-btn-search" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索</button> + </div> + + <table class="layui-table" id="feedback-table" lay-filter="feedback-table"></table> + </div> +</div> + +<!-- 表格操作列 --> +<script type="text/html" id="feeedback-table-bar"> + <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a> + <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> +</script> +<!-- 表格状态列 --> +<script type="text/html" id="user-tpl-state"> + <input type="checkbox" lay-filter="feedback-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="未处理|已处理" + {{d.enabled==true?'checked':''}}/> +</script> +<!-- 弹窗内容 --> +<script type="text/html" id="feedback-detail"> + <div class="layui-card-body" id="feedback-detail-note"> + </div> +</script> +<script> + layui.use(['table', 'util', 'admin', 'laydate', 'config', 'form'], function () { + let table = layui.table; + let util = layui.util; + let admin = layui.admin; + let form = layui.form; + let laydate = layui.laydate; + let config = layui.config; + + //日期 + laydate.render({ + elem: '#datebegin' + }); + laydate.render({ + elem: '#dateend' + }); + // 渲染表格 + var tableLoad = table.render({ + elem: '#feedback-table', + url: config.base_server + 'api-opration/sysfeedback', + method: 'GET', + headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, + //where: {tenantId: config.clientId}, + page: true, + cols: [[ + { field: 'doctorName', width: 150, title: '医生姓名' }, + { field: 'doctorTel', width: 200, title: '联系电话' }, + { field: 'hospitalName', width: 300, title: '医院' }, + { field: 'departmentName', width: 180, title: '科室' }, + { field: 'enabled', width: 150, templet: '#user-tpl-state', sort: true, title: '状态' }, + { field: 'createTime', width: 200, sort: true, title: '创建时间' }, + { align: 'center', width: 200, toolbar: '#feeedback-table-bar', title: '操作' } + ]] + }); + + // 修改状态 + form.on('switch(feedback-tpl-state)', function (obj) { + layer.load(2); + admin.req('api-opration/sysfeedback/updateEnabled', { + id: obj.elem.value, + enabled: obj.elem.checked ? true : false + }, function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + layer.msg(data.msg, { icon: 1, time: 500 }); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + $(obj.elem).prop('checked', !obj.elem.checked); + form.render('checkbox'); + } + }, 'GET'); + }); + + // 工具条点击事件 + table.on('tool(feedback-table)', function (obj) { + if (obj.event === 'del') { // 删除 + layer.confirm('确定要删除吗?', function (i) { + layer.close(i); + layer.load(2); + admin.req('api-opration/sysfeedback/' + obj.data.id, {}, function (data) { + layer.closeAll('loading'); + layer.msg(data.msg, { icon: 1, time: 500 }, function () { + tableLoad(); + }); + obj.del(); + }, 'DELETE'); + }); + } + else if (obj.event == 'detail') { + $.ajax({ + type: "GET", + url: config.base_server + "api-opration/sysfeedback/" + obj.data.id, + success: function (data) { + if (data != null) { + layer.open({ + type: 1, + title: '详情', + area: ['500px', '300px'], + offset: 'auto', + content: $("#feedback-detail").html(), + success: function (obj) { + $("#feedback-detail-note").html(data.data.feedbackNote); + } + }); + } + else { + layer.msg('未找到相关数据', { icon: 1, time: 500 }); + } + }, + beforeSend: function (xhr) { + xhr.setRequestHeader("Authorization", "Bearer " + config.getToken().access_token); + xhr.setRequestHeader("Content-Type", "application/json") + } + }); + } + }); + + // 搜索按钮点击事件 + $('#user-btn-search').click(function () { + var doctorName = $('#user-search-value').val(); + var datebegin = $('#datebegin').val(); + var dateend = $('#dateend').val(); + if (strUtil.isEmpty(datebegin) && !strUtil.isEmpty(dateend)) { + datebegin = dateUtil.getNowDate(); + $('#datebegin').val(datebegin); + } + if (!strUtil.isEmpty(datebegin) && strUtil.isEmpty(dateend)) { + dateend = dateUtil.getNowDate(); + $('#dateend').val(dateend); + } + table.reload('feedback-table', { where: { doctorName: doctorName, createTime: datebegin, updateTime: dateend } }); + }); + + }); +</script> \ No newline at end of file diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html new file mode 100644 index 0000000..6a3ac4b --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html @@ -0,0 +1,236 @@ +<div class="layui-card"> + <div class="layui-card-header"> + <h2 class="header-title">医院管理</h2> + <span class="layui-breadcrumb pull-right"> + <a href="#!home_console">首页</a> + <a><cite>医院管理</cite></a> + </span> + </div> + <div class="layui-card-body"> + <div class="layui-form toolbar"> + <input id="app-edit-search" class="layui-input search-input" type="text" placeholder="请输入标题" />  + <input type="text" class="layui-input search-input" id="test1"> 至 <input type="text" + class="layui-input search-input" id="test2">   + <select id="role_clients" placeholder="选择一个应用" lay-filter="role_clients"> + <option value="">-请选择-</option> + </select> + <button id="app-btn-search" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索</button> + </div> + + <!-- 数据表格 --> + <table class="layui-table" id="app-table" lay-filter="app-table"></table> + </div> +</div> + +<!-- 表格操作列 --> +<script type="text/html" id="businessRecords-table-bar"> + <select> + <option></option + </select> + <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a> + <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a> + <a class="layui-btn layui-btn-xs" lay-event="reset">重置密码</a> + <a class="layui-btn layui-btn-xs" lay-event="del">删除</a> +</script> + +<!-- 表单弹窗 --> +<script type="text/html" id="app-model"> + <form id="app-form" lay-filter="app-form" class="layui-form model-form"> + <input name="id" type="hidden"/> + <div class="layui-form-item"> + <label class="layui-form-label">记录标题</label> + <div class="layui-input-block"> + <input name="recordTitle" disabled="true" type="text" class="layui-input" maxlength="20" + lay-verify="required" required/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">操作人姓名</label> + <div class="layui-input-block"> + <input name="userName" disabled="true" placeholder="请输入应用名称" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">应用名称</label> + <div class="layui-input-block"> + <input name="appName" disabled="true" type="text" class="layui-input" maxlength="20" + lay-verify="required" required /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">ip</label> + <div class="layui-input-block"> + <input name="recordIp" disabled="true" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">业务操作记录</label> + <div class="layui-input-block"> + <input name="recordDetail" disabled="true" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item model-form-footer"> + <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">确定</button> + </div> + </form> +</script> + + +<script> + layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin'], function () { + var form = layui.form; + var table = layui.table; + var config = layui.config; + var layer = layui.layer; + var util = layui.util; + var admin = layui.admin; + + // 获取应用列表 + // layer.load(2); + admin.req('api-user/users/findAll', {}, function (data) { + layer.closeAll('loading'); + if (0 === data.code) { + let selected = false; + clientsAll = data.data; + $.each(data.data, function (index, item) { + if (config.clientId === item.clientId) { + selected = true; + } else { + selected = false; + } + //往下拉菜单里添加元素 + $('#role_clients').append(new Option(item.username, item.id, false, selected)); + }) + form.render(); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'Post'); + + //时间格式 + var laydate = layui.laydate; + //执行一个laydate实例 + laydate.render({ + elem: '#test1' //指定元素 + }); + laydate.render({ + elem: '#test2' //指定元素 + }); + + // 渲染表格 + table.render({ + elem: '#app-table', + url: config.base_server + 'api-user/syshospital', + method: 'GET', + headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, + page: true, + cols: [[ + { type: 'numbers' }, + { field: 'hospitalName', width: 180, sort: true, title: '医院名称' }, + { field: 'hospitalTypeName', width: 200, sort: true, title: '科室' }, + { field: 'serverUserName', width: 180, sort: true, title: '联系人' }, + { field: 'hospitalTel', width: 300, sort: true, title: '联系方式' }, + { field: 'time', width: 300, sort: true, title: '服务到期时间' }, + { field: 'enabled', width: 300, sort: true, title: '状态' ,templet:function (d) { + return d.hospitalState==0?"试用":"正式" + }}, + { field: 'isScreen', width: 300, sort: true, title: '筛查',templet:function (d) { + return d.isScreen?"是":"否" + } }, + { field: 'createTime', width: 300, sort: true, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy/MM/dd')}}</div>" }, + { field: 'id', width: 250, align: 'center', toolbar: '#businessRecords-table-bar', sort: true, title: '操作' },// 0就诊数据 1筛查 + ]] + }); + + // 工具条点击事件 + table.on('tool(app-table)', function (obj) { + var data = obj.data; + var layEvent = obj.event; + if (layEvent === 'detail') { // 查看详情 + showEditModel(data); + } + }); + + // 搜索按钮点击事件 + $('#app-btn-search').click(function () { + var userId = $('#role_clients').val(); + var key = $('#app-edit-search').val(); + var startTime = $('#test1').val(); + var endTime = $('#test2').val(); + if (startTime != null && endTime != null) { + var flag = compareDate(startTime, endTime); + if (!flag) { + layer.msg('结束时间不得小于开始时间'); + return; + } + } + + table.reload('app-table', { where: { recordTitle: key, startTime: startTime, endTime: endTime, userId: userId } }); + }); + //比较日期大小 + function compareDate(logintime, logouttime) { + var arys1 = new Array(); + var arys2 = new Array(); + if (logintime != null && logouttime != null) { + arys1 = logintime.split('-'); + var logindate = new Date(arys1[0], parseInt(arys1[1] - 1), arys1[2]); + arys2 = logouttime.split('-'); + var logoutdate = new Date(arys2[0], parseInt(arys2[1] - 1), arys2[2]); + if (logindate > logoutdate) { + return false; + } else { + return true; + } + } + } + // 导出 + $('#app-btn-export').click(function () { + var url = config.base_server + 'api-user/dataneed/export'; + var xhr = new XMLHttpRequest(); + xhr.open('POST', url, true); + xhr.responseType = "blob"; + xhr.setRequestHeader("client_type", "DESKTOP_WEB"); + xhr.setRequestHeader("Authorization", "Bearer " + config.getToken().access_token); + xhr.onload = function () { + if (this.status == 200) { + var fileName = "user.xlsx"; + var blob = this.response; + var a = document.createElement('a'); + a.innerHTML = fileName; + // 指定生成的文件名 + a.download = fileName; + a.href = URL.createObjectURL(blob); + document.body.appendChild(a); + var evt = document.createEvent("MouseEvents"); + evt.initEvent("click", false, false); + a.dispatchEvent(evt); + document.body.removeChild(a); + } + } + xhr.send(); + }); + + // // 显示编辑弹窗 + var showEditModel = function (data) { + layer.open({ + type: 1, + title: '查看详情', + area: '450px', + offset: '120px', + content: $('#app-model').html(), + success: function () { + $('#app-form')[0].reset(); + $('#app-form').attr('method', 'POST'); + if (data) { + $("input[name='clientId']").attr('disabled', true); + $("input[name='clientId']").attr('class', "layui-input layui-disabled"); + $("input[name='webServerRedirectUri']").attr('disabled', true); + $("input[name='webServerRedirectUri']").attr('class', "layui-input layui-disabled"); + form.val('app-form', data); + // $('#app-form').attr('method', 'POST'); + } + } + }); + }; + }); +</script> \ No newline at end of file diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html new file mode 100644 index 0000000..53c6ebb --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html @@ -0,0 +1,133 @@ +<div class="layui-card"> + <div class="layui-card-header"> + <h2 class="header-title">产品管理</h2> + <span class="layui-breadcrumb pull-right"> + <a href="#!console">首页</a> + <a><cite>产品管理</cite></a> + </span> + </div> + <div class="layui-card-body"> + <div class="layui-form toolbar">  + <input id="product-search-value" class="layui-input search-input" type="text" placeholder="输入产品名" />  + <button id="product-btn-search" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索</button> + <button id="product-btn-add" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button> + </div> + <table class="layui-table" id="product-table" lay-filter="product-table"></table> + </div> +</div> +<!-- 表格操作列 --> +<script type="text/html" id="product-table-bar"> + <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> +</script> +<!-- 表格状态列 --> +<script type="text/html" id="product-tpl-state"> + <input type="checkbox" lay-filter="product-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="未处理|已处理" + {{d.enabled==true?'checked':''}}/> +</script> +<!-- 弹窗内容 --> +<script type="text/html" id="feedback-detail"> + +</script> + +<script> + layui.use(['table', 'util', 'admin', 'config', 'form'], function () { + let table = layui.table; + let util = layui.util; + let admin = layui.admin; + let form = layui.form; + let laydate = layui.laydate; + let config = layui.config; + + // 渲染表格 + var renderTable = function () { + layer.load(2); + table.render({ + elem: '#product-table', + url: config.base_server + 'api-opration/product', + method: 'GET', + headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, + page: true, + cols: [[ + { field: 'proName', width: 300, title: '产品名称' }, + { + field: 'proTime', width: 150, title: '有效时长', templet: function (d) { + switch (d.proTimeUnit) { + case 0: + return d.proTime + "天"; + break; + case 1: + return d.proTime + "月"; + break; + case 2: + return d.proTime + "年"; + break; + } + } + }, + { field: 'proPrice', width: 100, title: '价格' }, + { field: 'recordCount', width: 180, title: '报告数' }, + { field: 'ailightCount', width: 180, title: '读片量' }, + { field: 'enabled', width: 150, templet: '#product-tpl-state', sort: true, title: '状态' }, + { field: 'createTime', width: 200, sort: true, title: '创建时间' }, + { align: 'center', width: 100, toolbar: '#product-table-bar', title: '操作' } + ]], + done: function () { + layer.closeAll('loading'); + } + }); + } + renderTable(); + + // 修改状态 + form.on('switch(product-tpl-state)', function (obj) { + layer.load(2); + admin.req('api-opration/product/updateEnabled', { + id: obj.elem.value, + enabled: obj.elem.checked ? true : false + }, function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + layer.msg(data.msg, { icon: 1, time: 500 }); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + $(obj.elem).prop('checked', !obj.elem.checked); + form.render('checkbox'); + } + }, 'GET'); + }); + + // 工具条点击事件 + table.on('tool(product-table)', function (obj) { + if (obj.event === 'del') { // 删除 + layer.confirm('确定要删除吗?', function (i) { + layer.close(i); + layer.load(2); + admin.req('api-opration/product/' + obj.data.id, {}, function (data) { + layer.closeAll('loading'); + layer.msg(data.msg, { icon: 1, time: 500 }, function () { + + renderTable(); + }); + obj.del(); + }, 'DELETE'); + }); + } + }); + + // 搜索按钮点击事件 + $('#product-btn-search').click(function () { + var proName = $('#product-search-value').val(); + table.reload('product-table', { where: { proName: proName } }); + }); + // 添加按钮点击事件 + $('#product-btn-add').click(function () { + admin.popupCenter({ + title: '添加产品', + path: 'pages/opration/product_form.html', + finish: function () { + renderTable(); + } + }) + }); + }); +</script> \ No newline at end of file diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product_form.html new file mode 100644 index 0000000..55aa09e --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product_form.html @@ -0,0 +1,101 @@ +<form id="product-form" lay-filter="product-form" class="layui-form model-form" method="POST"> + <div class="layui-form-item"> + <label class="layui-form-label">产品类型</label> + <div class="layui-input-block"> + <input type="radio" name="proType" value="1" title="正式" checked /> + <input type="radio" name="proType" value="0" title="试用" /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">产品名称</label> + <div class="layui-input-block"> + <input name="proName" placeholder="请输入产品名称" type="text" class="layui-input" maxlength="50" + lay-verify="required" required /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">有效时长</label> + <div class="layui-input-block"> + <input name="proTime" type="text" class="layui-input" maxlength="4" lay-verify="required|number" required /> + <select name="proTimeUnit" id="proTimeUnit"> + <option value="0">天</option> + <option value="1">月</option> + <option value="2">年</option> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">价格</label> + <div class="layui-input-block"> + <input name="proPrice" type="text" class="layui-input" maxlength="8" lay-verify="required|number" required /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">报告量</label> + <div class="layui-input-block"> + <input name="recordCount" type="text" class="layui-input" maxlength="6" lay-verify="required|number" + required /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">读片量</label> + <div class="layui-input-block"> + <input name="ailightCount" type="text" class="layui-input" maxlength="6" lay-verify="required|number" + required /> + </div> + </div> + <div class="layui-form-item model-form-footer"> + <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button> + <button class="layui-btn" lay-filter="product-form-submit" lay-submit>保存</button> + </div> +</form> + +<script> + layui.use(['form', 'table', 'util', 'config', 'admin', 'formSelects'], function () { + var form = layui.form; + var table = layui.table; + var config = layui.config; + var layer = layui.layer; + var util = layui.util; + var admin = layui.admin; + var formSelects = layui.formSelects; + var clientsAll = null; + // 获取应用列表 + layer.load(2); + admin.req('api-uaa/clients/all', {}, function (data) { + layer.closeAll('loading'); + if (0 === data.code) { + let selected = false; + clientsAll = data.data; + $.each(data.data, function (index, item) { + if (config.clientId === item.clientId) { + selected = true; + } else { + selected = false; + } + //往下拉菜单里添加元素 + $('#tenantId').append(new Option(item.clientName, item.clientId, false, selected)); + }) + form.render(); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'GET'); + // 表单提交事件 + form.on('submit(product-form-submit)', function (data) { + layer.load(2); + admin.req('api-opration/product', JSON.stringify(data.field), function (data) { + if (data.code === 0) { + layer.closeAll('loading'); + layer.msg(data.msg, { icon: 1, time: 500 }); + admin.finishPopupCenter(); + } else { + layer.closeAll('loading'); + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, $('#product-form').attr('method')); + return false; + }); + + }); +</script> \ No newline at end of file diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/sysdictionaries.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/sysdictionaries.html new file mode 100644 index 0000000..cc81dd6 --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/sysdictionaries.html @@ -0,0 +1,285 @@ +<div class="layui-card"> + <div class="layui-card-header"> + <h2 class="header-title">字典管理</h2> + <span class="layui-breadcrumb pull-right"> + <a href="#!home_console">首页</a> + <a><cite>字典管理</cite></a> + </span> + </div> + <div class="layui-card-body"> + <div class="layui-form toolbar"> + <input id="app-edit-search" class="layui-input search-input" type="text" placeholder="按名称" />  + <button id="app-btn-search" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索</button> + <button id="user-btn-add" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button> + </div> + + <!-- 数据表格 --> + <table class="layui-table" id="app-table" lay-filter="app-table"></table> + </div> +</div> + +<!-- 表格操作列 --> +<script type="text/html" id="dictionaries-table-bar"> + <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a> + <a class="layui-btn layui-btn-xs" lay-event="del">删除</a> +</script> +<!-- 表格状态列 --> +<script type="text/html" id="dictionaries-tpl-state"> + <input type="checkbox" lay-filter="dictionaries-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" + {{d.enabled==1?'checked':''}}/> +</script> + +<!-- 表单弹窗 --> +<script type="text/html" id="app-model"> + <style> + .layui-layer-setwin { + position: absolute; + right: 15px; + *right: 0; + top: -29px; + font-size: 0; + line-height: initial; +} + </style> + <form id="app-form" lay-filter="app-form" class="layui-form model-form"> + <input name="id" type="hidden"/> + <div class="layui-form-item"> + <label class="layui-form-label">字典值</label> + <div class="layui-input-block"> + <input name="dictionariesName" placeholder="字典值" type="text" class="layui-input" maxlength="20" + lay-verify="required" required/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">字典key</label> + <div class="layui-input-block"> + <input name="dictionariesKey" placeholder="字典key" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">字段排序</label> + <div class="layui-input-block"> + <input name="dictionariesOrder" placeholder="请输入数字" type="text" class="layui-input" maxlength="20" + lay-verify="required" required /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">字典类型</label> + <div class="layui-input-block"> + <input name="zidian_or_fenlei" id="fenlei" type="radio" value="1" lay-filter="resourceType" onchange="ccc" title="分类" class="layui-input" maxlength="20"/> + <input name="zidian_or_fenlei" id="zidian " type="radio" value="0" checked lay-filter="resourceType" title="字典" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">状态</label> + <div class="layui-input-block"> + <input name="enabled" id="enabled1" type="radio" checked value="1" title="启用" class="layui-input" maxlength="20"/> + <input name="enabled" id="enabled2" type="radio" value="0" title="停用" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">所属类型</label> + <div class="layui-input-block"> + <select id="role_clients" name="dictionariesClassId" placeholder="选择一个应用" lay-filter="role_clients"> + <option value="">-请选择-</option> + </select> + </div> + <div class="layui-form-item model-form-footer zd-btn-class" style="margin-top:30px;"> + <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button> + <button class="layui-btn" lay-filter="user-form-submit" lay-submit>保存</button> + </div> + </form> +</script> + + +<script> + layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin'], function () { + var form = layui.form; + var table = layui.table; + var config = layui.config; + var layer = layui.layer; + var util = layui.util; + var admin = layui.admin; + + //时间格式 + var laydate = layui.laydate; + //执行一个laydate实例 + laydate.render({ + elem: '#test1' //指定元素 + }); + laydate.render({ + elem: '#test2' //指定元素 + }); + + // 渲染表格 + table.render({ + elem: '#app-table', + url: config.base_server + 'api-user/sysdictionaries', + method: 'GET', + headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, + page: true, + cols: [[ + { type: 'numbers' }, + { + field: 'dictionariesClassId', width: 180, sort: true, title: '字典类型', templet: function (d) { + return d.dictionariesClassId == undefined ? "分类" : "字典" + } + }, + { field: 'dictionariesClassName', width: 200, sort: true, title: '字典分类' }, + { field: 'dictionariesKey', width: 180, sort: true, title: '字典Key' }, + { field: 'dictionariesName', width: 264, sort: true, title: '字典值' }, + { field: 'id', width: 250, align: 'center', toolbar: '#dictionaries-tpl-state', sort: true, title: '状态' },// 0就诊数据 1筛查 + { field: 'createTime', width: 250, sort: true, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy年MM月dd日 HH:mm:ss')}}</div>" }, + { field: 'id', width: 250, align: 'center', toolbar: '#dictionaries-table-bar', sort: true, title: '操作' },// 0就诊数据 1筛查 + ]] + }); + + // 修改菜单类型 + let changeType = function (type) { + + if (type == 1) { + $('#role_clients').attr('disabled', true); + $('#role_clients').val(""); + } else { + $('#role_clients').attr('disabled', false); + } + form.render('select', 'app-form'); + }; + + // 工具条点击事件 + table.on('tool(app-table)', function (obj) { + var data = obj.data; + var layEvent = obj.event; + if (layEvent === 'edit') { // 查看详情 + showEditModel(data); + } else if (layEvent === 'del') { + doDelete(data); + } + }); + function ccc() { + console.log(11111111) + } + // 删除 + var doDelete = function (obj) { + layer.confirm('确定删除此用户吗?', function (i) { + layer.close(i); + layer.load(2); + admin.req('api-user/sysdictionaries/' + obj.id, {}, function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + layer.msg(data.msg, { icon: 1, time: 500 }); + table.reload('app-table', {}); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'delete'); + }); + }; + + // 获取应用列表 + var getdata = function () { + var co = $('#role_clients'); + console.log(11111111111111); + console.log(co); + admin.req('api-user/sysdictionaries/findAll', JSON.stringify({ dictionariesClassIdIsNull: "str" }), function (data) { + layer.closeAll('loading'); + if (0 === data.code) { + console.log(123132132132132132) + let selected = false; + clientsAll = data; + $.each(data.data, function (index, item) { + //往下拉菜单里添加元素 + // console.log(JSON.stringify(item)) + $('#role_clients').append(new Option(item.dictionariesName, item.id, false, selected)); + }) + form.render(); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, 'Post'); + } + + + // 搜索按钮点击事件 + $('#app-btn-search').click(function () { + var key = $('#app-edit-search').val(); + table.reload('app-table', { where: { dictionariesName: key } }); + }); + // 修改role状态 + form.on('switch(dictionaries-tpl-state)', function (obj) { + layer.load(2); + admin.req('api-user/sysdictionaries/updateEnabled', { + id: obj.elem.value, + enabled: obj.elem.checked ? 1 : 0 + }, function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + // layer.msg(data.msg, { icon: 1, time: 500 }); + table.reload('app-table', {}); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + $(obj.elem).prop('checked', !obj.elem.checked); + form.render('checkbox'); + } + }, 'GET'); + }); + // // 显示编辑弹窗 + var showEditModel = function (data) { + + layer.open({ + type: 1, + title: data ? '修改用户' : '添加用户', + area: '400px', + offset: '200px', + content: $('#app-model').html(), + success: function () { + $('#app-form')[0].reset(); + $('#app-form').attr('method', 'POST'); + // 将数据绑定到下拉框 + getdata(); + if (data) { + if (data.enabled == 1) { + $("#enabled1").attr('checked', true); + } else { + $("#enabled2").attr('checked', true); + } + if (data.dictionariesClassId == undefined || data.dictionariesClassId == "") { + $("#fenlei").attr('checked', true); + $("#role_clients").attr('disabled', true); + } else { + $("#zidian").attr('checked', true); + } + form.val('app-form', data); + } + } + }); + }; + // 添加按钮点击事件 + $('#user-btn-add').click(function () { + showEditModel(); + }); + // + // 表单提交事件 + form.on('submit(user-form-submit)', function (data) { + layer.load(2); + if (data.field.dictionariesClassId == "") { + data.field.dictionariesClassId = null; + } + admin.req('api-user/sysdictionaries', JSON.stringify(data.field), function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + // layer.msg(data.msg, { icon: 1, time: 500 }); + layer.closeAll(); + table.reload('app-table', {}); + } else { + layer.msg(data.msg, { icon: 2, time: 500 }); + } + }, "POST"); + return false; + }); + + form.on("radio(resourceType)", function (data) { + changeType(data.value); + }); + }); +</script> \ No newline at end of file diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/sysArea.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/sysArea.html new file mode 100644 index 0000000..2782d31 --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/sysArea.html @@ -0,0 +1,187 @@ +<div class="layui-card"> + <div class="layui-card-header"> + <h2 class="header-title">地区管理</h2> + <span class="layui-breadcrumb pull-right"> + <a href="#!console">首页</a> + <a><cite>地区管理</cite></a> + </span> + </div> + <div class="layui-card-body"> + <div class="layui-form toolbar">  + <input id="area-search-value" class="layui-input search-input" type="text" placeholder="输入地区名称"/>  + <button id="area-btn-search" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索</button> + <button id="area-btn-add" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button> + <button id="area-btn-expand" class="layui-btn">全部展开</button> + <button id="area-btn-fold" class="layui-btn">全部折叠</button> + </div> + + <table class="layui-table" id="area-table" lay-filter="area-table"></table> + </div> +</div> + +<!-- 表格操作列 --> +<script type="text/html" id="area-table-bar"> + <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">编辑</a> + <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> +</script> + +<!-- 表格状态列 --> +<script type="text/html" id="area-tpl-state"> + <input type="checkbox" lay-filter="area-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" + {{d.enabled==true?'checked':''}}/> +</script> + +<script> + layui.use(['form', 'util', 'config', 'admin','treetable','table'],function () { + let layer = layui.layer; + let admin = layui.admin; + let treetable = layui.treetable; + let config = layui.config; + let form = layui.form; + let table=layui.table; + + // 渲染表格 + var renderTable = function (param) { + layer.load(2); + if (param) { + param.access_token = config.getToken().access_token; + } else { + param = { + access_token: config.getToken().access_token + }; + } + treetable.render({ + treeColIndex: 0, + treeSpid: -1, + treeIdName: 'id', + treePidName: 'areaParentId', + elem: '#area-table', + url: config.base_server + 'api-user/sysarea/findAlls', + where: param, + page: false, + cols: [[ + {field: 'areaName', minWidth: 200, title: '区域名称'}, + {field: 'areaCh', align: 'center', title: '拼音'}, + {field: 'areaShortname', minWidth: 80, title: '简称'}, + {field: 'areaCitycode', title: '区号'}, + {field: 'areaZipcode', title: '邮编'}, + {field: 'sort', width: 80, align: 'center', title: '排序号'}, + { + field: 'areaLeveltype', width: 80, align: 'center', templet: function (d) { + switch(d.areaLeveltype){ + case 0: + return '<span class="layui-badge layui-bg-red">国家</span>'; + break; + case 1: + return '<span class="layui-badge layui-bg-blue">省/行政区</span>'; + break; + case 2: + return '<span class="layui-badge layui-bg-gray">市</span>'; + break; + case 3: + return '<span class="layui-badge layui-bg-green">区/县</span>'; + break; + } + }, title: '级别' + }, + {field: 'enabled', width: 100,sort: true, templet: '#area-tpl-state', title: '状态'}, + {templet: '#area-table-bar', width: 120, align: 'center', title: '操作'} + ]], + done: function () { + layer.closeAll('loading'); + } + }); + }; + renderTable(); + + // 修改状态 + form.on('switch(area-tpl-state)', function (obj) { + layer.load(2); + admin.req('api-user/sysarea/updateEnabled', { + id: obj.elem.value, + enabled: obj.elem.checked ? true : false + }, function (data) { + layer.closeAll('loading'); + if (data.code == 0) { + layer.msg(data.msg, {icon: 1, time: 500}); + } else { + layer.msg(data.msg, {icon: 2, time: 500}); + $(obj.elem).prop('checked', !obj.elem.checked); + form.render('checkbox'); + } + }, 'GET'); + }); + + // 工具条点击事件 + table.on('tool(area-table)', function (obj) { + if (obj.event === 'del') { // 删除 + layer.confirm('确定要删除吗?', function (i) { + layer.close(i); + layer.load(2); + admin.req('api-user/sysarea/'+obj.data.id, {}, function (data) { + layer.closeAll('loading'); + layer.msg(data.msg, {icon: 1, time: 800},function(){ + renderTable(); + }); + obj.del(); + }, 'DELETE'); + }); + } + else if(obj.event=='edit') + { + showEditModel(obj.data); + } + }); + + // 显示编辑弹窗 + var showEditModel = function (data) { + let title = data ? '修改区域' : '添加区域'; + if (!data){ + data = {}; + } + admin.putTempData('t_area', data); + + admin.popupCenter({ + title: title, + path: 'pages/system/sysarea_form.html', + finish: function () { + renderTable(); + } + }); + }; + + // 搜索按钮点击事件 + $('#area-btn-search').click(function () { + var keyword = $('#area-search-value').val(); + var searchCount = 0; + $('#area-table').next('.treeTable').find('.layui-table-body tbody tr td').each(function () { + $(this).css('background-color', 'transparent'); + var text = $(this).text(); + if (keyword !== '' && text.indexOf(keyword) >= 0) { + $(this).css('background-color', 'rgba(250,230,160,0.5)'); + if (searchCount === 0) { + $('.layui-tab-item.layui-show').stop(true); + $('.layui-tab-item.layui-show').animate({scrollTop: $(this).offset().top - 150}, 500); + } + searchCount++; + } + }); + if (keyword !== '' && searchCount === 0) { + layer.msg("没有匹配结果", {icon: 5, time: 500}); + } else { + treetable.expandAll('#area-table'); + } + }); + $('#area-btn-expand').click(function () { + treetable.expandAll('#area-table'); + }); + + $('#area-btn-fold').click(function () { + treetable.foldAll('#area-table'); + }); + // 添加按钮点击事件 + $('#area-btn-add').click(function () { + showEditModel(); + }); + }); +</script> diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/sysArea_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/sysArea_form.html new file mode 100644 index 0000000..61d4536 --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/sysArea_form.html @@ -0,0 +1,110 @@ +<!-- 菜单弹框 --> +<form id="area-form" lay-filter="area-form" class="layui-form model-form" method="POST"> + <div class="layui-form-item"> + <label class="layui-form-label">区域级别</label> + <div class="layui-input-block"> + <select name="areaLeveltype" id="areaLeveltype"> + <option value="">请选择</option> + <option value="0">国家</option> + <option value="1">省/行政区</option> + <option value="2">市</option> + <option value="3">区县</option> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">区域编号</label> + <div class="layui-input-block"> + <input id="Id" name="id" placeholder="请输入区域编号" type="text" class="layui-input" maxlength="20" + lay-verify="required" required/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">区域名称</label> + <div class="layui-input-block"> + <input name="areaName" placeholder="请输入区域名称" type="text" class="layui-input" maxlength="50" + lay-verify="required" required/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">简称</label> + <div class="layui-input-block"> + <input name="areaShortname" type="text" class="layui-input" maxlength="50"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">拼音名称</label> + <div class="layui-input-block"> + <input name="areaCh" type="text" class="layui-input" maxlength="50"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">父级编号</label> + <div class="layui-input-block"> + <input name="areaParentId" type="text" class="layui-input" maxlength="20"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">区号</label> + <div class="layui-input-block"> + <input name="areaCitycode" type="text" class="layui-input"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">邮编</label> + <div class="layui-input-block"> + <input name="areaZipcode" type="text" class="layui-input"/> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">纬度</label> + <div class="layui-input-block"> + <input name="areaLng" type="text" class="layui-input"/> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">经度</label> + <div class="layui-input-block"> + <input name="areaLat" type="text" class="layui-input"/> + </div> + </div> + + <div class="layui-form-item model-form-footer"> + <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button> + <button class="layui-btn" lay-filter="area-form-submit" lay-submit>保存</button> + </div> + <input name="enabled" type="hidden" /> + <input name="isDel" type="hidden" /> +</form> + +<script> + layui.use(['layer', 'admin', 'form'],function () { + var layer = layui.layer; + var admin = layui.admin; + var form = layui.form; + + // 回显menu数据 + let area = admin.getTempData('t_area'); + if(area){ + form.val('area-form', area); + $("#Id").attr("enabled","false"); + } + // 表单提交事件 + form.on('submit(area-form-submit)', function (data) { + layer.load(2); + admin.req('api-user/sysarea', JSON.stringify(data.field), function (data) { + if (data.code === 0) { + layer.closeAll('loading'); + layer.msg(data.msg, {icon: 1, time: 500}); + admin.finishPopupCenter(); + } else { + layer.closeAll('loading'); + layer.msg(data.msg, {icon: 2, time: 500}); + } + }, $('#area-form').attr('method')); + return false; + }); + }); +</script> \ No newline at end of file -- Gitblit v1.8.0