From ad0b75173703667d45e4ad0b322107bf4fefc9a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8E=89=E7=90=A6?= <7507756+jiang_yuqi@user.noreply.gitee.com> Date: Tue, 17 Dec 2024 20:25:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4daim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 + yanzhu-common/yanzhu-common-core/pom.xml | 7 + .../common/core/enums/ApproveStatus.java | 1 + .../common/core/enums/DataSourceEnuns.java | 30 + .../yanzhu/common/core/enums/ShiFouEnums.java | 37 + .../common/core/utils/file/FileUtils.java | 10 + .../common/core/web/domain/BaseEntity.java | 14 + .../com/yanzhu/manage/domain/BusExamUser.java | 27 +- .../manage/domain/BusExamUserResult.java | 15 +- .../manage/domain/BusTrainingVideoUser.java | 28 + .../manage/domain/ProProjectInfoSubdepts.java | 39 + .../domain/ProProjectInfoSubdeptsUsers.java | 36 +- .../manage/mapper/BusExamUserMapper.java | 14 + .../manage/mapper/BusTrainingVideoMapper.java | 8 + .../mapper/BusTrainingVideoUserMapper.java | 18 + .../ProProjectInfoSubdeptsUsersMapper.java | 10 + .../mapper/manage/BusExamUserMapper.xml | 45 +- .../mapper/manage/BusTrainingVideoMapper.xml | 17 + .../manage/BusTrainingVideoUserMapper.xml | 25 +- .../manage/ProProjectInfoSubdeptsMapper.xml | 15 +- .../ProProjectInfoSubdeptsUsersMapper.xml | 25 +- .../handler/GatewayExceptionHandler.java | 2 + .../file/controller/SysFileController.java | 22 + .../yanzhu/file/utils/FileUploadUtils.java | 31 +- .../controller/ProProjectInfoController.java | 1 + .../controller/wechat/WxController.java | 159 ++ .../yanzhu/manage/domain/SignetFileVo.java | 31 + .../com/yanzhu/manage/domain/VideoMenuVo.java | 27 + .../yanzhu/manage/enums/CraftTypeEnums.java | 31 + .../yanzhu/manage/enums/SubDeptsEnums.java | 38 + .../yanzhu/manage/enums/craftPostEnums.java | 28 + .../manage/service/IBusExamUserService.java | 18 +- .../service/IBusTrainingVideoService.java | 10 + .../service/IBusTrainingVideoUserService.java | 18 + .../IProProjectInfoSubdeptsService.java | 11 + .../IProProjectInfoSubdeptsUsersService.java | 15 + .../service/impl/BusExamUserServiceImpl.java | 166 ++- .../impl/BusTrainingVideoServiceImpl.java | 77 + .../impl/BusTrainingVideoUserServiceImpl.java | 92 ++ .../impl/ProProjectInfoServiceImpl.java | 35 + .../ProProjectInfoSubdeptsServiceImpl.java | 208 ++- ...roProjectInfoSubdeptsUsersServiceImpl.java | 41 + .../src/main/resources/bootstrap.yml | 4 + yanzhu-ui-app/miniprogram/api/busEdu.js | 61 + yanzhu-ui-app/miniprogram/api/login.js | 11 +- yanzhu-ui-app/miniprogram/api/project.js | 72 +- yanzhu-ui-app/miniprogram/app.js | 9 +- yanzhu-ui-app/miniprogram/app.json | 2 +- yanzhu-ui-app/miniprogram/app.wxss | 35 +- .../components/select-group-position/index.js | 122 ++ .../select-group-position/index.json | 4 + .../select-group-position/index.wxml | 38 + .../select-group-position/index.wxss | 129 ++ yanzhu-ui-app/miniprogram/config.js | 1 + .../miniprogram/images/exam-icon.png | Bin 0 -> 704 bytes .../miniprogram/images/loading_i.gif | Bin 0 -> 35941 bytes .../miniprogram/images/radio-selected.png | Bin 0 -> 547 bytes yanzhu-ui-app/miniprogram/images/radio.png | Bin 0 -> 515 bytes .../miniprogram/images/todaySubmit2.png | Bin 0 -> 17539 bytes .../@vant/weapp/checkbox/index.wxss | 2 +- .../@vant/weapp/radio/index.wxss | 2 +- .../@vant/weapp/steps/index.js | 4 + .../@vant/weapp/steps/index.wxml | 3 +- .../@vant/weapp/steps/index.wxss | 2 +- .../pages/components/file-uploader/index.js | 4 + .../pages/components/file-uploader/index.wxml | 2 +- .../pages/components/file-uploader/index.wxss | 17 + .../pages/components/sign/sign.wxml | 6 +- .../pages/components/sign/sign.wxss | 4 + .../miniprogram/pages/index/index.js | 211 --- .../miniprogram/pages/index/index.json | 4 - .../miniprogram/pages/index/index.wxml | 82 -- .../miniprogram/pages/index/index.wxss | 64 - .../miniprogram/pages/login/login.js | 2 +- .../miniprogram/pages/login/login.json | 3 +- .../miniprogram/pages/login/login.wxml | 3 + .../miniprogram/pages/login/login.wxss | 8 +- .../miniprogram/pages/project_qr/index.js | 1296 ++++++++++++++++- .../miniprogram/pages/project_qr/index.json | 10 +- .../miniprogram/pages/project_qr/index.wxml | 830 ++++++++++- .../miniprogram/pages/project_qr/index.wxss | 326 ++++- yanzhu-ui-app/miniprogram/project.config.json | 3 +- .../miniprogram/project.private.config.json | 9 +- yanzhu-ui-app/miniprogram/utils/request.js | 71 +- yanzhu-ui-app/miniprogram/utils/tools.wxs | 17 + yanzhu-ui-app/project.private.config.json | 2 +- .../views/manage/busTrainingVideo/index.vue | 3 +- .../manage/proProjectInfoSubdepts/index.vue | 6 + 88 files changed, 4383 insertions(+), 584 deletions(-) create mode 100644 yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/DataSourceEnuns.java create mode 100644 yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ShiFouEnums.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/wechat/WxController.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/SignetFileVo.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/VideoMenuVo.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftTypeEnums.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/SubDeptsEnums.java create mode 100644 yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/craftPostEnums.java create mode 100644 yanzhu-ui-app/miniprogram/api/busEdu.js create mode 100644 yanzhu-ui-app/miniprogram/components/select-group-position/index.js create mode 100644 yanzhu-ui-app/miniprogram/components/select-group-position/index.json create mode 100644 yanzhu-ui-app/miniprogram/components/select-group-position/index.wxml create mode 100644 yanzhu-ui-app/miniprogram/components/select-group-position/index.wxss create mode 100644 yanzhu-ui-app/miniprogram/images/exam-icon.png create mode 100644 yanzhu-ui-app/miniprogram/images/loading_i.gif create mode 100644 yanzhu-ui-app/miniprogram/images/radio-selected.png create mode 100644 yanzhu-ui-app/miniprogram/images/radio.png create mode 100644 yanzhu-ui-app/miniprogram/images/todaySubmit2.png delete mode 100644 yanzhu-ui-app/miniprogram/pages/index/index.js delete mode 100644 yanzhu-ui-app/miniprogram/pages/index/index.json delete mode 100644 yanzhu-ui-app/miniprogram/pages/index/index.wxml delete mode 100644 yanzhu-ui-app/miniprogram/pages/index/index.wxss create mode 100644 yanzhu-ui-app/miniprogram/utils/tools.wxs diff --git a/pom.xml b/pom.xml index 810ba83a..a30f192f 100644 --- a/pom.xml +++ b/pom.xml @@ -38,6 +38,7 @@ 4.0.6.B 4.0.6.B 2.14.2 + 5.8.20 diff --git a/yanzhu-common/yanzhu-common-core/pom.xml b/yanzhu-common/yanzhu-common-core/pom.xml index 0d5885d0..474002f4 100644 --- a/yanzhu-common/yanzhu-common-core/pom.xml +++ b/yanzhu-common/yanzhu-common-core/pom.xml @@ -136,5 +136,12 @@ weixin-java-miniapp + + + cn.hutool + hutool-core + ${hutool.version} + + diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ApproveStatus.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ApproveStatus.java index 392113d7..4bfeb749 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ApproveStatus.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ApproveStatus.java @@ -5,6 +5,7 @@ package com.yanzhu.common.core.enums; */ public enum ApproveStatus { + await(0L, "待提交"), check(10L, "审核中"), refuse(11L, "审核驳回"), exempt(100L, "审核通过"), diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/DataSourceEnuns.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/DataSourceEnuns.java new file mode 100644 index 00000000..0d5e8993 --- /dev/null +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/DataSourceEnuns.java @@ -0,0 +1,30 @@ +package com.yanzhu.common.core.enums; + +/** + * 数据来源 + */ +public enum DataSourceEnuns { + + APP("1", "小程序数据"), + WEB("2", "客户端数据"); + + private final String code; + private final String info; + + DataSourceEnuns(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } + +} diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ShiFouEnums.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ShiFouEnums.java new file mode 100644 index 00000000..95dfb544 --- /dev/null +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ShiFouEnums.java @@ -0,0 +1,37 @@ +package com.yanzhu.common.core.enums; + +/** + * 是否枚举... + */ +public enum ShiFouEnums { + + FOU(0L, "0", "否"), + SHI(1L, "1", "是"); + + private final Long code; + private final String codeStr; + private final String info; + + ShiFouEnums(Long code, String codeStr, String info) + { + this.code = code; + this.codeStr = codeStr; + this.info = info; + } + + public Long getCode() + { + return code; + } + + public String getCodeStr() + { + return codeStr; + } + + public String getInfo() + { + return info; + } + +} diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/file/FileUtils.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/file/FileUtils.java index ef00c7db..dc292e2b 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/file/FileUtils.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/file/FileUtils.java @@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.yanzhu.common.core.utils.StringUtils; +import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.ArrayUtils; /** @@ -247,6 +248,15 @@ public class FileUtils response.setHeader("download-filename", percentEncodedFileName); } + /** + * 获取图谱真实映射路径 + * @param fileName + * @return + */ + public static String getFileExt(String fileName){ + return FilenameUtils.getExtension(fileName); + } + /** * 百分号编码工具方法 * diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/web/domain/BaseEntity.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/web/domain/BaseEntity.java index 4683bd09..710bbf43 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/web/domain/BaseEntity.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/web/domain/BaseEntity.java @@ -4,9 +4,12 @@ import java.io.Serializable; import java.util.Date; import java.util.HashMap; import java.util.Map; +import java.util.Objects; + import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; +import com.yanzhu.common.core.enums.DataSourceEnuns; /** * Entity基类 @@ -56,6 +59,9 @@ public class BaseEntity implements Serializable /** 选中页签 */ private Long currentUserId; + /** 数据来源 */ + private String dataSource; + /** 请求参数 */ @JsonInclude(JsonInclude.Include.NON_EMPTY) private Map params; @@ -181,4 +187,12 @@ public class BaseEntity implements Serializable public void setActiveProjectName(String activeProjectName) { this.activeProjectName = activeProjectName; } + + public String getDataSource() { + return Objects.isNull(dataSource)? DataSourceEnuns.WEB.getCode():dataSource; + } + + public void setDataSource(String dataSource) { + this.dataSource = dataSource; + } } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusExamUser.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusExamUser.java index 42b6d9c2..292efd38 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusExamUser.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusExamUser.java @@ -75,6 +75,14 @@ public class BusExamUser extends BaseEntity @Excel(name = "判断题数量") private String estimateNum; + /** 用户分数 */ + @Excel(name = "用户分数") + private Long fullMark; + + /** 用户分数 */ + @Excel(name = "用户分数") + private Long passMark; + /** 用户分数 */ @Excel(name = "用户分数") private Long userMark; @@ -227,7 +235,24 @@ public class BusExamUser extends BaseEntity { return estimateNum; } - public void setUserMark(Long userMark) + + public Long getFullMark() { + return fullMark; + } + + public void setFullMark(Long fullMark) { + this.fullMark = fullMark; + } + + public Long getPassMark() { + return passMark; + } + + public void setPassMark(Long passMark) { + this.passMark = passMark; + } + + public void setUserMark(Long userMark) { this.userMark = userMark; } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusExamUserResult.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusExamUserResult.java index a2fd8c53..cf5e5cac 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusExamUserResult.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusExamUserResult.java @@ -49,6 +49,10 @@ public class BusExamUserResult extends BaseEntity @Excel(name = "答题结果") private String useRes; + /** 问题分数 */ + @Excel(name = "问题分数") + private String mark; + /** 答题得分 */ @Excel(name = "答题得分") private String useMark; @@ -133,7 +137,16 @@ public class BusExamUserResult extends BaseEntity { return useRes; } - public void setUseMark(String useMark) + + public String getMark() { + return mark; + } + + public void setMark(String mark) { + this.mark = mark; + } + + public void setUseMark(String useMark) { this.useMark = useMark; } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusTrainingVideoUser.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusTrainingVideoUser.java index 7cc0d8a6..7990d188 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusTrainingVideoUser.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/BusTrainingVideoUser.java @@ -1,10 +1,13 @@ package com.yanzhu.manage.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import com.yanzhu.common.core.annotation.Excel; import com.yanzhu.common.core.web.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.Date; + /** * 用户培训视频对象 bus_training_video_user * @@ -48,10 +51,19 @@ public class BusTrainingVideoUser extends BaseEntity @Excel(name = "视频主键") private Long videoId; + /** 播放时长 */ + @Excel(name = "播放时长") + private String playTimes; + /** 播放状态 */ @Excel(name = "播放状态") private Long playStatus; + /** 播放时间 */ + @Excel(name = "播放时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date playDates; + /** 排序 */ @Excel(name = "排序") private Long sortBy; @@ -225,6 +237,22 @@ public class BusTrainingVideoUser extends BaseEntity this.trainFileImage = trainFileImage; } + public String getPlayTimes() { + return playTimes; + } + + public void setPlayTimes(String playTimes) { + this.playTimes = playTimes; + } + + public Date getPlayDates() { + return playDates; + } + + public void setPlayDates(Date playDates) { + this.playDates = playDates; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProProjectInfoSubdepts.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProProjectInfoSubdepts.java index ac11d50a..8d785c57 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProProjectInfoSubdepts.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProProjectInfoSubdepts.java @@ -83,6 +83,16 @@ public class ProProjectInfoSubdepts extends BaseEntity @Excel(name = "进场时间") private Date useDates; + /** 进场时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "进场时间") + private Date startWorkDates; + + /** 进场时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "进场时间") + private Date endWorkDates; + /** 进场状态 */ @Excel(name = "进场状态") private String useStatus; @@ -106,6 +116,11 @@ public class ProProjectInfoSubdepts extends BaseEntity /** 委托人半身照片 */ private String leaderUserPicture; + /** + * 用户信息 + */ + private ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers; + public void setId(Long id) { this.id = id; @@ -315,6 +330,30 @@ public class ProProjectInfoSubdepts extends BaseEntity this.leaderUserPicture = leaderUserPicture; } + public Date getStartWorkDates() { + return startWorkDates; + } + + public void setStartWorkDates(Date startWorkDates) { + this.startWorkDates = startWorkDates; + } + + public Date getEndWorkDates() { + return endWorkDates; + } + + public void setEndWorkDates(Date endWorkDates) { + this.endWorkDates = endWorkDates; + } + + public ProProjectInfoSubdeptsUsers getProProjectInfoSubdeptsUsers() { + return proProjectInfoSubdeptsUsers; + } + + public void setProProjectInfoSubdeptsUsers(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers) { + this.proProjectInfoSubdeptsUsers = proProjectInfoSubdeptsUsers; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProProjectInfoSubdeptsUsers.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProProjectInfoSubdeptsUsers.java index a1dde3ee..3ea2d53f 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProProjectInfoSubdeptsUsers.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProProjectInfoSubdeptsUsers.java @@ -19,7 +19,6 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity { private static final long serialVersionUID = 1L; - @Excel(name = "所属项目") private String projectName; /** 分包单位名称 */ @@ -56,8 +55,6 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity private String subDeptType; - - /** 用户主键 */ private Long userId; @@ -81,6 +78,10 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity @Excel(name = "工种岗位") private String craftPostName; + /** 委托书 */ + @Excel(name = "委托书") + private String subDeptPowerPath; + @Excel(name = "状态") private String enterState; /** 学习状态 */ @@ -130,6 +131,11 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity private Long supIllnessStatus; + private String phoneNumber; + + /** 劳务人员学历 */ + private String degreeGrade; + public String getEnterState() { return enterState; } @@ -416,6 +422,30 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity this.projectName = projectName; } + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getDegreeGrade() { + return degreeGrade; + } + + public void setDegreeGrade(String degreeGrade) { + this.degreeGrade = degreeGrade; + } + + public String getSubDeptPowerPath() { + return subDeptPowerPath; + } + + public void setSubDeptPowerPath(String subDeptPowerPath) { + this.subDeptPowerPath = subDeptPowerPath; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusExamUserMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusExamUserMapper.java index 3ef481e2..e81c8cab 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusExamUserMapper.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusExamUserMapper.java @@ -77,6 +77,13 @@ public interface BusExamUserMapper */ public int batchBusExamUserResult(List busExamUserResultList); + /** + * 批量新增用户试卷结果 + * + * @param examUserId 用户试卷主键 + * @return 结果 + */ + public List selectBusExamUserResultByExamUserId(Long examUserId); /** * 通过用户试卷主键删除用户试卷结果信息 @@ -85,4 +92,11 @@ public interface BusExamUserMapper * @return 结果 */ public int deleteBusExamUserResultByExamUserId(Long id); + + /** + * 修改用户答题结果 + * @param busExamUserResult + * @return + */ + public int updateBusExamUserResult(BusExamUserResult busExamUserResult); } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusTrainingVideoMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusTrainingVideoMapper.java index 2333026f..ca247ccb 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusTrainingVideoMapper.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusTrainingVideoMapper.java @@ -29,6 +29,14 @@ public interface BusTrainingVideoMapper */ public List selectBusTrainingVideoList(BusTrainingVideo busTrainingVideo); + /** + * 查询培训视频列表 + * + * @param busTrainingVideo 培训视频 + * @return 培训视频集合 + */ + public List> selectBusTrainingVideoListGroup(BusTrainingVideo busTrainingVideo); + /** * 统计培训视频列表 * diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusTrainingVideoUserMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusTrainingVideoUserMapper.java index c0a0409d..2a6b189c 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusTrainingVideoUserMapper.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/BusTrainingVideoUserMapper.java @@ -1,6 +1,7 @@ package com.yanzhu.manage.mapper; import com.yanzhu.manage.domain.BusTrainingVideoUser; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -52,6 +53,15 @@ public interface BusTrainingVideoUserMapper */ public int deleteBusTrainingVideoUserById(Long id); + /** + * 删除用户培训视频 + * + * @param proId 项目主键 + * @param userId 用户主键 + * @return 结果 + */ + public int deleteBusTrainingVideoUserByParams(@Param("proId")Long proId, @Param("userId")Long userId); + /** * 批量删除用户培训视频 * @@ -59,4 +69,12 @@ public interface BusTrainingVideoUserMapper * @return 结果 */ public int deleteBusTrainingVideoUserByIds(Long[] ids); + + /** + * 批量新增用户培训视频 + * + * @param busTrainingVideoUserList 培训视频列表 + * @return 结果 + */ + public int batchBusTrainingVideoUser(List busTrainingVideoUserList); } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProProjectInfoSubdeptsUsersMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProProjectInfoSubdeptsUsersMapper.java index fa65c709..9be759bd 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProProjectInfoSubdeptsUsersMapper.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProProjectInfoSubdeptsUsersMapper.java @@ -2,6 +2,7 @@ package com.yanzhu.manage.mapper; import java.util.List; import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; +import org.apache.ibatis.annotations.Param; /** * 分包单位工人Mapper接口 @@ -19,6 +20,15 @@ public interface ProProjectInfoSubdeptsUsersMapper */ public ProProjectInfoSubdeptsUsers selectProProjectInfoSubdeptsUsersById(Long id); + /** + * 查询分包单位工人 + * + * @param proId 项目主键 + * @param userId 工人主键 + * @return 分包单位工人 + */ + public ProProjectInfoSubdeptsUsers selectProProjectInfoSubdeptsUsersByParamId(@Param("proId")Long proId, @Param("userId")Long userId); + /** * 查询分包单位工人列表 * diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BusExamUserMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BusExamUserMapper.xml index 6b81e86d..36c4f0a7 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BusExamUserMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BusExamUserMapper.xml @@ -20,6 +20,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -35,6 +37,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + @@ -45,11 +61,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select beu.id, beu.com_id, sd.dept_name as com_name, beu.project_id, pi.project_name, beu.user_id, su.nick_name as user_nick, su.user_name, beu.exam_title, beu.exam_type, beu.craft_type, beu.craft_post, beu.single_num, beu.multiple_num, beu.estimate_num, beu.user_mark, beu.res_status, beu.use_times, beu.is_del, beu.create_by, beu.create_time, beu.update_by, beu.update_time, beu.remark from bus_exam_user beu + select beu.id, beu.com_id, sd.dept_name as com_name, beu.project_id, pi.project_name, beu.user_id, su.nick_name as user_nick, su.user_name, beu.exam_title, beu.exam_type, beu.craft_type, beu.craft_post, beu.single_num, beu.multiple_num, beu.estimate_num, beu.full_mark, beu.pass_mark, beu.user_mark, beu.res_status, beu.use_times, beu.is_del, beu.create_by, beu.create_time, beu.update_by, beu.update_time, beu.remark from bus_exam_user beu left join pro_project_info pi on pi.id = beu.project_id left join sys_dept sd on sd.dept_id = pi.com_id left join sys_user su on su.user_id = beu.user_id @@ -78,7 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + select * from bus_exam_user_result where exam_user_id = #{examUserId} + + + + update bus_exam_user_result + + user_answer = #{userAnswer}, + use_res = #{useRes}, + use_mark = #{useMark}, + + where id = #{id} + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BusTrainingVideoMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BusTrainingVideoMapper.xml index d6d93a5f..69ee173c 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BusTrainingVideoMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/BusTrainingVideoMapper.xml @@ -55,6 +55,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by btv.id desc + + @@ -67,7 +68,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" project_id, user_id, video_id, + play_times, play_status, + play_dates, sort_by, is_del, create_by, @@ -81,7 +84,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{projectId}, #{userId}, #{videoId}, + #{playTimes}, #{playStatus}, + #{playDates}, #{sortBy}, #{isDel}, #{createBy}, @@ -99,7 +104,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" project_id = #{projectId}, user_id = #{userId}, video_id = #{videoId}, + play_times = #{playTimes}, play_status = #{playStatus}, + play_dates = #{playDates}, sort_by = #{sortBy}, is_del = #{isDel}, create_by = #{createBy}, @@ -115,10 +122,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update bus_training_video_user set is_del=2 where id = #{id} + + delete from bus_training_video_user where project_id = #{proId} and user_id = #{userId} + + update bus_training_video_user set is_del=2 where id in #{id} + + + insert into bus_training_video_user( id, com_id, project_id, user_id, video_id, play_times, play_status, play_dates, sort_by, is_del, create_by, create_time, update_by, update_time, remark) values + + ( #{item.id}, #{item.comId}, #{item.projectId}, #{item.userId}, #{item.videoId}, #{item.playTimes}, #{item.playStatus}, #{item.playDates}, #{item.sortBy}, #{item.isDel}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}) + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsMapper.xml index 1dc044b3..3950f568 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsMapper.xml @@ -17,11 +17,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + @@ -34,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select ps.id, ps.com_id, sd.dept_name as com_name, ps.project_id, pi.project_name, ps.sub_dept_type, ps.sub_dept_name, ps.sub_dept_code, ps.sub_dept_leader_id, ps.sub_dept_leader_name, ps.sub_dept_leader_code, ps.sub_dept_leader_phone, ps.sub_dept_leader_power_path, ps.business_license_path, ps.sub_dept_infos, ps.contract_infos, ps.use_dates, ps.use_status, ps.approve_status, ps.qr_code, ps.is_del, ps.create_by, ps.create_time, ps.update_by, ps.update_time, ps.remark from pro_project_info_subdepts ps + select ps.id, ps.com_id, sd.dept_name as com_name, ps.project_id, pi.project_name, ps.sub_dept_type, ps.sub_dept_name, ps.sub_dept_code, ps.sub_dept_leader_id, ps.sub_dept_leader_name, ps.sub_dept_leader_code, ps.sub_dept_leader_phone, ps.business_license_path, ps.sub_dept_infos, ps.contract_infos, ps.use_dates, ps.start_work_dates, ps.end_work_dates, ps.use_status, ps.approve_status, ps.qr_code, ps.is_del, ps.create_by, ps.create_time, ps.update_by, ps.update_time, ps.remark from pro_project_info_subdepts ps left join pro_project_info pi on pi.id = ps.project_id left join sys_dept sd on sd.dept_id = pi.com_id @@ -53,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and ps.sub_dept_code = #{subDeptCode} and ps.use_status = #{useStatus} and ps.approve_status = #{approveStatus} + and ps.sub_dept_leader_phone = #{subDeptLeaderPhone} order by ps.id desc @@ -74,11 +76,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sub_dept_leader_name, sub_dept_leader_code, sub_dept_leader_phone, - sub_dept_leader_power_path, business_license_path, sub_dept_infos, contract_infos, use_dates, + start_work_dates, + end_work_dates, use_status, approve_status, qr_code, @@ -99,11 +102,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{subDeptLeaderName}, #{subDeptLeaderCode}, #{subDeptLeaderPhone}, - #{subDeptLeaderPowerPath}, #{businessLicensePath}, #{subDeptInfos}, #{contractInfos}, #{useDates}, + #{startWorkDates}, + #{endWorkDates}, #{useStatus}, #{approveStatus}, #{qrCode}, @@ -128,11 +132,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sub_dept_leader_name = #{subDeptLeaderName}, sub_dept_leader_code = #{subDeptLeaderCode}, sub_dept_leader_phone = #{subDeptLeaderPhone}, - sub_dept_leader_power_path = #{subDeptLeaderPowerPath}, business_license_path = #{businessLicensePath}, sub_dept_infos = #{subDeptInfos}, contract_infos = #{contractInfos}, use_dates = #{useDates}, + start_work_dates = #{startWorkDates}, + end_work_dates = #{endWorkDates}, use_status = #{useStatus}, approve_status = #{approveStatus}, qr_code = #{qrCode}, diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsUsersMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsUsersMapper.xml index 451add76..211a6b1a 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsUsersMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProProjectInfoSubdeptsUsersMapper.xml @@ -13,6 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -37,8 +38,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -61,19 +64,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT pi.project_name, psu.id, psu.com_id, psu.project_id, psu.sub_dept_id, psu.sub_dept_type, psu.sub_dept_name, psu.user_id, psu.sub_dept_group, + SELECT pi.project_name, psu.id, psu.com_id, psu.project_id, psu.sub_dept_id, psu.sub_dept_type, psu.sub_dept_name, psu.sub_dept_power_path, psu.user_id, psu.sub_dept_group, psu.sub_dept_group_name, psu.craft_type, psu.craft_post, psu.edu_status, psu.edu_file_path, psu.edu_sign_path, psu.edu_date, psu.approve_status, psu.use_status, psu.sub_step, psu.illness_status, psu.sup_illness_status, psu.is_del, psu.create_by, psu.create_time, psu.update_by, psu.update_time, - psu.remark,su.`user_name`,su.`nick_name`,su.`user_type`,su.`card_type`,su.`card_code`,su.admitGuid,su.admitGuid usAdmitGuid, + psu.remark, psu.degree_grade, su.`user_name`,su.`nick_name`,su.`user_type`,su.`card_type`,su.`card_code`,su.admitGuid,su.admitGuid usAdmitGuid, dic1.dict_label craft_type_name,dic2.dict_label craft_post_name,psu.enter_state,sd.dept_name comName, su.`user_picture`, su.`card_img_inv`,su.`card_img_pos`,su.`user_infos`,su.`email`,su.`phonenumber`,su.`sex`,su.`avatar`,su.`login_ip`,su.`login_date` FROM pro_project_info_subdepts_users psu LEFT JOIN sys_user su ON psu.user_id=su.user_id - LEFT JOIN pro_project_info PI ON pi.id = psu.project_id + LEFT JOIN pro_project_info pi ON pi.id = psu.project_id LEFT JOIN sys_dept sd ON sd.dept_id = pi.com_id LEFT JOIN sys_dict_data dic1 ON psu.`craft_type`=dic1.`dict_value` AND dic1.`dict_type`='pro_craft_type' LEFT JOIN sys_dict_data dic2 ON psu.`craft_post`=dic2.`dict_value` AND dic2.`dict_type`='pro_craft_post' - - + + + insert into pro_project_info_subdepts_users @@ -118,6 +127,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sub_dept_id, sub_dept_type, sub_dept_name, + sub_dept_power_path, user_id, sub_dept_group, sub_dept_group_name, @@ -139,6 +149,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by, update_time, remark, + degree_grade, #{comId}, @@ -146,6 +157,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{subDeptId}, #{subDeptType}, #{subDeptName}, + #{subDeptPowerPath}, #{userId}, #{subDeptGroup}, #{subDeptGroupName}, @@ -167,6 +179,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateBy}, #{updateTime}, #{remark}, + #{degreeGrade}, @@ -178,6 +191,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sub_dept_id = #{subDeptId}, sub_dept_type = #{subDeptType}, sub_dept_name = #{subDeptName}, + sub_dept_power_path = #{subDeptPowerPath}, user_id = #{userId}, sub_dept_group = #{subDeptGroup}, sub_dept_group_name = #{subDeptGroupName}, @@ -199,6 +213,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by = #{updateBy}, update_time = #{updateTime}, remark = #{remark}, + degree_grade = #{degreeGrade}, where id = #{id} diff --git a/yanzhu-gateway/src/main/java/com/yanzhu/gateway/handler/GatewayExceptionHandler.java b/yanzhu-gateway/src/main/java/com/yanzhu/gateway/handler/GatewayExceptionHandler.java index 9414062d..a72a213e 100644 --- a/yanzhu-gateway/src/main/java/com/yanzhu/gateway/handler/GatewayExceptionHandler.java +++ b/yanzhu-gateway/src/main/java/com/yanzhu/gateway/handler/GatewayExceptionHandler.java @@ -26,6 +26,8 @@ public class GatewayExceptionHandler implements ErrorWebExceptionHandler @Override public Mono handle(ServerWebExchange exchange, Throwable ex) { + log.info("[网关处理]请求路径:{}",exchange.getRequest().getPath()); + ServerHttpResponse response = exchange.getResponse(); if (exchange.getResponse().isCommitted()) diff --git a/yanzhu-modules/yanzhu-file/src/main/java/com/yanzhu/file/controller/SysFileController.java b/yanzhu-modules/yanzhu-file/src/main/java/com/yanzhu/file/controller/SysFileController.java index 6f66c6bd..33727d4a 100644 --- a/yanzhu-modules/yanzhu-file/src/main/java/com/yanzhu/file/controller/SysFileController.java +++ b/yanzhu-modules/yanzhu-file/src/main/java/com/yanzhu/file/controller/SysFileController.java @@ -46,6 +46,28 @@ public class SysFileController } } + /** + * 文件上传请求 + */ + @PostMapping("/NoSecurity/upload") + public R noSecurityUpload(MultipartFile file) + { + try + { + // 上传并返回访问地址 + String url = sysFileService.uploadFile(file); + SysFile sysFile = new SysFile(); + sysFile.setName(FileUtils.getName(url)); + sysFile.setUrl(url); + return R.ok(sysFile); + } + catch (Exception e) + { + log.error("上传文件失败", e); + return R.fail(e.getMessage()); + } + } + /** * 文件上传请求 */ diff --git a/yanzhu-modules/yanzhu-file/src/main/java/com/yanzhu/file/utils/FileUploadUtils.java b/yanzhu-modules/yanzhu-file/src/main/java/com/yanzhu/file/utils/FileUploadUtils.java index 0dd1649e..c00610e5 100644 --- a/yanzhu-modules/yanzhu-file/src/main/java/com/yanzhu/file/utils/FileUploadUtils.java +++ b/yanzhu-modules/yanzhu-file/src/main/java/com/yanzhu/file/utils/FileUploadUtils.java @@ -3,8 +3,12 @@ package com.yanzhu.file.utils; import java.io.File; import java.io.IOException; import java.nio.file.Paths; +import java.util.Arrays; import java.util.Objects; +import cn.hutool.core.img.ImgUtil; +import cn.hutool.core.io.FileUtil; +import com.yanzhu.common.core.utils.file.FileUtils; import com.yanzhu.common.core.utils.file.ImageUtils; import org.apache.commons.io.FilenameUtils; import org.springframework.web.multipart.MultipartFile; @@ -82,10 +86,35 @@ public class FileUploadUtils String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath(); file.transferTo(Paths.get(absPath)); - + // 压缩图片 + makeMiniImage(absPath); return getPathFileName(fileName); } + /** + * 图谱压缩 xx.min.jpg + * @param absPath + */ + private static void makeMiniImage(String absPath) { + try { + String ext = FileUtils.getFileExt(absPath).toLowerCase(); + String exts = Arrays.toString(new String[]{"jpg", "jpeg", "png", "bmp"}); + if (exts.contains(ext)) { + if (new File(absPath).exists()) { + int w = ImgUtil.read(FileUtil.file(absPath)).getWidth(); + if(w>2000) { + ImgUtil.scale(FileUtil.file(absPath), + FileUtil.file(absPath), (float) (2000.0 / w)); + } + ImgUtil.scale(FileUtil.file(absPath), + FileUtil.file(absPath + ".min.jpg"), (float) (300.0 / w)); + } + } + }catch (Exception ex){ + ex.printStackTrace(); + } + } + /** * 编码文件名 */ diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoController.java index 557d128f..f57f2dc9 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoController.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoController.java @@ -126,4 +126,5 @@ public class ProProjectInfoController extends BaseController List list = proProjectInfoService.selectProProjectInfoList(proProjectInfo); return getDataTable(list); } + } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/wechat/WxController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/wechat/WxController.java new file mode 100644 index 00000000..3f5a0c40 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/wechat/WxController.java @@ -0,0 +1,159 @@ +package com.yanzhu.manage.controller.wechat; + +import com.yanzhu.common.core.web.controller.BaseController; +import com.yanzhu.common.core.web.domain.AjaxResult; +import com.yanzhu.manage.domain.BusExamUser; +import com.yanzhu.manage.domain.ProProjectInfoSubdepts; +import com.yanzhu.manage.domain.SignetFileVo; +import com.yanzhu.manage.service.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +/** + * 项目信息Controller + * + * @author JiangYuQi + * @date 2024-08-25 + */ +@RestController +@RequestMapping("/wxApi") +public class WxController extends BaseController { + + @Autowired + private IBusExamUserService busExamUserService; + + @Autowired + private IBusTrainingVideoService busTrainingVideoService; + + @Autowired + private IBusTrainingVideoUserService busTrainingVideoUserService; + + @Autowired + private IProProjectInfoService proProjectInfoService; + + @Autowired + private IProProjectInfoSubdeptsService proProjectInfoSubdeptsService; + + @Autowired + private IProProjectInfoSubdeptsUsersService proProjectInfoSubdeptsUsersService; + + /** + * 获取我的项目列表 + */ + @GetMapping("/findProject/{id}") + public AjaxResult findProject(@PathVariable("id") Long id) + { + return success(proProjectInfoService.selectProProjectInfoById(id)); + } + + /** + * 新增分包单位 + */ + @PostMapping("/registerSubDepts") + public AjaxResult registerSubDepts(@RequestBody ProProjectInfoSubdepts proProjectInfoSubdepts) + { + int res; + if(Objects.isNull(proProjectInfoSubdepts.getId())){ + res = proProjectInfoSubdeptsService.insertProProjectInfoSubdepts(proProjectInfoSubdepts); + }else{ + res = proProjectInfoSubdeptsService.updateProProjectInfoSubdepts(proProjectInfoSubdepts); + } + return toAjax(res); + } + + /** + * 查询分包单位信息 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + */ + @GetMapping("/findProSubDeptsInfo") + public AjaxResult findProSubDeptsInfo(Long proId, String phoneNumber) + { + return success(proProjectInfoSubdeptsService.findProSubDeptsInfo(proId,phoneNumber)); + } + + /** + * 查询分包人员信息 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + */ + @GetMapping("/findProSubDeptsUser") + public AjaxResult findProSubDeptsUser(Long proId, String phoneNumber) + { + return success(proProjectInfoSubdeptsUsersService.findProSubDeptsUser(proId,phoneNumber)); + } + + /** + * 查询业务学习视频列表 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + */ + @GetMapping("/findBusTrainingVideos") + public AjaxResult findBusTrainingVideos(Long proId, String phoneNumber) + { + return success(busTrainingVideoService.findBusTrainingVideos(proId,phoneNumber)); + } + + /** + * 开始播放用户培训视频 + */ + @GetMapping("/startPlayUserEduVideo/{id}") + public AjaxResult startPlayUserEduVideo(@PathVariable("id")Long id) + { + busTrainingVideoUserService.startPlayUserEduVideo(id); + return success(); + } + + /** + * 结束播放用户培训视频 + */ + @GetMapping("/endPlayUserEduVideo/{id}") + public AjaxResult endPlayUserEduVideo(@PathVariable("id")Long id) + { + busTrainingVideoUserService.endPlayUserEduVideo(id); + return success(); + } + + /** + * 用户完成学习视频 + */ + @GetMapping("/finishEduVideo/{id}") + public AjaxResult finishEduVideo(@PathVariable("id")Long id) + { + busTrainingVideoUserService.finishEduVideo(id); + return success(); + } + + /** + * 查询业务考试试卷列表 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + */ + @GetMapping("/findBusExamInfos") + public AjaxResult findBusExamInfos(Long proId, String phoneNumber) + { + return success(busExamUserService.insertBusExamUser(proId,phoneNumber)); + } + + /** + * 提交试卷 + * @param busExamUser 项目信息 + */ + @PostMapping("/submitBusExamUser") + public AjaxResult submitBusExamUser(@RequestBody BusExamUser busExamUser) + { + return success(busExamUserService.submitBusExamUser(busExamUser)); + } + + /** + * 确认签署承诺书 + * @param signetFileVo 签署信息 + */ + @PostMapping("/submitUserSignets") + public AjaxResult submitUserSignets(@RequestBody SignetFileVo signetFileVo) + { + return success(proProjectInfoSubdeptsUsersService.submitUserSignets(signetFileVo)); + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/SignetFileVo.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/SignetFileVo.java new file mode 100644 index 00000000..1c41da1d --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/SignetFileVo.java @@ -0,0 +1,31 @@ +package com.yanzhu.manage.domain; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 签署文件对象 + */ +@ApiModel(description = "签署文件") +@Data +public class SignetFileVo { + + @ApiModelProperty("项目主键") + @NotNull(message = "项目主键不能为空") + private Long proId; + + @ApiModelProperty("联系电话") + @NotNull(message = "联系电话不能为空") + private String userPhone; + + @ApiModelProperty("图片") + private String imgBase64; + + @ApiModelProperty("图片地址") + @NotBlank(message = "图片地址不能为空") + private String imgPath; +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/VideoMenuVo.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/VideoMenuVo.java new file mode 100644 index 00000000..c4d36799 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/domain/VideoMenuVo.java @@ -0,0 +1,27 @@ +package com.yanzhu.manage.domain; + +import lombok.Data; + +import java.util.List; + +/** + * 视频菜单 + */ +@Data +public class VideoMenuVo { + + /** + * 菜单编号 + */ + private String menuId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 所属视频 + */ + private List busTrainingVideos; +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftTypeEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftTypeEnums.java new file mode 100644 index 00000000..1b5e6a9f --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/CraftTypeEnums.java @@ -0,0 +1,31 @@ +package com.yanzhu.manage.enums; + +/** + * 工种类型 + */ +public enum CraftTypeEnums { + + PYGZ("1", "普通工种"), + TSGZ("2", "特殊工种"), + GLRY("3", "管理人员"); + + private final String code; + private final String info; + + CraftTypeEnums(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } + +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/SubDeptsEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/SubDeptsEnums.java new file mode 100644 index 00000000..07692914 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/SubDeptsEnums.java @@ -0,0 +1,38 @@ +package com.yanzhu.manage.enums; + +/** + * 单位类型枚举 + */ +public enum SubDeptsEnums { + + JSDW("1", "建设单位"), + JLDW("2", "监理单位"), + SGDW("3", "施工单位"), + ZYFB("4", "专业分包"), + LWFB("5", "劳务分包"), + CLFB("6", "材料分包"), + HQFB("7", "后勤分包"), + TSSB("8", "特殊设备"), + KTDW("9", "勘探单位"), + SJDW("10", "设计单位"), + QTDW("99", "其它单位"); + + private final String code; + private final String info; + + SubDeptsEnums(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/craftPostEnums.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/craftPostEnums.java new file mode 100644 index 00000000..08bc9542 --- /dev/null +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/enums/craftPostEnums.java @@ -0,0 +1,28 @@ +package com.yanzhu.manage.enums; + +/** + * 工种岗位枚举 + */ +public enum craftPostEnums { + + WTDLR("22", "委托代理人"); + + private final String code; + private final String info; + + craftPostEnums(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } +} diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusExamUserService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusExamUserService.java index 33b2ef89..eccf855b 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusExamUserService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusExamUserService.java @@ -1,8 +1,9 @@ package com.yanzhu.manage.service; -import java.util.List; import com.yanzhu.manage.domain.BusExamUser; +import java.util.List; + /** * 用户试卷Service接口 * @@ -34,6 +35,14 @@ public interface IBusExamUserService */ public BusExamUser insertBusExamUser(); + /** + * 新增用户试卷 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + * @return 结果 + */ + public BusExamUser insertBusExamUser(Long proId, String phoneNumber); + /** * 修改用户试卷 * @@ -57,4 +66,11 @@ public interface IBusExamUserService * @return 结果 */ public int deleteBusExamUserById(Long id); + + /** + * 提交用户试卷 + * @param busExamUser + * @return + */ + public BusExamUser submitBusExamUser(BusExamUser busExamUser); } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusTrainingVideoService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusTrainingVideoService.java index 4c15424f..dd158767 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusTrainingVideoService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusTrainingVideoService.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; import com.yanzhu.manage.domain.BusTrainingVideo; +import com.yanzhu.manage.domain.VideoMenuVo; /** * 培训视频Service接口 @@ -68,4 +69,13 @@ public interface IBusTrainingVideoService * @return 结果 */ public int deleteBusTrainingVideoById(Long id); + + /** + * 用户完成学习视频 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + * @return + */ + public List findBusTrainingVideos(Long proId, String phoneNumber); + } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusTrainingVideoUserService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusTrainingVideoUserService.java index 48b00d23..3adc44c0 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusTrainingVideoUserService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IBusTrainingVideoUserService.java @@ -59,4 +59,22 @@ public interface IBusTrainingVideoUserService * @return 结果 */ public int deleteBusTrainingVideoUserById(Long id); + + /** + * 开始播放用户视频 + * @param id 用户培训视频主键 + */ + public void startPlayUserEduVideo(Long id); + + /** + * 结束播放用户视频 + * @param id 用户培训视频主键 + */ + public void endPlayUserEduVideo(Long id); + + /** + * 用户完成学习视频 + * @param id 用户培训视频主键 + */ + public int finishEduVideo(Long id); } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsService.java index 999452a2..d69d9c8c 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsService.java @@ -1,6 +1,8 @@ package com.yanzhu.manage.service; import java.util.List; +import java.util.Map; + import com.yanzhu.manage.domain.ProProjectInfoSubdepts; /** @@ -66,4 +68,13 @@ public interface IProProjectInfoSubdeptsService * @return 结果 */ public int deleteProProjectInfoSubdeptsById(Long id); + + /** + * 查询用户在项目中的信息 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + * @return + */ + public ProProjectInfoSubdepts findProSubDeptsInfo(Long proId, String phoneNumber); + } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java index 6a786c98..fc984050 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java @@ -1,7 +1,10 @@ package com.yanzhu.manage.service; import java.util.List; +import java.util.Map; + import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; +import com.yanzhu.manage.domain.SignetFileVo; /** * 分包单位工人Service接口 @@ -59,5 +62,17 @@ public interface IProProjectInfoSubdeptsUsersService */ public int deleteProProjectInfoSubdeptsUsersById(Long id); + /** + * 查询用户在项目中的信息 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + * @return + */ + public ProProjectInfoSubdeptsUsers findProSubDeptsUser(Long proId, String phoneNumber); + /** + * 提交文件签署 + * @param signetFileVo + */ + public void submitUserSignets(SignetFileVo signetFileVo); } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusExamUserServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusExamUserServiceImpl.java index f22edeea..fdb6ac29 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusExamUserServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusExamUserServiceImpl.java @@ -4,9 +4,7 @@ import java.util.*; import java.util.stream.Collectors; import com.alibaba.fastjson2.JSON; -import com.yanzhu.common.core.enums.CraftType; -import com.yanzhu.common.core.enums.IsDelEnums; -import com.yanzhu.common.core.enums.UseStateEnums; +import com.yanzhu.common.core.enums.*; import com.yanzhu.common.core.exception.ServiceException; import com.yanzhu.common.core.text.Convert; import com.yanzhu.common.core.utils.DateUtils; @@ -146,6 +144,111 @@ public class BusExamUserServiceImpl implements IBusExamUserService entity.setQuestionType(examQuestion.getQuestionType()); entity.setQuestionOption(JSON.toJSONString(question.getBusExamQuestionResultList())); entity.setAnswer(question.getQuestionAnswer()); + // 根据问题类型设置问题分数 + if(examQuestion.getQuestionType()==1L){ + entity.setMark(findExamInfo.getSingleMark()); + }else if(examQuestion.getQuestionType()==2L){ + entity.setMark(findExamInfo.getMultipleMark()); + }else if(examQuestion.getQuestionType()==3L){ + entity.setMark(findExamInfo.getEstimateMark()); + } + busExamUserResultList.add(entity); + } + busExamUser.setBusExamUserResultList(busExamUserResultList); + busExamUserMapper.batchBusExamUserResult(busExamUserResultList); + + // 修改试卷使用次数 + busExamInfoMapper.updateExamUseNumber(findExamInfo.getId()); + }else{ + throw new ServiceException("当前项目未配置试卷信息,请联系管理员配置..."); + } + return busExamUser; + } + + /** + * 新增用户试卷 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + * @return 结果 + */ + @Override + @Transactional + public BusExamUser insertBusExamUser(Long proId, String phoneNumber){ + BusExamUser busExamUser = new BusExamUser(); + ProProjectInfoSubdeptsUsers query = new ProProjectInfoSubdeptsUsers(); + query.setProjectId(proId); + query.setPhoneNumber(phoneNumber); + List userList = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(query); + if(StringUtils.isEmpty(userList)){ + throw new ServiceException("用户信息异常...不能抽取试题..."); + } + + ProProjectInfoSubdeptsUsers userEntity = userList.get(0); + + // 查询试卷列表 + BusExamInfo examQuery = new BusExamInfo(); + examQuery.setProjectId(userEntity.getProjectId()); + examQuery.setCraftType(userEntity.getCraftType()); + // 管理人员获取所有管理类试卷 + if(!Objects.equals(CraftType.GLRY.getCode(),examQuery.getCraftType())){ + examQuery.setCraftPost(userEntity.getCraftPost()); + } + examQuery.setIsDel(IsDelEnums.NO.getCode()); + List examInfoList = busExamInfoMapper.selectBusExamInfoList(examQuery); + if(StringUtils.isNotEmpty(examInfoList)){ + // 优先从项目试卷中获取试卷、未找到项目试卷则从所有试卷中筛选 + List _projectExamInfolist = examInfoList.stream().filter(examInfo -> examInfo.getProjectId() != null) + .collect(Collectors.toList()); + Random random = new Random(); + BusExamInfo findExamInfo; + if(StringUtils.isNotEmpty(_projectExamInfolist)){ + int randomIntBound = random.nextInt(_projectExamInfolist.size()); + findExamInfo = _projectExamInfolist.get(randomIntBound); + }else{ + int randomIntBound = random.nextInt(examInfoList.size()); + findExamInfo = examInfoList.get(randomIntBound); + } + + // 获取试卷试题 + List questions = extractExamQuestion(findExamInfo,Objects.equals(CraftType.GLRY.getCode(),examQuery.getCraftType())?null:userEntity.getCraftPost()); + // 试题重新排序 + Collections.shuffle(questions); + + busExamUser.setComId(userEntity.getComId()); + busExamUser.setProjectId(userEntity.getProjectId()); + busExamUser.setUserId(userEntity.getUserId()); + busExamUser.setExamTitle(findExamInfo.getExamTitle()); + busExamUser.setExamType(findExamInfo.getExamType()); + busExamUser.setCraftType(userEntity.getCraftType()); + busExamUser.setCraftPost(userEntity.getCraftPost()); + busExamUser.setSingleNum(findExamInfo.getSingleNum()); + busExamUser.setMultipleNum(findExamInfo.getMultipleNum()); + busExamUser.setEstimateNum(findExamInfo.getEstimateNum()); + busExamUser.setCreateBy(DataSourceEnuns.APP.getInfo()); + busExamUser.setCreateTime(DateUtils.getNowDate()); + busExamUser.setFullMark(findExamInfo.getFullMark()); + busExamUser.setPassMark(findExamInfo.getPassMark()); + busExamUser.setUseTimes(DateUtils.getTime()); + busExamUserMapper.insertBusExamUser(busExamUser); + + List busExamUserResultList = new ArrayList<>(); + for(BusExamQuestion examQuestion:questions){ + BusExamQuestion question = busExamQuestionMapper.selectBusExamQuestionById(examQuestion.getId()); + BusExamUserResult entity = new BusExamUserResult(); + entity.setExamUserId(busExamUser.getId()); + entity.setQuestionId(examQuestion.getId()); + entity.setQuestionTitle(examQuestion.getQuestionDesc()); + entity.setQuestionType(examQuestion.getQuestionType()); + entity.setQuestionOption(JSON.toJSONString(question.getBusExamQuestionResultList())); + entity.setAnswer(question.getQuestionAnswer()); + // 根据问题类型设置问题分数 + if(examQuestion.getQuestionType()==1L){ + entity.setMark(findExamInfo.getSingleMark()); + }else if(examQuestion.getQuestionType()==2L){ + entity.setMark(findExamInfo.getMultipleMark()); + }else if(examQuestion.getQuestionType()==3L){ + entity.setMark(findExamInfo.getEstimateMark()); + } busExamUserResultList.add(entity); } busExamUser.setBusExamUserResultList(busExamUserResultList); @@ -167,9 +270,10 @@ public class BusExamUserServiceImpl implements IBusExamUserService */ private List extractExamQuestion(BusExamInfo findExamInfo,String craftPost){ BusExamQuestion questionQuery = new BusExamQuestion(); - questionQuery.setActiveComId(findExamInfo.getComId()); questionQuery.setActiveProjectId(findExamInfo.getProjectId()); - questionQuery.setCraftPost(craftPost); + if(Objects.nonNull(craftPost)){ + questionQuery.setCraftPost(craftPost); + } questionQuery.setIsDel(IsDelEnums.NO.getCode()); List list = new ArrayList<>(); List allQuestionList = busExamQuestionMapper.selectBusExamQuestionList(questionQuery); @@ -294,4 +398,56 @@ public class BusExamUserServiceImpl implements IBusExamUserService } } } + + /** + * 提交用户试卷 + * @param busExamUser + * @return + */ + @Override + public BusExamUser submitBusExamUser(BusExamUser busExamUser){ + ProProjectInfoSubdeptsUsers query = new ProProjectInfoSubdeptsUsers(); + query.setProjectId(busExamUser.getProjectId()); + query.setUserId(busExamUser.getUserId()); + List userList = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(query); + if(StringUtils.isEmpty(userList)){ + throw new ServiceException("用户信息异常...不能提交试卷..."); + } + Long mark = Long.valueOf(0); + List list = busExamUserMapper.selectBusExamUserResultByExamUserId(busExamUser.getId()); + if(StringUtils.isNotEmpty(list)){ + for(BusExamUserResult result:list){ + for(BusExamUserResult _pageResult:busExamUser.getBusExamUserResultList()){ + if(Objects.equals(result.getQuestionId(),_pageResult.getQuestionId())){ + result.setUserAnswer(_pageResult.getUserAnswer()); + if(Objects.equals(result.getAnswer(),result.getUserAnswer())){ + mark += Convert.toInt(result.getMark()); + result.setUseRes(ShiFouEnums.SHI.getCodeStr()); + result.setUseMark(result.getMark()); + }else{ + result.setUseRes(ShiFouEnums.FOU.getCodeStr()); + // 错误则设置为0分 + result.setUseMark("0"); + } + busExamUserMapper.updateBusExamUserResult(result); + } + } + } + } + busExamUser.setUserMark(mark); + if(busExamUser.getPassMark()>mark){ + busExamUser.setResStatus(ShiFouEnums.FOU.getCode()); + }else{ + busExamUser.setResStatus(ShiFouEnums.SHI.getCode()); + //通过后修改用户状态 + ProProjectInfoSubdeptsUsers proSubdeptsUsers = userList.get(0); + if(Objects.isNull(proSubdeptsUsers.getSubStep()) || proSubdeptsUsers.getSubStep()<3){ + proSubdeptsUsers.setSubStep(3L); + } + proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proSubdeptsUsers); + } + busExamUser.setUpdateTime(DateUtils.getNowDate()); + busExamUserMapper.updateBusExamUser(busExamUser); + return busExamUser; + } } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusTrainingVideoServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusTrainingVideoServiceImpl.java index 88a88547..b51fc635 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusTrainingVideoServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusTrainingVideoServiceImpl.java @@ -1,11 +1,24 @@ package com.yanzhu.manage.service.impl; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; import com.yanzhu.common.core.context.SecurityContextHolder; +import com.yanzhu.common.core.enums.DataSourceEnuns; +import com.yanzhu.common.core.enums.ShiFouEnums; +import com.yanzhu.common.core.exception.ServiceException; +import com.yanzhu.common.core.text.Convert; import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.common.core.utils.StringUtils; import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.manage.domain.BusTrainingVideoUser; +import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; +import com.yanzhu.manage.domain.VideoMenuVo; +import com.yanzhu.manage.mapper.BusTrainingVideoUserMapper; +import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsUsersMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.yanzhu.manage.mapper.BusTrainingVideoMapper; @@ -24,6 +37,12 @@ public class BusTrainingVideoServiceImpl implements IBusTrainingVideoService @Autowired private BusTrainingVideoMapper busTrainingVideoMapper; + @Autowired + private BusTrainingVideoUserMapper busTrainingVideoUserMapper; + + @Autowired + private ProProjectInfoSubdeptsUsersMapper proProjectInfoSubdeptsUsersMapper; + /** * 查询培训视频 * @@ -114,4 +133,62 @@ public class BusTrainingVideoServiceImpl implements IBusTrainingVideoService { return busTrainingVideoMapper.deleteBusTrainingVideoById(id); } + + /** + * 查询业务学习视频列表 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + * @return + */ + @Override + public List findBusTrainingVideos(Long proId, String phoneNumber){ + List menuVos = new ArrayList<>(); + ProProjectInfoSubdeptsUsers query = new ProProjectInfoSubdeptsUsers(); + query.setProjectId(proId); + query.setPhoneNumber(phoneNumber); + List userList = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(query); + if(StringUtils.isEmpty(userList)){ + throw new ServiceException("用户信息异常..."); + } + BusTrainingVideo busVideoQuery = new BusTrainingVideo(); + busVideoQuery.setComId(userList.get(0).getComId()); + busVideoQuery.setProjectId(userList.get(0).getProjectId()); + busVideoQuery.setCraftType(userList.get(0).getCraftType()); + busVideoQuery.setCraftPost(userList.get(0).getCraftPost()); + busVideoQuery.setIsDel(ShiFouEnums.FOU.getCode()); + List dataList = busTrainingVideoMapper.selectBusTrainingVideoList(busVideoQuery); + // 新增用户培训视频 + if(StringUtils.isNotEmpty(dataList)){ + Long sortBy = 0L; + //List busTrainingVideoUserList = new ArrayList<>(); + for(BusTrainingVideo video:dataList){ + BusTrainingVideoUser entity = new BusTrainingVideoUser(); + entity.setComId(userList.get(0).getComId()); + entity.setProjectId(userList.get(0).getProjectId()); + entity.setUserId(userList.get(0).getUserId()); + entity.setVideoId(video.getId()); + entity.setSortBy(sortBy++); + entity.setCreateBy(DataSourceEnuns.APP.getInfo()); + entity.setCreateTime(DateUtils.getNowDate()); + busTrainingVideoUserMapper.insertBusTrainingVideoUser(entity); + video.setRemark(Convert.toStr(entity.getId())); + //busTrainingVideoUserList.add(entity); + } + //busTrainingVideoUserMapper.batchBusTrainingVideoUser(busTrainingVideoUserList); + } + List> menuList = busTrainingVideoMapper.selectBusTrainingVideoListGroup(busVideoQuery); + if(StringUtils.isNotEmpty(menuList) && StringUtils.isNotEmpty(dataList)){ + for(Map menu:menuList){ + if(Convert.toInt(menu.get("total"))>0){ + VideoMenuVo menuVo = new VideoMenuVo(); + menuVo.setMenuId(Convert.toStr(menu.get("lvId"))); + menuVo.setMenuName(Convert.toStr(menu.get("lvName"))); + List _dataList = dataList.stream().filter(column -> Objects.equals(menuVo.getMenuId(),column.getTrainLevel())).collect(Collectors.toList()); + menuVo.setBusTrainingVideos(_dataList); + menuVos.add(menuVo); + } + } + } + return menuVos; + } } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusTrainingVideoUserServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusTrainingVideoUserServiceImpl.java index 3e9cdd54..58575b6a 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusTrainingVideoUserServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/BusTrainingVideoUserServiceImpl.java @@ -1,15 +1,24 @@ package com.yanzhu.manage.service.impl; import com.yanzhu.common.core.context.SecurityContextHolder; +import com.yanzhu.common.core.enums.ShiFouEnums; +import com.yanzhu.common.core.exception.ServiceException; +import com.yanzhu.common.core.text.Convert; import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.common.core.utils.StringUtils; import com.yanzhu.common.security.utils.SecurityUtils; import com.yanzhu.manage.domain.BusTrainingVideoUser; +import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; import com.yanzhu.manage.mapper.BusTrainingVideoUserMapper; +import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsUsersMapper; import com.yanzhu.manage.service.IBusTrainingVideoUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.time.Duration; import java.util.List; +import java.util.Objects; /** * 用户培训视频Service业务层处理 @@ -23,6 +32,9 @@ public class BusTrainingVideoUserServiceImpl implements IBusTrainingVideoUserSer @Autowired private BusTrainingVideoUserMapper busTrainingVideoUserMapper; + @Autowired + private ProProjectInfoSubdeptsUsersMapper proProjectInfoSubdeptsUsersMapper; + /** * 查询用户培训视频 * @@ -100,4 +112,84 @@ public class BusTrainingVideoUserServiceImpl implements IBusTrainingVideoUserSer { return busTrainingVideoUserMapper.deleteBusTrainingVideoUserById(id); } + + /** + * 开始播放用户视频 + * @param id 用户培训视频主键 + */ + @Override + @Transactional + public void startPlayUserEduVideo(Long id){ + BusTrainingVideoUser entity = busTrainingVideoUserMapper.selectBusTrainingVideoUserById(id); + if(Objects.isNull(entity.getPlayDates())){ + entity.setPlayDates(DateUtils.getNowDate()); + busTrainingVideoUserMapper.updateBusTrainingVideoUser(entity); + } + } + + /** + * 结束播放用户视频 + * @param id 用户培训视频主键 + */ + @Override + @Transactional + public void endPlayUserEduVideo(Long id){ + BusTrainingVideoUser entity = busTrainingVideoUserMapper.selectBusTrainingVideoUserById(id); + try{ + long stimes = entity.getPlayDates().getTime(); + long etimes = DateUtils.getNowDate().getTime(); + if(Objects.nonNull(entity.getPlayTimes())){ + long time = (etimes-stimes)/2; + entity.setPlayTimes(Convert.toStr(time+Convert.toLong(entity.getPlayTimes()))); + }else{ + entity.setPlayTimes(Convert.toStr(etimes-stimes)); + } + entity.setPlayStatus(ShiFouEnums.SHI.getCode()); + busTrainingVideoUserMapper.updateBusTrainingVideoUser(entity); + }catch (Exception e){ + e.printStackTrace(); + } + } + + public static void main(String[] args) { + long sd = 3L; + System.out.println(sd/2); + } + + /** + * 用户完成学习视频 + * @param id 用户培训视频主键 + */ + @Override + @Transactional + public int finishEduVideo(Long id){ + BusTrainingVideoUser entity = busTrainingVideoUserMapper.selectBusTrainingVideoUserById(id); + try{ + long stimes = entity.getPlayDates().getTime(); + long etimes = DateUtils.getNowDate().getTime(); + if(Objects.nonNull(entity.getPlayTimes())){ + long time = (etimes-stimes)/2; + entity.setPlayTimes(Convert.toStr(time+Convert.toLong(entity.getPlayTimes()))); + }else{ + entity.setPlayTimes(Convert.toStr(etimes-stimes)); + } + entity.setPlayStatus(ShiFouEnums.SHI.getCode()); + busTrainingVideoUserMapper.updateBusTrainingVideoUser(entity); + }catch (Exception e){ + e.printStackTrace(); + } + ProProjectInfoSubdeptsUsers query = new ProProjectInfoSubdeptsUsers(); + query.setProjectId(entity.getProjectId()); + query.setUserId(entity.getUserId()); + List dataList = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(query); + if(StringUtils.isNotEmpty(dataList)){ + ProProjectInfoSubdeptsUsers projectInfoSubdeptsUsers = dataList.get(0); + if(Objects.isNull(projectInfoSubdeptsUsers.getSubStep()) || projectInfoSubdeptsUsers.getSubStep()<2){ + projectInfoSubdeptsUsers.setSubStep(2L); + } + return proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(projectInfoSubdeptsUsers); + }else{ + throw new ServiceException("查询用户信息异常"); + } + } } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoServiceImpl.java index dba6a74b..1d85efec 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoServiceImpl.java @@ -1,5 +1,6 @@ package com.yanzhu.manage.service.impl; +import cn.binarywang.wx.miniapp.api.WxMaService; import com.yanzhu.common.core.constant.CacheConstants; import com.yanzhu.common.core.constant.SecurityConstants; import com.yanzhu.common.core.context.SecurityContextHolder; @@ -9,6 +10,7 @@ import com.yanzhu.common.core.utils.DateUtils; import com.yanzhu.common.core.utils.StringUtils; import com.yanzhu.common.redis.service.RedisService; import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.manage.config.ProfileConfig; import com.yanzhu.manage.domain.ProDept; import com.yanzhu.manage.domain.ProProjectInfo; import com.yanzhu.manage.domain.ProProjectInfoDepts; @@ -17,12 +19,16 @@ import com.yanzhu.manage.mapper.ProProjectInfoDeptsMapper; import com.yanzhu.manage.mapper.ProProjectInfoMapper; import com.yanzhu.manage.mapper.ProProjectInfoSettingMapper; import com.yanzhu.manage.service.IProProjectInfoService; +import com.yanzhu.manage.utils.WxQrCodeUtils; import com.yanzhu.system.api.RemoteDeptService; import com.yanzhu.system.api.domain.SysDept; import com.yanzhu.system.api.domain.SysUser; +import me.chanjar.weixin.mp.api.WxMpService; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -38,9 +44,15 @@ import java.util.List; @Service public class ProProjectInfoServiceImpl implements IProProjectInfoService { + @Autowired + private WxMaService wxMaService; + @Autowired private RedisService redisService; + @Autowired + private ProfileConfig profileConfig; + @Autowired private ProProjectInfoDeptsMapper deptsMapper; @@ -53,6 +65,8 @@ public class ProProjectInfoServiceImpl implements IProProjectInfoService @Autowired private RemoteDeptService remoteDeptService; + private static final Logger log = LoggerFactory.getLogger(ProProjectInfoServiceImpl.class); + /** * 项目启动时,初始化参数到缓存 */ @@ -127,6 +141,16 @@ public class ProProjectInfoServiceImpl implements IProProjectInfoService proDept.setLeader(proProjectInfo.getProjectPerson()); proDept.setPhone(proProjectInfo.getProjectPersonPhone()); proDept.setCreateBy(SecurityUtils.getUsername()); + try { + String accessToken = wxMaService.getAccessToken(); + String imgPath = profileConfig.getPath()+"/"+System.currentTimeMillis()+".png"; + log.info("accessToken...{}",accessToken); + WxQrCodeUtils.generateQrCode(imgPath, "pages/index/index", "aa=108&bb=2&cc=3", accessToken); + // TODO:生成二维码 + proProjectInfo.setProjectQrCode(imgPath); + }catch (Exception e){ + log.error(e.getMessage()); + } int res = proProjectInfoMapper.insertDept(proDept); if(res>0){ proProjectInfo.setId(proDept.getDeptId()); @@ -150,6 +174,17 @@ public class ProProjectInfoServiceImpl implements IProProjectInfoService @Override public int updateProProjectInfo(ProProjectInfo proProjectInfo) { + try { + String accessToken = wxMaService.getAccessToken(); + String imgPath = profileConfig.getPath()+"/"+System.currentTimeMillis()+".png"; + log.info("accessToken...{}",accessToken); + String scene = "QRPID="+proProjectInfo.getId()+"&signType=1"; + WxQrCodeUtils.generateQrCode(imgPath, "pages/project_qr/index", scene, accessToken); + // TODO:生成二维码 + proProjectInfo.setProjectQrCode(imgPath); + }catch (Exception e){ + log.error(e.getMessage()); + } proProjectInfo.setUpdateTime(DateUtils.getNowDate()); proProjectInfo.setUpdateBy(SecurityContextHolder.getUserName()); List depts = proProjectInfo.getProjectDeptsList(); diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsServiceImpl.java index dcd2d6ec..592551f7 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsServiceImpl.java @@ -3,8 +3,8 @@ package com.yanzhu.manage.service.impl; import com.yanzhu.common.core.constant.CacheConstants; import com.yanzhu.common.core.constant.SecurityConstants; import com.yanzhu.common.core.domain.R; -import com.yanzhu.common.core.enums.CardTypeEnums; -import com.yanzhu.common.core.enums.UserTypeEnums; +import com.yanzhu.common.core.enums.*; +import com.yanzhu.common.core.exception.ServiceException; import com.yanzhu.common.core.utils.DateUtils; import com.yanzhu.common.core.utils.StringUtils; import com.yanzhu.common.redis.service.RedisService; @@ -12,9 +12,13 @@ import com.yanzhu.common.security.utils.SecurityUtils; import com.yanzhu.manage.config.ProfileConfig; import com.yanzhu.manage.domain.ProProjectInfo; import com.yanzhu.manage.domain.ProProjectInfoSubdepts; +import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; +import com.yanzhu.manage.enums.CraftTypeEnums; +import com.yanzhu.manage.enums.SubDeptsEnums; +import com.yanzhu.manage.enums.craftPostEnums; import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsMapper; +import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsUsersMapper; import com.yanzhu.manage.service.IProProjectInfoSubdeptsService; -import com.yanzhu.manage.utils.WxQrCodeUtils; import com.yanzhu.system.api.RemoteUserService; import com.yanzhu.system.api.domain.SysUser; import me.chanjar.weixin.mp.api.WxMpService; @@ -51,6 +55,9 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept @Autowired private ProProjectInfoSubdeptsMapper proProjectInfoSubdeptsMapper; + @Autowired + private ProProjectInfoSubdeptsUsersMapper proProjectInfoSubdeptsUsersMapper; + private static final Logger log = LoggerFactory.getLogger(ProProjectInfoSubdeptsServiceImpl.class); /** @@ -90,31 +97,29 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept public int insertProProjectInfoSubdepts(ProProjectInfoSubdepts proProjectInfoSubdepts) { ProProjectInfo info = redisService.getCacheObject(CacheConstants.PRO_PROJECT+proProjectInfoSubdepts.getProjectId()); + if(Objects.isNull(info)){ + throw new ServiceException("项目信息异常..."); + } proProjectInfoSubdepts.setComId(info.getComId()); - if(Objects.equals(proProjectInfoSubdepts.getSubDeptType(),"4") || Objects.equals(proProjectInfoSubdepts.getSubDeptType(),"4")){ - try { - String accessToken = wxMpService.getAccessToken(); - String imgPath = profileConfig.getPath()+"/"+System.currentTimeMillis()+".png"; - log.info("accessToken...{}",accessToken); - WxQrCodeUtils.generateQrCode(imgPath, "pages/index/index", "aa=108&bb=2&cc=3", accessToken); - // TODO:生成二维码 - //proProjectInfoSubdepts.setQrCode(); - }catch (Exception e){ - log.error(e.getMessage()); - } + if(Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.ZYFB.getCode()) || Objects.equals(proProjectInfoSubdepts.getSubDeptType(),SubDeptsEnums.LWFB.getCode())){ // 单位委托人信息 if(StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderName()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderCode()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderPhone())){ SysUser sysUser = new SysUser(); sysUser.setUserName(proProjectInfoSubdepts.getSubDeptLeaderPhone()); sysUser.setNickName(proProjectInfoSubdepts.getSubDeptLeaderName()); sysUser.setUserType(UserTypeEnums.FBDL.getCode()); + sysUser.setPhonenumber(proProjectInfoSubdepts.getSubDeptLeaderPhone()); sysUser.setCardType(CardTypeEnums.SFZ.getCode()); sysUser.setCardCode(proProjectInfoSubdepts.getSubDeptLeaderCode()); sysUser.setUserPicture(proProjectInfoSubdepts.getLeaderUserPicture()); sysUser.setCardImgPos(proProjectInfoSubdepts.getLeaderCardImgPos()); sysUser.setCardImgInv(proProjectInfoSubdepts.getLeaderCardImgInv()); sysUser.setSex(StringUtils.judgeGender(proProjectInfoSubdepts.getSubDeptLeaderCode())); - sysUser.setCreateBy(SecurityUtils.getUsername()); + if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){ + sysUser.setCreateBy(SecurityUtils.getUsername()); + }else{ + sysUser.setCreateBy(DataSourceEnuns.APP.getInfo()); + } sysUser.setCreateTime(DateUtils.getNowDate()); sysUser.setRemark(proProjectInfoSubdepts.getSubDeptName()); try { @@ -122,14 +127,49 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept proProjectInfoSubdepts.setSubDeptLeaderId(userResult.getData()); }catch (Exception e){ // 已注册账号!!忽略异常... + e.printStackTrace(); } - - // TODO:实名制接入 } } - proProjectInfoSubdepts.setCreateBy(SecurityUtils.getUsername()); + if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){ + proProjectInfoSubdepts.setCreateBy(SecurityUtils.getUsername()); + proProjectInfoSubdepts.setApproveStatus(ApproveStatus.passed.getCode()); + }else{ + proProjectInfoSubdepts.setCreateBy(DataSourceEnuns.APP.getInfo()); + proProjectInfoSubdepts.setApproveStatus(ApproveStatus.await.getCode()); + } proProjectInfoSubdepts.setCreateTime(DateUtils.getNowDate()); - return proProjectInfoSubdeptsMapper.insertProProjectInfoSubdepts(proProjectInfoSubdepts); + int res = proProjectInfoSubdeptsMapper.insertProProjectInfoSubdepts(proProjectInfoSubdepts); + // 将人员信息同步至单位人员表 + if(res>0 && (Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.ZYFB.getCode()) || Objects.equals(proProjectInfoSubdepts.getSubDeptType(),SubDeptsEnums.LWFB.getCode()))){ + // 保存单位人员信息 + ProProjectInfoSubdeptsUsers subdeptsUser = new ProProjectInfoSubdeptsUsers(); + subdeptsUser.setComId(info.getComId()); + subdeptsUser.setProjectId(info.getId()); + subdeptsUser.setSubDeptId(proProjectInfoSubdepts.getId()); + subdeptsUser.setSubDeptName(proProjectInfoSubdepts.getSubDeptName()); + subdeptsUser.setSubDeptType(proProjectInfoSubdepts.getSubDeptType()); + subdeptsUser.setSubDeptPowerPath(proProjectInfoSubdepts.getSubDeptLeaderPowerPath()); + subdeptsUser.setUserId(proProjectInfoSubdepts.getSubDeptLeaderId()); + subdeptsUser.setCraftType(CraftTypeEnums.GLRY.getCode()); + subdeptsUser.setCraftPost(craftPostEnums.WTDLR.getCode()); + subdeptsUser.setDegreeGrade(""); + subdeptsUser.setEduStatus(ShiFouEnums.FOU.getCodeStr()); + subdeptsUser.setApproveStatus(ApproveStatus.await.getCode()); + if(Objects.isNull(subdeptsUser.getSubStep()) || subdeptsUser.getSubStep()<1){ + subdeptsUser.setSubStep(1L); + } + if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){ + subdeptsUser.setCreateBy(SecurityUtils.getUsername()); + subdeptsUser.setApproveStatus(ApproveStatus.passed.getCode()); + }else{ + subdeptsUser.setCreateBy(DataSourceEnuns.APP.getInfo()); + subdeptsUser.setApproveStatus(ApproveStatus.await.getCode()); + } + subdeptsUser.setCreateTime(DateUtils.getNowDate()); + proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(subdeptsUser); + } + return res; } /** @@ -142,39 +182,84 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept @Transactional public int updateProProjectInfoSubdepts(ProProjectInfoSubdepts proProjectInfoSubdepts) { - if(Objects.equals(proProjectInfoSubdepts.getSubDeptType(),"4") || Objects.equals(proProjectInfoSubdepts.getSubDeptType(),"4")){ - if(StringUtils.isEmpty(proProjectInfoSubdepts.getQrCode())){ - // TODO:生成二维码 - - // 单位委托人信息 - if(StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderName()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderCode()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderPhone())){ - SysUser sysUser = new SysUser(); - sysUser.setUserName(proProjectInfoSubdepts.getSubDeptLeaderPhone()); - sysUser.setNickName(proProjectInfoSubdepts.getSubDeptLeaderName()); - sysUser.setUserType(UserTypeEnums.FBDL.getCode()); - sysUser.setCardType(CardTypeEnums.SFZ.getCode()); - sysUser.setCardCode(proProjectInfoSubdepts.getSubDeptLeaderCode()); - sysUser.setUserPicture(proProjectInfoSubdepts.getLeaderUserPicture()); - sysUser.setCardImgPos(proProjectInfoSubdepts.getLeaderCardImgPos()); - sysUser.setCardImgInv(proProjectInfoSubdepts.getLeaderCardImgInv()); - sysUser.setSex(StringUtils.judgeGender(proProjectInfoSubdepts.getSubDeptLeaderCode())); - sysUser.setCreateBy(SecurityUtils.getUsername()); - sysUser.setCreateTime(DateUtils.getNowDate()); - sysUser.setRemark(proProjectInfoSubdepts.getSubDeptName()); - try { - R userResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER); - proProjectInfoSubdepts.setSubDeptLeaderId(userResult.getData()); - }catch (Exception e){ - // 已注册账号!!忽略异常... - } - - // TODO:实名制接入 + ProProjectInfo info = redisService.getCacheObject(CacheConstants.PRO_PROJECT+proProjectInfoSubdepts.getProjectId()); + if(Objects.isNull(info)){ + throw new ServiceException("项目信息异常..."); + } + if(Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.ZYFB.getCode()) || Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.LWFB.getCode())){ + // 单位委托人信息 + if(StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderName()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderCode()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderPhone())){ + SysUser sysUser = new SysUser(); + sysUser.setUserName(proProjectInfoSubdepts.getSubDeptLeaderPhone()); + sysUser.setNickName(proProjectInfoSubdepts.getSubDeptLeaderName()); + sysUser.setPhonenumber(proProjectInfoSubdepts.getSubDeptLeaderPhone()); + sysUser.setUserType(UserTypeEnums.FBDL.getCode()); + sysUser.setCardType(CardTypeEnums.SFZ.getCode()); + sysUser.setCardCode(proProjectInfoSubdepts.getSubDeptLeaderCode()); + sysUser.setUserPicture(proProjectInfoSubdepts.getLeaderUserPicture()); + sysUser.setCardImgPos(proProjectInfoSubdepts.getLeaderCardImgPos()); + sysUser.setCardImgInv(proProjectInfoSubdepts.getLeaderCardImgInv()); + sysUser.setSex(StringUtils.judgeGender(proProjectInfoSubdepts.getSubDeptLeaderCode())); + if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){ + sysUser.setUpdateBy(SecurityUtils.getUsername()); + }else{ + sysUser.setUpdateBy(DataSourceEnuns.APP.getInfo()); } + sysUser.setUpdateTime(DateUtils.getNowDate()); + sysUser.setRemark(proProjectInfoSubdepts.getSubDeptName()); + try { + R userResult = remoteUserService.updateUserInfo(sysUser, SecurityConstants.INNER); + proProjectInfoSubdepts.setSubDeptLeaderId(userResult.getData()); + }catch (Exception e){ + // 已注册账号!!忽略异常... + e.printStackTrace(); + } + + // TODO:实名制接入 } } - proProjectInfoSubdepts.setUpdateBy(SecurityUtils.getUsername()); + if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){ + proProjectInfoSubdepts.setUpdateBy(SecurityUtils.getUsername()); + }else{ + proProjectInfoSubdepts.setUpdateBy(DataSourceEnuns.APP.getInfo()); + } proProjectInfoSubdepts.setUpdateTime(DateUtils.getNowDate()); - return proProjectInfoSubdeptsMapper.updateProProjectInfoSubdepts(proProjectInfoSubdepts); + int res = proProjectInfoSubdeptsMapper.updateProProjectInfoSubdepts(proProjectInfoSubdepts); + // 将人员信息同步至单位人员表 + if(res>0 && (Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.ZYFB.getCode()) || Objects.equals(proProjectInfoSubdepts.getSubDeptType(),SubDeptsEnums.LWFB.getCode()))){ + // 保存单位人员信息 + ProProjectInfoSubdeptsUsers subdeptsUser = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersByParamId(proProjectInfoSubdepts.getProjectId(),proProjectInfoSubdepts.getSubDeptLeaderId()); + if(Objects.isNull(subdeptsUser)){ + subdeptsUser = new ProProjectInfoSubdeptsUsers(); + subdeptsUser.setComId(info.getComId()); + subdeptsUser.setProjectId(info.getId()); + subdeptsUser.setSubDeptId(proProjectInfoSubdepts.getId()); + } + subdeptsUser.setSubDeptName(proProjectInfoSubdepts.getSubDeptName()); + subdeptsUser.setSubDeptType(proProjectInfoSubdepts.getSubDeptType()); + subdeptsUser.setSubDeptPowerPath(proProjectInfoSubdepts.getSubDeptLeaderPowerPath()); + subdeptsUser.setUserId(proProjectInfoSubdepts.getSubDeptLeaderId()); + subdeptsUser.setCraftType(CraftTypeEnums.GLRY.getCode()); + subdeptsUser.setCraftPost(craftPostEnums.WTDLR.getCode()); + subdeptsUser.setDegreeGrade(""); + subdeptsUser.setEduStatus(ShiFouEnums.FOU.getCodeStr()); + subdeptsUser.setApproveStatus(ApproveStatus.await.getCode()); + if(Objects.isNull(subdeptsUser.getSubStep()) || subdeptsUser.getSubStep()<1){ + subdeptsUser.setSubStep(1L); + } + if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){ + subdeptsUser.setCreateBy(SecurityUtils.getUsername()); + }else{ + subdeptsUser.setCreateBy(DataSourceEnuns.APP.getInfo()); + } + subdeptsUser.setCreateTime(DateUtils.getNowDate()); + if(Objects.isNull(subdeptsUser.getId())){ + proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(subdeptsUser); + }else{ + proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(subdeptsUser); + } + } + return res; } /** @@ -213,4 +298,31 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept { return proProjectInfoSubdeptsMapper.deleteProProjectInfoSubdeptsById(id); } + + /** + * 查询用户在项目中的信息 + * @param proId + * @param phoneNumber 联系电话 + * @return + */ + @Override + public ProProjectInfoSubdepts findProSubDeptsInfo(Long proId, String phoneNumber){ + ProProjectInfoSubdepts query = new ProProjectInfoSubdepts(); + query.setProjectId(proId); + query.setSubDeptLeaderPhone(phoneNumber); + List dataList = proProjectInfoSubdeptsMapper.selectProProjectInfoSubdeptsList(query); + if(StringUtils.isNotEmpty(dataList)){ + ProProjectInfoSubdepts data = dataList.get(0); + ProProjectInfoSubdeptsUsers userQuery = new ProProjectInfoSubdeptsUsers(); + userQuery.setProjectId(proId); + userQuery.setPhoneNumber(phoneNumber); + List userList = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(userQuery); + if(StringUtils.isNotEmpty(userList)){ + data.setProProjectInfoSubdeptsUsers(userList.get(0)); + } + return data; + } + return null; + } + } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java index 18c391bb..17ce080f 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java @@ -2,8 +2,11 @@ package com.yanzhu.manage.service.impl; import com.yanzhu.common.core.constant.SecurityConstants; import com.yanzhu.common.core.context.SecurityContextHolder; +import com.yanzhu.common.core.exception.ServiceException; import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.common.core.utils.StringUtils; import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers; +import com.yanzhu.manage.domain.SignetFileVo; import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsUsersMapper; import com.yanzhu.manage.service.IProProjectInfoSubdeptsUsersService; import com.yanzhu.manage.service.IUniService; @@ -11,6 +14,7 @@ import com.yanzhu.system.api.RemoteUserService; import com.yanzhu.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -131,4 +135,41 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu uniService.syncUserRevoke(id); return proProjectInfoSubdeptsUsersMapper.deleteProProjectInfoSubdeptsUsersById(id); } + + /** + * 查询用户在项目中的信息 + * @param proId 项目主键 + * @param phoneNumber 联系电话 + * @return + */ + @Override + public ProProjectInfoSubdeptsUsers findProSubDeptsUser(Long proId, String phoneNumber){ + ProProjectInfoSubdeptsUsers query = new ProProjectInfoSubdeptsUsers(); + query.setProjectId(proId); + query.setPhoneNumber(phoneNumber); + List dataList = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(query); + if(StringUtils.isNotEmpty(dataList)){ + return dataList.get(0); + } + return null; + } + + /** + * 提交文件签署 + * @param signetFileVo + */ + @Override + @Transactional + public void submitUserSignets(SignetFileVo signetFileVo){ + ProProjectInfoSubdeptsUsers query = new ProProjectInfoSubdeptsUsers(); + query.setProjectId(signetFileVo.getProId()); + query.setPhoneNumber(signetFileVo.getUserPhone()); + List dataList = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(query); + if(StringUtils.isEmpty(dataList)){ + throw new ServiceException("用户信息异常..."); + } + ProProjectInfoSubdeptsUsers proSubdeptsUser = dataList.get(0); + proSubdeptsUser.setSubStep(100L); + proSubdeptsUser.setEduSignPath(signetFileVo.getImgPath()); + } } diff --git a/yanzhu-modules/yanzhu-manage/src/main/resources/bootstrap.yml b/yanzhu-modules/yanzhu-manage/src/main/resources/bootstrap.yml index e096f77d..c38ffba5 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/resources/bootstrap.yml +++ b/yanzhu-modules/yanzhu-manage/src/main/resources/bootstrap.yml @@ -25,3 +25,7 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + +logging: + level: + com.ycx.manage.mapper: DEBUG \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/api/busEdu.js b/yanzhu-ui-app/miniprogram/api/busEdu.js new file mode 100644 index 00000000..5a5d4548 --- /dev/null +++ b/yanzhu-ui-app/miniprogram/api/busEdu.js @@ -0,0 +1,61 @@ +import { + request +} from '../utils/request' + +// 查询项目培训视频信息 +export function findBusTrainingVideos(proId, phoneNumber) { + return request({ + url: '/manage/wxApi/findBusTrainingVideos?proId=' + proId + '&phoneNumber=' + phoneNumber, + method: 'get' + }) +} + +// 开始播放用户培训视频 +export function startPlayUserEduVideo(id) { + return request({ + url: '/manage/wxApi/startPlayUserEduVideo/' + id, + method: 'get' + }) +} + +// 结束播放用户培训视频 +export function endPlayUserEduVideo(id) { + return request({ + url: '/manage/wxApi/endPlayUserEduVideo/' + id, + method: 'get' + }) +} + +// 用户完成学习视频 +export function finishEduVideo(id) { + return request({ + url: '/manage/wxApi/finishEduVideo/' + id, + method: 'get' + }) +} + +// 查询项目考试试卷信息 +export function findBusExamInfos(proId, phoneNumber) { + return request({ + url: '/manage/wxApi/findBusExamInfos?proId=' + proId + '&phoneNumber=' + phoneNumber, + method: 'get' + }) +} + +// 提交试卷试卷信息 +export function submitBusExamUser(data) { + return request({ + url: '/manage/wxApi/submitBusExamUser', + method: 'post', + data: data + }) +} + +// 确认并提交签署信息 +export function submitUserSignets(data) { + return request({ + url: '/manage/wxApi/submitUserSignets', + method: 'post', + data: data + }) +} \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/api/login.js b/yanzhu-ui-app/miniprogram/api/login.js index 37ae0aad..3aaea177 100644 --- a/yanzhu-ui-app/miniprogram/api/login.js +++ b/yanzhu-ui-app/miniprogram/api/login.js @@ -52,7 +52,7 @@ export function loginOut() { }) } -// 刷线用户信息 +// 刷新用户信息 export function refreshMobileToken() { return request({ 'url': '/auth/refreshMobile', @@ -60,3 +60,12 @@ export function refreshMobileToken() { }) } +// 获取用户手机号码 +export function getMaPhoneNumber(data) { + return request({ + 'url': '/auth/getMaPhoneNumber', + 'method': 'post', + 'data': data, + }) +} + diff --git a/yanzhu-ui-app/miniprogram/api/project.js b/yanzhu-ui-app/miniprogram/api/project.js index 5d5610a2..ac2de4c9 100644 --- a/yanzhu-ui-app/miniprogram/api/project.js +++ b/yanzhu-ui-app/miniprogram/api/project.js @@ -1,60 +1,36 @@ -import {request} from '../utils/request' +import { + request +} from '../utils/request' -// 获取项目编号 -export function getProjectNo() { +// 查询项目信息详细 +export function getProjectInfo(id) { return request({ - url: '/project/projectInfo/findMyDeptProjectNo', + url: '/manage/wxApi/findProject/' + id, method: 'get' }) } -// 查询项目信息列表 -export function listProjectInfo(query) { +// 新增项目参建单位信息 +export function registerSubDepts(data) { return request({ - url: '/project/projectInfo/list', - method: 'get', - params: query + url: '/manage/wxApi/registerSubDepts', + method: 'post', + data: data }) - } - - // 查询项目信息详细 - export function getProjectInfo(id) { +} + +// 查询项目参建单位信息 +export function findProSubDeptsInfo(proId, phoneNumber) { return request({ - url: '/project/projectInfo/' + id, - method: 'get' + url: '/manage/wxApi/findProSubDeptsInfo?proId=' + proId + '&phoneNumber=' + phoneNumber, + method: 'get' }) - } - - // 新增项目信息 - export function addProjectInfo(data) { +} + +// 查询项目参建人员信息 +export function findProSubDeptsUser(proId, phoneNumber) { return request({ - url: '/project/projectInfo', - method: 'post', - data: data + url: '/manage/wxApi/findProSubDeptsUser?proId=' + proId + '&phoneNumber=' + phoneNumber, + method: 'get' }) - } - - // 修改项目信息 - export function updateProjectInfo(data) { - return request({ - url: '/project/projectInfo', - method: 'put', - data: data - }) - } - - // 删除项目信息 - export function delProjectInfo(id) { - return request({ - url: '/project/projectInfo/' + id, - method: 'delete' - }) - } - - // 我的部门项目 - export function findMyDeptProject() { - return request({ - url: '/project/projectInfo/findMyDeptProject', - method: 'get' - }) - } \ No newline at end of file +} \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/app.js b/yanzhu-ui-app/miniprogram/app.js index d5e89de4..e75f539e 100644 --- a/yanzhu-ui-app/miniprogram/app.js +++ b/yanzhu-ui-app/miniprogram/app.js @@ -52,10 +52,16 @@ App({ }) } this.autoUpdate(); + + //防卡死定时器 + setInterval(() => { + wx.hideLoading(); + }, 30000); + /** * 初始化页面未登录时跳转到登录页 */ - if(options && options.query && options.query.proId){ + if(options && options.query && options.query.QRPID){ //扫码进入时不效验登录...跳转授权登录页 console.log("扫码进入时不效验登录...跳转授权登录页"); }else{ @@ -66,7 +72,6 @@ App({ wx.redirectTo({ url: '/pages/login/index', }); - return false; } } }, diff --git a/yanzhu-ui-app/miniprogram/app.json b/yanzhu-ui-app/miniprogram/app.json index 88cac693..d9288eaa 100644 --- a/yanzhu-ui-app/miniprogram/app.json +++ b/yanzhu-ui-app/miniprogram/app.json @@ -1,7 +1,6 @@ { "pages": [ "pages/login/login", - "pages/index/index", "pages/updatePwd/index", "pages/project_flowable/initTask/index", "pages/project_flowable/myFlowDefinition/index", @@ -60,6 +59,7 @@ "safety-number": "./components/number/index", "select-person": "./components/select-person/index", "select-group-person": "./components/select-group-person/index", + "select-group-position": "./components/select-group-position/index", "van-dropdown-menu": "@vant/weapp/dropdown-menu/index", "van-dropdown-item": "@vant/weapp/dropdown-item/index", "curve-echarts": "pages/components/curve-echarts/index" diff --git a/yanzhu-ui-app/miniprogram/app.wxss b/yanzhu-ui-app/miniprogram/app.wxss index 1797ce22..942e91d3 100644 --- a/yanzhu-ui-app/miniprogram/app.wxss +++ b/yanzhu-ui-app/miniprogram/app.wxss @@ -58,7 +58,7 @@ page { /* 中间内容用含有max_content 的 view 包起来 */ .max_content { - padding: 166rpx 0 180rpx; + padding: 166rpx 0 90rpx; } .max_content_scroll { @@ -981,6 +981,13 @@ page { background: url("http://fileimg.makalu.cc/WEB_F9046A91C12646ECAEB6024455C35F15.png") no-repeat left/15rpx 30rpx; } +.safety_inspect_title_2 { + color: #e9fbf9; + font-size: 26rpx; + padding: 20rpx; + background: url("http://fileimg.makalu.cc/WEB_F9046A91C12646ECAEB6024455C35F15.png") no-repeat left/15rpx 30rpx; +} + .safety_prop { display: flex; align-items: center; @@ -1686,6 +1693,15 @@ swiper-item video { background: #66d6f1; } +.problem_submit_to_back { + border-bottom: 1px solid #999999; + background-color: #999999; +} + +.problem_submit_to_back:active { + background: #cccccc; +} + .problem_submit_to_eq { border-bottom: 1px solid #3f76eb; background-color: #3f76eb; @@ -1923,11 +1939,26 @@ swiper-item video { color: #FFFFFF; } +.code_label_blue { + background: #1890ff; + color: #FFFFFF; +} + .code_label_blueviolet { background: blueviolet; color: #FFFFFF; } +.code_label_4 { + font-size: 0.8rem; + width: 200rpx; + height: 50rpx; + line-height: 50rpx; + text-align: center; + padding: 0.1rem; + border-radius: 0.5rem 0 0.5rem 0; +} + .code_label_yellow { background: #ff9800; color: #FFFFFF; @@ -1997,4 +2028,4 @@ swiper-item video { width: 180rpx; height: 180rpx; padding-right: 15rpx; -} \ No newline at end of file +} diff --git a/yanzhu-ui-app/miniprogram/components/select-group-position/index.js b/yanzhu-ui-app/miniprogram/components/select-group-position/index.js new file mode 100644 index 00000000..cdf70fd9 --- /dev/null +++ b/yanzhu-ui-app/miniprogram/components/select-group-position/index.js @@ -0,0 +1,122 @@ +// newComponents/select-group-person/index.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + title:{ + type:String + }, + index:{ + type:String + }, + choose:{ + type:String + }, + multiple:{ + type:Boolean, + value:true + }, + rectifierData:{ + type:Array, + value:[] + } + }, + observers: { + + }, + lifetimes: { + created: function(){ + //在组件实例刚刚被创建时执行,注意此时不能调用 setData + }, + attached: function () { + //在组件实例进入页面节点树时执行 + }, + ready: function () { + // 在组件在视图层布局完成后执行 + }, + detached: function () { + // 在组件实例被从页面节点树移除时执行 + }, + }, + + /** + * 组件的初始数据 + */ + data: { + show:false, + gridData:[], + selectedIndex:[] + }, + + /** + * 组件的方法列表 + */ + methods: { + onAddResponsible(){ + this.setData({ + show:true + }) + }, + onClose(){ + this.setData({ + show:false + }) + }, + onSelected(e){ + var data = this.data.rectifierData; + let ei = e.currentTarget.dataset.index; + let index = ei.split('_'); + let userdata = data[index[0]].userinfoList[index[1]]; + let of = this.data.selectedIndex.indexOf(ei); + if(of>-1){ + this.data.selectedIndex.splice(of, 1); + userdata.state = false; + }else{ + this.data.selectedIndex.push(ei); + userdata.state = true; + } + if(!this.data.multiple && this.data.selectedIndex.length>0){ + if(this.data.selectedIndex.length>1){ + this.data.selectedIndex.forEach((item) =>{ + let _indexs = item.split('_'); + data[_indexs[0]].userinfoList[_indexs[1]].state = false; + }); + userdata.state = true; + this.data.selectedIndex=[]; + this.data.selectedIndex.push(ei); + } + let _gridData=[{userName:userdata.nickName+" ["+userdata.jobTypeName+"]",phoneNumber:userdata.phonenumber}]; + this.triggerEvent('selected',_gridData) + this.setData({ + choose:_gridData[0].userName, + rectifierData:data, + show:false + }) + }else{ + this.setData({ + rectifierData : data + }) + } + }, + onConfirm(){ + var data = this.data.rectifierData; + let _gridData=[]; + let chooses=""; + if(this.data.selectedIndex.length>0){ + this.data.selectedIndex.forEach((item) =>{ + let _indexs = item.split('_'); + let name = data[_indexs[0]].userinfoList[_indexs[1]].nickName+" ["+data[_indexs[0]].userinfoList[_indexs[1]].jobTypeName+"]"; + _gridData.push({userName:name,phoneNumber:data[_indexs[0]].userinfoList[_indexs[1]].phonenumber}); + chooses+=","+name; + }); + } + this.triggerEvent('selected',_gridData) + this.setData({ + choose:chooses.substring(1), + show:false + }) + } + + } +}) diff --git a/yanzhu-ui-app/miniprogram/components/select-group-position/index.json b/yanzhu-ui-app/miniprogram/components/select-group-position/index.json new file mode 100644 index 00000000..7e37c035 --- /dev/null +++ b/yanzhu-ui-app/miniprogram/components/select-group-position/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/components/select-group-position/index.wxml b/yanzhu-ui-app/miniprogram/components/select-group-position/index.wxml new file mode 100644 index 00000000..ae6e349a --- /dev/null +++ b/yanzhu-ui-app/miniprogram/components/select-group-position/index.wxml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + {{title}} + + + + + + [{{item.unitTypeName}}] {{item.unitName}} + + + + + + + {{items.phonenumber}} + {{items.nickName}} [{{items.jobTypeName}}] + + + + + + 取消 + 确认 + + + \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/components/select-group-position/index.wxss b/yanzhu-ui-app/miniprogram/components/select-group-position/index.wxss new file mode 100644 index 00000000..3c4d8af0 --- /dev/null +++ b/yanzhu-ui-app/miniprogram/components/select-group-position/index.wxss @@ -0,0 +1,129 @@ +/* newComponents/select-person/index.wxss */ +page{ + height:100% +} +.rectifier_add_to{ + width: 100rpx; + height: 100rpx; + margin: auto; + background: #252d41; + text-align: center; + line-height: 110rpx; + font-size: 50rpx; + color: #57668f; + font-weight: bold; + border-radius: 5rpx; +} +.rectifier_max{ + width: 100%; + background: #232a44; + border-radius: 15rpx; + position: relative; + height: 100%; +} +.rectifier_title{ + position: relative; + background: #27304f; + border-radius: 15rpx; + text-align: center; + padding:20rpx 15rpx; +} +.rectifier_close{ + position: absolute; + width: 50rpx; + height: 50rpx; + right: 20rpx; + top: 12rpx; + line-height: 60rpx; + text-align: center; +} +.rectifier_list{ + padding:20rpx 40rpx; +} +.rectifier_list_height{ + height: 990rpx; + overflow: auto; +} +.rectifier_list_for{ + display: flex; + align-items: center; + padding: 18rpx 15rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.rectifier_list_radio{ + width: 70rpx; +} +.rectifier_list_radio_circle{ + width: 30rpx; + height: 30rpx; + border-radius: 50%; + border: 1px solid #6576a2; +} +.rectifier_list_radio_circle.active{ + background: #8262f3; + border: 1px solid #8262f3; +} +.rectifier_list_name{ + padding-left: 10rpx; + color: #6576a2; +} +.rectifier_list_name.active{ + color: #ffffff; +} +.rectifier_btn{ + display: flex; + align-items: center; + background: #27304f; + border-radius: 0 0 15rpx 15rpx; +} +.rectifier_btn view{ + width: 50%; + text-align: center; + height: 80rpx; + line-height: 80rpx; + color:#6874a4; +} +.rectifier_btn view:last-child{ + border-left: 1px solid #6874a4; + color: #ffffff; +} +.rectifier_list-group_for{ + height: 65rpx; + background-color: #879ff97d; + line-height: 65rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.inspect_input_fill_in { + height: 90rpx; + background: #212737; + border-radius: 10rpx; + padding: 0 30rpx; +} + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/yanzhu-ui-app/miniprogram/config.js b/yanzhu-ui-app/miniprogram/config.js index 62dcab21..aa17fc72 100644 --- a/yanzhu-ui-app/miniprogram/config.js +++ b/yanzhu-ui-app/miniprogram/config.js @@ -3,5 +3,6 @@ module.exports = { timeout: 60000, appId: "wx2350a5efb3f28e66", baseUrl: 'http://127.0.0.1:8080', + baseImgUrl: 'http://127.0.0.1:9300', noSecuritys:['/code','/auth/wxLogin','/auth/getMaOpenId','/auth/getMaPhoneNumber','/auth/maLogin'] }; \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/images/exam-icon.png b/yanzhu-ui-app/miniprogram/images/exam-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bf2b3a0203b8cab83a0115d74e30a6a0090f3e68 GIT binary patch literal 704 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 Zz#^+0@j;*a@g2(-7IW3bARu7F{{Y%!b;AGv literal 0 HcmV?d00001 diff --git a/yanzhu-ui-app/miniprogram/images/radio-selected.png b/yanzhu-ui-app/miniprogram/images/radio-selected.png new file mode 100644 index 0000000000000000000000000000000000000000..c767d7a7d26b35ba6f2e781d51a81450b9b09425 GIT binary patch literal 547 zcmV+;0^I$HP)Px$-AP12RA@u(nZa?wFc3xmx{;7h;AYYRa0sphs01!R2f??{Nt{N!8F}!GkY(A4 zBqTEOl^OfJ{VODU2~U2}lk+19gicVKKz`;)R%642b!b2U6)~=LhF!U!O6BPY2zX+A zMF6fMR7{wu5*>lJBkv=rysn1V%aUgD4;_K|iAD7%5hfszs>_mIhXgoM_y+5;q`RW) z5=a6*6HE#CtnQe5N1FgM3S@X8#?~YfrGS7hS9B2I`I$E+iRc7wyX#f1x=A7`0Uf*$ zF`WjY5%>#yEE}0PlojQI?%GDc%}@LZU>frxwt^3xfHizbfzBziZIdx=Be#_GA|AWp zNDu9t;cx%<;>Bq{)br|kuoC#qhI4zcQ+TTulHuE`4D6cD;q3$n+j2oWHPRjl6TH>? zwp|O2kRZn4V?~8V)XB#JD**w;28pc3qz8UV46#XBU)BO92_0R2W@qqLYe0qTOF}tS zI)!&CFqDMr%D07a(n4~TbxHVwcb-5iB1_~)UK2Gtte4Aq0Px$y-7qtRA@u(nc;E5FbsvINlG^IG9jX;WfM)G3d3Ag!x=4_&G4b#d1U8*n_|tU`=NCc zS2vunu&Vgh5_*Uq*f&1gj)Q%t)Y6HrSrXrL-fk_S8i+F@@;-?|>t#VJ0E;R? z>?XwXM&*B-=Fk9`gpkw`k(&6{J&@`Xof!W}Tf87I5>Q{R1E{BT<^wnHz#onIDnP$0t$qLi002ovPDHLk FV1icd>2?4B literal 0 HcmV?d00001 diff --git a/yanzhu-ui-app/miniprogram/images/todaySubmit2.png b/yanzhu-ui-app/miniprogram/images/todaySubmit2.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c00df76d2417694c6184e4f45bcaaee83df5c5 GIT binary patch literal 17539 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 HpEmd3bM1nr literal 0 HcmV?d00001 diff --git a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxss b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxss index afaf37be..a1726496 100644 --- a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxss +++ b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxss @@ -1 +1 @@ -@import '../common/index.wxss';.van-checkbox{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:20px;line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{-webkit-flex:none;flex:none}.van-checkbox__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;font-size:20px;font-size:var(--checkbox-size,20px);border:1px solid #c8c9cc;border:1px solid var(--checkbox-border-color,#c8c9cc);transition-duration:.2s;transition-duration:var(--checkbox-transition-duration,.2s)}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--checkbox-checked-icon-color,#1989fa)}.van-checkbox__icon--disabled{background-color:#ebedf0;background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c8c9cc;color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;margin-left:10px;margin-left:var(--checkbox-label-margin,10px);color:#323233;color:var(--checkbox-label-color,#323233)}.van-checkbox__label--left{float:left;margin:0 10px 0 0;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:#c8c9cc;color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0} \ No newline at end of file +@import '../common/index.wxss';.van-checkbox{display:-webkit-flex;display:flex;font-weight:500;margin-bottom:10rpx;-webkit-align-items:center;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:20px;line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{-webkit-flex:none;flex:none}.van-checkbox__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;font-size:20px;font-size:var(--checkbox-size,20px);border:1px solid #c8c9cc;border:1px solid var(--checkbox-border-color,#c8c9cc);transition-duration:.2s;transition-duration:var(--checkbox-transition-duration,.2s)}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--checkbox-checked-icon-color,#1989fa)}.van-checkbox__icon--disabled{background-color:#ebedf0;background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c8c9cc;color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;margin-left:10px;margin-left:var(--checkbox-label-margin,10px);color:#cccccc;color:var(--checkbox-label-color,#cccccc)}.van-checkbox__label--left{float:left;margin:0 10px 0 0;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:#c8c9cc;color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0} \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/radio/index.wxss b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/radio/index.wxss index 96c81f0f..c35641dc 100644 --- a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/radio/index.wxss +++ b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/radio/index.wxss @@ -1 +1 @@ -@import '../common/index.wxss';.van-radio{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none}.van-radio__icon-wrap{-webkit-flex:none;flex:none}.van-radio__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;border:1px solid #c8c9cc;border:1px solid var(--radio-border-color,#c8c9cc);font-size:20px;font-size:var(--radio-size,20px);transition-duration:.2s;transition-duration:var(--radio-transition-duration,.2s)}.van-radio__icon--round{border-radius:100%}.van-radio__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--radio-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--radio-checked-icon-color,#1989fa)}.van-radio__icon--disabled{background-color:#ebedf0;background-color:var(--radio-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--radio-disabled-icon-color,#c8c9cc)}.van-radio__icon--disabled.van-radio__icon--checked{color:#c8c9cc;color:var(--radio-disabled-icon-color,#c8c9cc)}.van-radio__label{word-wrap:break-word;margin-left:10px;margin-left:var(--radio-label-margin,10px);color:#323233;color:var(--radio-label-color,#323233);line-height:20px;line-height:var(--radio-size,20px)}.van-radio__label--left{float:left;margin:0 10px 0 0;margin:0 var(--radio-label-margin,10px) 0 0}.van-radio__label--disabled{color:#c8c9cc;color:var(--radio-disabled-label-color,#c8c9cc)}.van-radio__label:empty{margin:0} \ No newline at end of file +@import '../common/index.wxss';.van-radio{display:-webkit-flex;display:flex;font-weight:500;margin-bottom:10rpx;-webkit-align-items:center;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none}.van-radio__icon-wrap{-webkit-flex:none;flex:none}.van-radio__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;border:1px solid #c8c9cc;border:1px solid var(--radio-border-color,#c8c9cc);font-size:20px;font-size:var(--radio-size,20px);transition-duration:.2s;transition-duration:var(--radio-transition-duration,.2s)}.van-radio__icon--round{border-radius:100%}.van-radio__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--radio-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--radio-checked-icon-color,#1989fa)}.van-radio__icon--disabled{background-color:#ebedf0;background-color:var(--radio-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--radio-disabled-icon-color,#c8c9cc)}.van-radio__icon--disabled.van-radio__icon--checked{color:#c8c9cc;color:var(--radio-disabled-icon-color,#c8c9cc)}.van-radio__label{word-wrap:break-word;margin-left:10px;margin-left:var(--radio-label-margin,10px);color:#cccccc;color:var(--radio-label-color,#cccccc);line-height:20px;line-height:var(--radio-size,20px)}.van-radio__label--left{float:left;margin:0 10px 0 0;margin:0 var(--radio-label-margin,10px) 0 0}.van-radio__label--disabled{color:#c8c9cc;color:var(--radio-disabled-label-color,#c8c9cc)}.van-radio__label:empty{margin:0} \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.js b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.js index c41e5ade..e813ce13 100644 --- a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.js +++ b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.js @@ -8,6 +8,10 @@ component_1.VantComponent({ icon: String, steps: Array, active: Number, + rejectNode:{ + type: Number, + value: 100, + }, direction: { type: String, value: 'horizontal', diff --git a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.wxml b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.wxml index 29f1bfd0..376ffa58 100644 --- a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.wxml +++ b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.wxml @@ -5,7 +5,7 @@ {{ item.text }} - {{ item.desc }} + {{ item.desc }} @@ -32,7 +32,6 @@ } else if (index === active) { return 'process'; } - return 'inactive'; } module.exports = get; diff --git a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.wxss b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.wxss index 9b94a646..69565bfa 100644 --- a/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.wxss +++ b/yanzhu-ui-app/miniprogram/miniprogram_npm/@vant/weapp/steps/index.wxss @@ -1 +1 @@ -@import '../common/index.wxss';.van-steps{overflow:hidden;background-color:#fff;background-color:var(--steps-background-color,#fff)}.van-steps--horizontal{padding:10px}.van-steps--horizontal .van-step__wrapper{position:relative;display:-webkit-flex;display:flex;overflow:hidden}.van-steps--vertical{padding-left:10px}.van-steps--vertical .van-step__wrapper{padding:0 0 0 20px}.van-step{position:relative;-webkit-flex:1;flex:1;font-size:14px;font-size:var(--step-font-size,14px);color:#969799;color:var(--step-text-color,#969799)}.van-step--finish{color:#323233;color:var(--step-finish-text-color,#323233)}.van-step__circle{border-radius:50%;width:5px;width:var(--step-circle-size,5px);height:5px;height:var(--step-circle-size,5px);background-color:#969799;background-color:var(--step-circle-color,#969799)}.van-step--horizontal{padding-bottom:14px}.van-step--horizontal:first-child .van-step__title{-webkit-transform:none;transform:none}.van-step--horizontal:first-child .van-step__circle-container{padding:0 8px 0 0;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.van-step--horizontal:last-child{position:absolute;right:0;width:auto}.van-step--horizontal:last-child .van-step__title{text-align:right;-webkit-transform:none;transform:none}.van-step--horizontal:last-child .van-step__circle-container{right:0;padding:0 0 0 8px;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.van-step--horizontal .van-step__circle-container{position:absolute;bottom:6px;z-index:1;-webkit-transform:translate3d(-50%,50%,0);transform:translate3d(-50%,50%,0);background-color:#fff;background-color:var(--white,#fff);padding:0 8px;padding:0 var(--padding-xs,8px)}.van-step--horizontal .van-step__title{display:inline-block;-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0);font-size:12px;font-size:var(--step-horizontal-title-font-size,12px)}.van-step--horizontal .van-step__line{position:absolute;right:0;bottom:6px;left:0;height:2px;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0);background-color:#ebedf0;background-color:var(--step-line-color,#ebedf0)}.van-step--horizontal.van-step--process{color:#323233;color:var(--step-process-text-color,#323233)}.van-step--horizontal.van-step--process .van-step__icon{display:block;line-height:1;}.van-step--vertical{padding:10px 10px 10px 0;line-height:18px}.van-step--vertical:after{border-bottom-width:1px}.van-step--vertical:last-child:after{border-bottom-width:none}.van-step--vertical:first-child:before{position:absolute;top:0;left:-15px;z-index:1;width:1px;height:20px;content:"";background-color:#fff;background-color:var(--white,#fff)}.van-step--vertical .van-step__circle,.van-step--vertical .van-step__icon,.van-step--vertical .van-step__line{position:absolute;top:19px;left:-14px;z-index:2;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.van-step--vertical .van-step__icon{line-height:1;font-size:12px;font-size:var(--step-icon-size,12px)}.van-step--vertical .van-step__line{z-index:1;width:1px;height:100%;-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0);background-color:#ebedf0;background-color:var(--step-line-color,#ebedf0)}.van-step__title{padding-bottom: 10rpx;}.van-step__title .desc-class{color: #FFF;} \ No newline at end of file +@import '../common/index.wxss';.van-steps{overflow:hidden;background-color:#fff;background-color:var(--steps-background-color,#fff)}.van-steps--horizontal{padding:10px}.van-steps--horizontal .van-step__wrapper{position:relative;display:-webkit-flex;display:flex;overflow:hidden}.van-steps--vertical{padding-left:10px}.van-steps--vertical .van-step__wrapper{padding:0 0 0 20px}.van-step{position:relative;-webkit-flex:1;flex:1;font-size:14px;font-size:var(--step-font-size,14px);color:#969799;color:var(--step-text-color,#969799)}.van-step--finish{color:#323233;color:var(--step-finish-text-color,#323233)}.van-step__circle{border-radius:50%;width:5px;width:var(--step-circle-size,5px);height:5px;height:var(--step-circle-size,5px);background-color:#969799;background-color:var(--step-circle-color,#969799)}.van-step--horizontal{padding-bottom:14px}.van-step--horizontal:first-child .van-step__title{-webkit-transform:none;transform:none}.van-step--horizontal:first-child .van-step__circle-container{padding:0 8px 0 0;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.van-step--horizontal:last-child{position:absolute;right:0;width:auto}.van-step--horizontal:last-child .van-step__title{text-align:right;-webkit-transform:none;transform:none}.van-step--horizontal:last-child .van-step__circle-container{right:0;padding:0 0 0 8px;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.van-step--horizontal .van-step__circle-container{position:absolute;bottom:6px;z-index:1;-webkit-transform:translate3d(-50%,50%,0);transform:translate3d(-50%,50%,0);background-color:#fff;background-color:var(--white,#fff);padding:0 8px;padding:0 var(--padding-xs,8px)}.van-step--horizontal .van-step__title{display:inline-block;-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0);font-size:12px;font-size:var(--step-horizontal-title-font-size,12px)}.van-step--horizontal .van-step__line{position:absolute;right:0;bottom:6px;left:0;height:2px;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0);background-color:#ebedf0;background-color:var(--step-line-color,#ebedf0)}.van-step--horizontal.van-step--process{color:#323233;color:var(--step-process-text-color,#323233)}.van-step--horizontal.van-step--process .van-step__icon{display:block;line-height:1;}.van-step--vertical{padding:10px 10px 10px 0;line-height:18px}.van-step--vertical:after{border-bottom-width:1px}.van-step--vertical:last-child:after{border-bottom-width:none}.van-step--vertical:first-child:before{position:absolute;top:0;left:-15px;z-index:1;width:1px;height:20px;content:"";background-color:#fff;background-color:var(--white,#fff)}.van-step--vertical .van-step__circle,.van-step--vertical .van-step__icon,.van-step--vertical .van-step__line{position:absolute;top:19px;left:-14px;z-index:2;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.van-step--vertical .van-step__icon{line-height:1;font-size:12px;font-size:var(--step-icon-size,12px)}.van-step--vertical .van-step__line{z-index:1;width:1px;height:100%;-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0);background-color:#ebedf0;background-color:var(--step-line-color,#ebedf0)}.van-step__title{padding-bottom: 10rpx;} \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.js b/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.js index 57502cee..f462ae9a 100644 --- a/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.js +++ b/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.js @@ -12,6 +12,10 @@ Component({ fileUrlArray:{ type:Array }, + iconClass:{ + type:String, + value:"in-add-click" + } }, /**数据监听 */ diff --git a/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.wxml b/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.wxml index 1f4c6015..c3d18e22 100644 --- a/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.wxml +++ b/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.wxml @@ -8,7 +8,7 @@ - + diff --git a/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.wxss b/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.wxss index 2db5ce3e..9d55434d 100644 --- a/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.wxss +++ b/yanzhu-ui-app/miniprogram/pages/components/file-uploader/index.wxss @@ -52,6 +52,23 @@ border-radius: 10rpx; background: #28345a url("http://fileimg.makalu.cc/WEB_162F576788AE44F08ADDFFC06CD5923F.png") no-repeat center/70%; } + + .in-zcard-click{ + width: 180rpx; + height:180rpx; + border: 1px dashed #28345a; + border-radius: 10rpx; + background: #28345a url("https://guangzhou.sxyanzhu.com/YZLJXM/profile/xmgl/static/z_card.png") no-repeat center/100%; + } + + .in-fcard-click{ + width: 180rpx; + height:180rpx; + border: 1px dashed #28345a; + border-radius: 10rpx; + background: #28345a url("https://guangzhou.sxyanzhu.com/YZLJXM/profile/xmgl/static/f_card.png") no-repeat center/100%; + } + .in-img-div image{ width: 180rpx; height: 180rpx; diff --git a/yanzhu-ui-app/miniprogram/pages/components/sign/sign.wxml b/yanzhu-ui-app/miniprogram/pages/components/sign/sign.wxml index 5e818ec3..25cee3a7 100644 --- a/yanzhu-ui-app/miniprogram/pages/components/sign/sign.wxml +++ b/yanzhu-ui-app/miniprogram/pages/components/sign/sign.wxml @@ -1,7 +1,7 @@ - + 点击签名 @@ -18,7 +18,8 @@ - + + 关闭 @@ -33,6 +34,7 @@ 确定 + diff --git a/yanzhu-ui-app/miniprogram/pages/components/sign/sign.wxss b/yanzhu-ui-app/miniprogram/pages/components/sign/sign.wxss index 6455111f..522c7a6a 100644 --- a/yanzhu-ui-app/miniprogram/pages/components/sign/sign.wxss +++ b/yanzhu-ui-app/miniprogram/pages/components/sign/sign.wxss @@ -94,5 +94,9 @@ height: 150rpx; width: 280rpx; position: relative; +} +.ps{ + padding: 15rpx 0rpx; + border-radius: 10rpx; } \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/pages/index/index.js b/yanzhu-ui-app/miniprogram/pages/index/index.js deleted file mode 100644 index e825fbc5..00000000 --- a/yanzhu-ui-app/miniprogram/pages/index/index.js +++ /dev/null @@ -1,211 +0,0 @@ -import { - findMyTask, - getUserInfo, - findMyProjectList, - selectRoleMenuList -} from '../../api/publics' -import { - loginOut -} from '../../api/login' -import { - removeToken -} from '../../utils/auth' -import { - checkApplyList - } from '../../api/projectApply' -const app = getApp(); -Page({ - - /** - * 页面的初始数据 - */ - data: { - userData: null, - menuList: [], - show: false, - todoDB: 0, - chckDB: 0, - isCheckRole: false - }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad(options) { - this.initMenuList(); - this.loadInfo(); - this.initMyTask(); - this.initMyProject(); - }, - - /** - * 加载用户信息 - */ - loadInfo() { - getUserInfo().then(res => { - if (res.code == 200) { - app.globalData.userData = res.data; - this.setData({ - userData: res.data - }) - let roles = res.data.roles; - if(roles!=null && roles.length>0){ - roles.forEach(role =>{ - if(role.roleId==88){ - this.setData({ - isCheckRole: true, - }) - let params = "activeName=dys&pageNum=1&pageSize=1000"; - checkApplyList(params).then(dbo =>{ - this.setData({ - chckDB: dbo.total, - }) - }) - } - }); - } - } - }); - }, - - initMenuList: function () { - var that = this; - selectRoleMenuList({}).then(res => { - if (res.code == 200) { - that.setData({ - menuList: res.data - }) - } - }); - }, - - initMyTask: function () { - findMyTask({}).then(res => { - this.setData({ - todoDB: res.data.todo - }) - }); - }, - - initMyProject: function () { - findMyProjectList().then(res => { - if (res.data.length > 0) { - let list = []; - let activeProject = false; - res.data.forEach(item => { - //判断选中项目是否在建中... - if (item.id == app.globalData.useProjectId) { - activeProject = true; - } - list.push({ - "id": item.id, - "text": item.name - }); - }); - app.globalData.projectInfoList = list; - if (!activeProject) { - //没有选中项目默认选中最新项目 - app.globalData.useProjectId = res.data[0].id; - app.globalData.useProjectName = res.data[0].name; - } - } - }); - }, - - /** - * 路由跳转 - */ - goMenu: function (event) { - wx.redirectTo({ - url: event.currentTarget.dataset.url - }) - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady() { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow() { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide() { - - }, - - /** - * 左侧抽屉显示 - */ - showPopup() { - this.setData({ - show: true - }); - }, - - /** - * 左侧抽屉隐藏 - */ - onClosePopup() { - this.setData({ - show: false - }); - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload() { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh() { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom() { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage() { - - }, - - /** - * 修改密码 - */ - XGMM: function () { - wx.redirectTo({ - url: '../updatePwd/updatePwd' - }) - }, - - /** - * 退出登录 - */ - TCDL: function () { - loginOut().then(response => { - removeToken(); - wx.redirectTo({ - url: '../login/login', - }); - }); - } -}) \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/pages/index/index.json b/yanzhu-ui-app/miniprogram/pages/index/index.json deleted file mode 100644 index ba2821f5..00000000 --- a/yanzhu-ui-app/miniprogram/pages/index/index.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "usingComponents": {}, - "navigationStyle":"custom" -} \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/pages/index/index.wxml b/yanzhu-ui-app/miniprogram/pages/index/index.wxml deleted file mode 100644 index 62f3022e..00000000 --- a/yanzhu-ui-app/miniprogram/pages/index/index.wxml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - 临建管家系统 - - - - - - - - - - - - {{userData.parDeptName}} - - - - - - - - - {{userData.nickName}} - - - - - - - 修改密码 - - - - - - - 退出登录 - - - - - - - - - - - {{userData.nickName}} - - - {{userData.dept.deptName}} - - - {{userData.parDeptName}} - - - - - - - - - - - {{todoDB}} - {{chckDB}} - - {{item.menuName}} - - - - - \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/pages/index/index.wxss b/yanzhu-ui-app/miniprogram/pages/index/index.wxss deleted file mode 100644 index f29d951b..00000000 --- a/yanzhu-ui-app/miniprogram/pages/index/index.wxss +++ /dev/null @@ -1,64 +0,0 @@ -page { - background: #191d28 url("http://fileimg.makalu.cc/CORE_40247DD946964A15AA0D4000E1031E19.png") no-repeat bottom/100%; - } -.pro_user { - background: url("https://guangzhou.sxyanzhu.com/YZLJXM/profile/static/login_name.png") no-repeat left/40rpx; - height: 80rpx; - line-height: 80rpx; - padding-left: 50rpx; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - word-break: break-all; -} - -.pro_dept { - background: url("https://guangzhou.sxyanzhu.com/YZLJXM/profile/static/dept.png") no-repeat left/40rpx; - height: 80rpx; - line-height: 80rpx; - padding-left: 50rpx; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - word-break: break-all; -} - -.pro_project { - background: url("https://guangzhou.sxyanzhu.com/YZLJXM/profile/static/project.png") no-repeat left/40rpx; - height: 80rpx; - line-height: 80rpx; - padding-left: 50rpx; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - word-break: break-all; -} - -.pro_herads { - text-align: right; - margin-top: -280rpx; -} - -.pro_herads image { - width: 280rpx; - height: 280rpx; -} - -.menu_max { - padding: 10rpx 50rpx 0; -} - -.menu_min { - padding: 30rpx 0; - text-align: center; -} - -.menu_min image { - width: 150rpx; - height: 150rpx; -} - -.menu_min view { - padding: 10rpx; - color: #89a4eb; -} \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/pages/login/login.js b/yanzhu-ui-app/miniprogram/pages/login/login.js index b1bb4f65..af58fe2b 100644 --- a/yanzhu-ui-app/miniprogram/pages/login/login.js +++ b/yanzhu-ui-app/miniprogram/pages/login/login.js @@ -26,7 +26,7 @@ Page({ code: '', uuid: '', codeUrl: '', - checked: true + checked: true, }, //获取填写的账号信息 diff --git a/yanzhu-ui-app/miniprogram/pages/login/login.json b/yanzhu-ui-app/miniprogram/pages/login/login.json index f8186c56..a59e8a09 100644 --- a/yanzhu-ui-app/miniprogram/pages/login/login.json +++ b/yanzhu-ui-app/miniprogram/pages/login/login.json @@ -3,5 +3,6 @@ "van-image": "@vant/weapp/image/index", "van-checkbox": "@vant/weapp/checkbox/index", "van-checkbox-group": "@vant/weapp/checkbox-group/index" - } + }, + "navigationStyle":"custom" } \ No newline at end of file diff --git a/yanzhu-ui-app/miniprogram/pages/login/login.wxml b/yanzhu-ui-app/miniprogram/pages/login/login.wxml index bfda00e3..3c4f0dee 100644 --- a/yanzhu-ui-app/miniprogram/pages/login/login.wxml +++ b/yanzhu-ui-app/miniprogram/pages/login/login.wxml @@ -5,6 +5,9 @@ + + +