Procházet zdrojové kódy

标准规范部分图片、首页图片轮播加标题、部分流程文件和配置

Wang Zi Wen před 2 roky
rodič
revize
54b0e7482c
31 změnil soubory, kde provedl 1991 přidání a 66 odebrání
  1. 18 0
      pom.xml
  2. 8 3
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/branch/TBranchDemeanorController.java
  3. 8 3
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/branch/TBranchPublicizeController.java
  4. 2 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/branch/vo/CalcVO.java
  5. 36 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/branch/vo/ProfilesVO.java
  6. 14 0
      ruoyi-admin/src/main/resources/application.yml
  7. 142 0
      ruoyi-system/src/main/java/com/ruoyi/branch/domain/approve/DevProcess.java
  8. 312 0
      ruoyi-system/src/main/java/com/ruoyi/branch/domain/approve/DevTask.java
  9. binární
      ruoyi-ui/src/assets/images/bzgf/党员教育管理-信息化管理1.png
  10. binární
      ruoyi-ui/src/assets/images/bzgf/党员教育管理-信息化管理2.png
  11. binární
      ruoyi-ui/src/assets/images/bzgf/党员教育管理-监督与处置2.png
  12. binární
      ruoyi-ui/src/assets/images/bzgf/党员教育管理-监督与处置3.png
  13. 3 0
      ruoyi-ui/src/views/branch/approve/index.vue
  14. 312 0
      ruoyi-ui/src/views/branch/approve/myapprove/index.vue
  15. 501 0
      ruoyi-ui/src/views/branch/approve/pending/index.vue
  16. 36 0
      ruoyi-ui/src/views/branch/approve/processImg/index.vue
  17. 319 0
      ruoyi-ui/src/views/branch/approve/taskdone/index.vue
  18. 3 2
      ruoyi-ui/src/views/branch/bzgf/dyjygl/jdycz/index.vue
  19. 8 0
      ruoyi-ui/src/views/branch/bzgf/dyjygl/xxhgl/index.vue
  20. 1 1
      ruoyi-ui/src/views/branch/bzgf/dyjygl/zzgxgl/index.vue
  21. 6 1
      ruoyi-ui/src/views/branch/bzgf/gzjz/dzbwyhjdsx/index.vue
  22. 6 1
      ruoyi-ui/src/views/branch/bzgf/gzjz/dzbzyrw/index.vue
  23. 16 1
      ruoyi-ui/src/views/branch/bzgf/zzsh/mzpydy/index.vue
  24. 5 2
      ruoyi-ui/src/views/branch/bzgf/zzsh/shyk/dklc/index.vue
  25. 6 1
      ruoyi-ui/src/views/branch/bzgf/zzsh/shyk/dxzhlc/index.vue
  26. 42 1
      ruoyi-ui/src/views/branch/bzgf/zzsh/shyk/zbdhlc/index.vue
  27. 6 1
      ruoyi-ui/src/views/branch/bzgf/zzsh/shyk/zwhlc/index.vue
  28. 16 1
      ruoyi-ui/src/views/branch/bzgf/zzsh/txth/index.vue
  29. 42 1
      ruoyi-ui/src/views/branch/bzgf/zzsh/ztdr/index.vue
  30. 41 1
      ruoyi-ui/src/views/branch/bzgf/zzsh/zzshh/index.vue
  31. 82 46
      ruoyi-ui/src/views/index.vue

+ 18 - 0
pom.xml

@@ -37,6 +37,24 @@
     <dependencyManagement>
         <dependencies>
 
+            <!-- 工作流 -->
+            <dependency>
+                <groupId>org.activiti</groupId>
+                <artifactId>activiti-engine</artifactId>
+                <version>6.0.0</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.mybatis</groupId>
+                        <artifactId>mybatis</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>org.activiti</groupId>
+                <artifactId>activiti-spring</artifactId>
+                <version>6.0.0</version>
+            </dependency>
+
             <!--oracle驱动-->
             <dependency>
                 <groupId>com.oracle</groupId>

+ 8 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/branch/TBranchDemeanorController.java

@@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse;
 import com.ruoyi.branch.domain.TBranchPublicize;
 import com.ruoyi.branch.domain.TFile;
 import com.ruoyi.branch.service.ITFileService;
+import com.ruoyi.web.controller.branch.vo.ProfilesVO;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -52,17 +53,21 @@ public class TBranchDemeanorController extends BaseController
         TBranchDemeanor tBranchDemeanor = new TBranchDemeanor();
         tBranchDemeanor.setIsPinned("1");
         List<TBranchDemeanor> tBranchDemeanors = tBranchDemeanorService.selectTBranchDemeanorList(tBranchDemeanor);
-        List<TFile> fileList = new ArrayList<>();
+        List<ProfilesVO> profileVOs = new ArrayList<>();
         for (TBranchDemeanor BranchDemeanor : tBranchDemeanors) {
             TFile tFile = new TFile();
             tFile.setTableName("branchDemeanor");
             tFile.setTableId(BranchDemeanor.getDemeanorId());
             List<TFile> tFiles = fileService.selectTFileList(tFile);
             if (tFiles != null) {
-                fileList.add(tFiles.get(0));
+                TFile file = tFiles.get(0);
+                ProfilesVO vo = new ProfilesVO();
+                vo.setUrl(file.getUrl());
+                vo.setTitle(BranchDemeanor.getDemeanorTitle());
+                profileVOs.add(vo);
             }
         }
-        return AjaxResult.success(fileList);
+        return AjaxResult.success(profileVOs);
     }
 
     /**

+ 8 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/branch/TBranchPublicizeController.java

@@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.ruoyi.branch.domain.TFile;
 import com.ruoyi.branch.service.ITFileService;
+import com.ruoyi.web.controller.branch.vo.ProfilesVO;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -51,17 +52,21 @@ public class TBranchPublicizeController extends BaseController
         TBranchPublicize tBranchPublicize = new TBranchPublicize();
         tBranchPublicize.setIsPinned("1");
         List<TBranchPublicize> tBranchPublicizes = tBranchPublicizeService.selectTBranchPublicizeList(tBranchPublicize);
-        List<TFile> fileList = new ArrayList<>();
+        List<ProfilesVO> profileVOs = new ArrayList<>();
         for (TBranchPublicize branchPublicize : tBranchPublicizes) {
             TFile tFile = new TFile();
             tFile.setTableName("branchPublicize");
             tFile.setTableId(branchPublicize.getPublicizeId());
             List<TFile> tFiles = fileService.selectTFileList(tFile);
             if (tFiles != null) {
-                fileList.add(tFiles.get(0));
+                TFile file = tFiles.get(0);
+                ProfilesVO vo = new ProfilesVO();
+                vo.setUrl(file.getUrl());
+                vo.setTitle(branchPublicize.getPublicizeTitle());
+                profileVOs.add(vo);
             }
         }
-        return AjaxResult.success(fileList);
+        return AjaxResult.success(profileVOs);
     }
 
     /**

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/branch/vo/CalcVO.java

@@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.BaseEntity;
 import java.math.BigDecimal;
 
 /**
+ * 计算党费VO
+ *
  * @author Wang Zi Wen
  * @email wangggziwen@163.com
  * @date 2023/07/17 12:59:21

+ 36 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/branch/vo/ProfilesVO.java

@@ -0,0 +1,36 @@
+package com.ruoyi.web.controller.branch.vo;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.math.BigDecimal;
+
+/**
+ * 首页轮播图片VO
+ *
+ * @author Wang Zi Wen
+ * @email wangggziwen@163.com
+ * @date 2023/07/17 12:59:21
+ */
+public class ProfilesVO extends BaseEntity {
+    /** 图片地址 */
+    private String url;
+
+    /** 标题 */
+    private String title;
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+}

+ 14 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -49,6 +49,20 @@ user:
 
 # Spring配置
 spring:
+  #activiti配置
+  activiti:
+    database-schema-update: false
+    db-identity-used: true
+    history-level: full
+    db-history-used: true
+    #启用异步执行器
+    job-executor-activate: true
+  freemarker:
+    checkTemplateLocation: false
+    classic-compatible: true
+    suffix: .ftlh
+    ettings:
+      recognize_standard_file_extensions: true
   # 资源信息
   messages:
     # 国际化资源文件路径

+ 142 - 0
ruoyi-system/src/main/java/com/ruoyi/branch/domain/approve/DevProcess.java

@@ -0,0 +1,142 @@
+//package com.ruoyi.branch.domain.approve;
+//
+//import com.fasterxml.jackson.annotation.JsonFormat;
+//import com.ruoyi.project.ehs.domain.TApproveDanger;
+//import com.ruoyi.project.sems.domain.TApprove;
+//import com.ruoyi.project.sems.his.domain.TApproveSpecModify;
+//
+//import java.util.Date;
+//
+///**
+// * 申请管理我的申请显示实体类
+// *
+// * @author ruoyi
+// * @date 2021-02-23
+// */
+//public class DevProcess {
+//
+//    /** 流程ID */
+//    private String processId;
+//
+//    /** 流程名称 */
+//    private String processName;
+//
+//    /** 流程创建时间 */
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+//    private Date processCreateTime;
+//
+//    /** 业务键 */
+//    private String businessKey;
+//
+//    private String apNo;
+//
+//    private String apName;
+//
+//    /** 隐患申请对象 */
+//    private TApproveDanger tApprove;
+//    private TApprove specApprove;
+//    private Object approveObject;
+//    private TApproveSpecModify approveSpecModify;
+//    /** 是否结束 */
+//    private boolean isEnd;
+//
+//    public String getApName() {
+//        return apName;
+//    }
+//
+//    public void setApName(String apName) {
+//        this.apName = apName;
+//    }
+//
+//    public String getApNo() {
+//        return apNo;
+//    }
+//
+//    public void setApNo(String apNo) {
+//        this.apNo = apNo;
+//    }
+//
+//    public String getProcessId() {
+//        return processId;
+//    }
+//
+//    public void setProcessId(String processId) {
+//        this.processId = processId;
+//    }
+//
+//    public String getProcessName() {
+//        return processName;
+//    }
+//
+//    public void setProcessName(String processName) {
+//        this.processName = processName;
+//    }
+//
+//    public Date getProcessCreateTime() {
+//        return processCreateTime;
+//    }
+//
+//    public void setProcessCreateTime(Date processCreateTime) {
+//        this.processCreateTime = processCreateTime;
+//    }
+//
+//    public String getBusinessKey() {
+//        return businessKey;
+//    }
+//
+//    public void setBusinessKey(String businessKey) {
+//        this.businessKey = businessKey;
+//    }
+//
+//    public TApproveDanger gettApprove() {
+//        return tApprove;
+//    }
+//
+//    public void settApprove(TApproveDanger tApprove) {
+//        this.tApprove = tApprove;
+//    }
+//
+//    public boolean isEnd() {
+//        return isEnd;
+//    }
+//
+//    public void setEnd(boolean end) {
+//        isEnd = end;
+//    }
+//
+//    public TApprove getSpecApprove() {
+//        return specApprove;
+//    }
+//
+//    public void setSpecApprove(TApprove specApprove) {
+//        this.specApprove = specApprove;
+//    }
+//
+//    public TApproveSpecModify getApproveSpecModify() {
+//        return approveSpecModify;
+//    }
+//
+//    public void setApproveSpecModify(TApproveSpecModify approveSpecModify) {
+//        this.approveSpecModify = approveSpecModify;
+//    }
+//
+//    public Object getApproveObject() {
+//        return approveObject;
+//    }
+//
+//    public void setApproveObject(Object approveObject) {
+//        this.approveObject = approveObject;
+//    }
+//
+//    @Override
+//    public String toString() {
+//        return "DevProcess{" +
+//                "processId='" + processId + '\'' +
+//                ", processName='" + processName + '\'' +
+//                ", processCreateTime=" + processCreateTime +
+//                ", businessKey='" + businessKey + '\'' +
+//                ", tApprove=" + tApprove +
+//                ", isEnd=" + isEnd +
+//                '}';
+//    }
+//}

+ 312 - 0
ruoyi-system/src/main/java/com/ruoyi/branch/domain/approve/DevTask.java

@@ -0,0 +1,312 @@
+//package com.ruoyi.branch.domain.approve;
+//
+//import com.fasterxml.jackson.annotation.JsonFormat;
+//import com.ruoyi.project.apply.domain.TApplyOfflinevalve;
+//import com.ruoyi.project.apply.domain.TApplySafetychange;
+//import com.ruoyi.project.ehs.domain.TApproveAccident;
+//import com.ruoyi.project.ehs.domain.TApproveDanger;
+//import com.ruoyi.project.production.domain.TSaiApply;
+//import com.ruoyi.project.sems.domain.TApprove;
+//import com.ruoyi.project.sems.domain.TApproverFile;
+//import com.ruoyi.project.sems.his.domain.TApproveSpecModify;
+//
+//import java.util.Date;
+//import java.util.List;
+//
+///**
+// * 申请管理我的待办显示实体类
+// *
+// * @author ruoyi
+// * @date 2021-02-23
+// */
+//public class DevTask {
+//
+//    /** 待办任务ID */
+//    private String taskId;
+//
+//    /** 待办任务name */
+//    private String taskName;
+//
+//    /** 待办任务创建时间 */
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    private Date taskCreateTime;
+//
+//    /** 待办任务结束时间 */
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    private Date taskEndTime;
+//
+//    /** 隐患申请对象 */
+//    private Object approveObj;
+//
+//    /** 流程ID */
+//    private String processId;
+//
+//    /** 流程名称 */
+//    private String processName;
+//
+//    /** 流程创建时间 */
+//    private Date processCreateTime;
+//
+//    /** 业务键 */
+//    private String businessKey;
+//
+//    /** 隐患申请对象 */
+//    private TApproveDanger tApprove;
+//
+//    private Object approveObject;
+//
+//    /** 申请对象 */
+//    private TApprove specApprove;
+//    private TApproveSpecModify ApproveSpecModify;
+//    private String apNo;
+//    /** 事件申请对象 */
+//    private TApproveAccident tApproveAccident;
+//
+//    /** 隐患申请状态 */
+//    private String submitType;
+//
+//    /** 审批评论 */
+//    private String comment;
+//
+//    /** 流转办理人姓名 */
+//    private String userName;
+//
+//    /** 执行人措施前url */
+//    private String beforeUrl;
+//
+//    /** 执行人措施前文件名称 */
+//    private String beforeFilename;
+//
+//    /** 执行人措施后url */
+//    private String afterUrl;
+//
+//    /** 执行人措施后文件名称 */
+//    private String afterFilename;
+//
+//    private List<TApproverFile> govFiles;
+//    private String condition;
+//    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+//    private Date govDate;
+//
+//    private TApplyOfflinevalve offlinevalve;
+//
+//    private TApplySafetychange safetychange;
+//
+//    /** SAI开项申请对象 */
+//    private TSaiApply SaiApply;
+//
+//    public TSaiApply getSaiApply() {
+//        return SaiApply;
+//    }
+//
+//    public void setSaiApply(TSaiApply saiApply) {
+//        SaiApply = saiApply;
+//    }
+//
+//    public TApplySafetychange getSafetychange() {
+//        return safetychange;
+//    }
+//
+//    public void setSafetychange(TApplySafetychange safetychange) {
+//        this.safetychange = safetychange;
+//    }
+//
+//    public TApplyOfflinevalve getOfflinevalve() {
+//        return offlinevalve;
+//    }
+//
+//    public void setOfflinevalve(TApplyOfflinevalve offlinevalve) {
+//        this.offlinevalve = offlinevalve;
+//    }
+//
+//    public TApproveSpecModify getApproveSpecModify() {
+//        return ApproveSpecModify;
+//    }
+//
+//    public void setApproveSpecModify(TApproveSpecModify approveSpecModify) {
+//        ApproveSpecModify = approveSpecModify;
+//    }
+//
+//    public Date getGovDate() {
+//        return govDate;
+//    }
+//
+//    public void setGovDate(Date govDate) {
+//        this.govDate = govDate;
+//    }
+//
+//    public List<TApproverFile> getGovFiles() {
+//        return govFiles;
+//    }
+//
+//    public void setGovFiles(List<TApproverFile> govFiles) {
+//        this.govFiles = govFiles;
+//    }
+//
+//    public String getCondition() {
+//        return condition;
+//    }
+//
+//    public void setCondition(String condition) {
+//        this.condition = condition;
+//    }
+//
+//    public TApprove getSpecApprove() {
+//        return specApprove;
+//    }
+//
+//    public void setSpecApprove(TApprove specApprove) {
+//        this.specApprove = specApprove;
+//    }
+//
+//    public Object getApproveObject() {
+//        return approveObject;
+//    }
+//
+//    public void setApproveObject(Object approveObject) {
+//        this.approveObject = approveObject;
+//    }
+//
+//    public String getApNo() {
+//        return apNo;
+//    }
+//
+//    public void setApNo(String apNo) {
+//        this.apNo = apNo;
+//    }
+//
+//    public String getTaskId() {
+//        return taskId;
+//    }
+//
+//    public void setTaskId(String taskId) {
+//        this.taskId = taskId;
+//    }
+//
+//    public String getTaskName() {
+//        return taskName;
+//    }
+//
+//    public void setTaskName(String taskName) {
+//        this.taskName = taskName;
+//    }
+//
+//    public Date getTaskCreateTime() {
+//        return taskCreateTime;
+//    }
+//
+//    public void setTaskCreateTime(Date taskCreateTime) {
+//        this.taskCreateTime = taskCreateTime;
+//    }
+//
+//    public Date getTaskEndTime() {
+//        return taskEndTime;
+//    }
+//
+//    public void setTaskEndTime(Date taskEndTime) {
+//        this.taskEndTime = taskEndTime;
+//    }
+//
+//    public String getProcessId() {
+//        return processId;
+//    }
+//
+//    public void setProcessId(String processId) {
+//        this.processId = processId;
+//    }
+//
+//    public String getProcessName() {
+//        return processName;
+//    }
+//
+//    public void setProcessName(String processName) {
+//        this.processName = processName;
+//    }
+//
+//    public Date getProcessCreateTime() {
+//        return processCreateTime;
+//    }
+//
+//    public void setProcessCreateTime(Date processCreateTime) {
+//        this.processCreateTime = processCreateTime;
+//    }
+//
+//    public String getBusinessKey() {
+//        return businessKey;
+//    }
+//
+//    public void setBusinessKey(String businessKey) {
+//        this.businessKey = businessKey;
+//    }
+//
+//    public TApproveDanger gettApprove() {
+//        return tApprove;
+//    }
+//
+//    public void settApprove(TApproveDanger tApprove) {
+//        this.tApprove = tApprove;
+//    }
+//
+//    public TApproveAccident gettApproveAccident() { return tApproveAccident; }
+//
+//    public void settApproveAccident(TApproveAccident tApproveAccident) { this.tApproveAccident = tApproveAccident; }
+//
+//    public String getSubmitType() {
+//        return submitType;
+//    }
+//
+//    public void setSubmitType(String submitType) {
+//        this.submitType = submitType;
+//    }
+//
+//    public String getComment() { return comment; }
+//
+//    public void setComment(String comment) { this.comment = comment; }
+//
+//    public String getUserName() { return userName; }
+//
+//    public void setUserName(String userName) { this.userName = userName; }
+//    public void setBeforeUrl(String beforeUrl) { this.beforeUrl = beforeUrl; }
+//
+//    public String getBeforeUrl() { return beforeUrl; }
+//    public void setBeforeFilename(String beforeFilename) { this.beforeFilename = beforeFilename; }
+//
+//    public String getBeforeFilename() { return beforeFilename; }
+//    public void setAfterUrl(String afterUrl) { this.afterUrl = afterUrl; }
+//
+//    public String getAfterUrl() { return afterUrl; }
+//    public void setAfterFilename(String afterFilename) { this.afterFilename = afterFilename; }
+//
+//    public String getAfterFilename() { return afterFilename; }
+//
+//    public Object getApproveObj() {
+//        return approveObj;
+//    }
+//
+//    public void setApproveObj(Object approveObj) {
+//        this.approveObj = approveObj;
+//    }
+//
+//    @Override
+//    public String toString() {
+//        return "DevTask{" +
+//                "taskId='" + taskId + '\'' +
+//                ", taskName='" + taskName + '\'' +
+//                ", taskCreateTime=" + taskCreateTime +
+//                ", taskEndTime=" + taskEndTime +
+//                ", processId='" + processId + '\'' +
+//                ", processName='" + processName + '\'' +
+//                ", processCreateTime=" + processCreateTime +
+//                ", businessKey='" + businessKey + '\'' +
+//                ", tApprove=" + tApprove +
+//                ", tApproveAccident=" + tApproveAccident +
+//                ", submitType='" + submitType + '\'' +
+//                ", comment='" + comment + '\'' +
+//                ", userName='" + userName + '\'' +
+//                ", beforeUrl='" + beforeUrl + '\'' +
+//                ", beforeFilename='" + beforeFilename + '\'' +
+//                ", afterUrl='" + afterUrl + '\'' +
+//                ", afterFilename='" + afterFilename + '\'' +
+//                '}';
+//    }
+//}

binární
ruoyi-ui/src/assets/images/bzgf/党员教育管理-信息化管理1.png


binární
ruoyi-ui/src/assets/images/bzgf/党员教育管理-信息化管理2.png


binární
ruoyi-ui/src/assets/images/bzgf/党员教育管理-监督与处置2.png


binární
ruoyi-ui/src/assets/images/bzgf/党员教育管理-监督与处置3.png


+ 3 - 0
ruoyi-ui/src/views/branch/approve/index.vue

@@ -0,0 +1,3 @@
+<template >
+  <router-view />
+</template>

+ 312 - 0
ruoyi-ui/src/views/branch/approve/myapprove/index.vue

@@ -0,0 +1,312 @@
+<template >
+  <div class="app-container">
+    <el-table v-loading="loading" :data="approvedangerList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column :label="$t('流程')+' '+ $t('ID')" align="center" prop="processId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('流程')+' '+ $t('名称')" align="center" prop="processName" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('流程')+' '+ $t('创建时间')" align="center" prop="processCreateTime" :show-overflow-tooltip="true"/>
+<!--      <el-table-column :label="$t('隐患级别')" align="center" prop="tApprove.hiddendangerLevel" :show-overflow-tooltip="true"/>-->
+      <el-table-column :label="$t('申请编号')" align="center" prop="apNo" :show-overflow-tooltip="true"/>
+      <el-table-column
+        prop="isEnd"
+        header-align="center"
+        align="center"
+        :label="$t('是否结束')">
+        <template slot-scope="scope">
+          <el-tag
+            :type="scope.row.end? 'success' : 'danger'"
+            disable-transitions>{{scope.row.end? $t('是') : $t('否')}}</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('操作')" align="center" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+<!--          <el-button-->
+<!--            size="mini"-->
+<!--            type="text"-->
+<!--            @click="cancelProcess(scope.row)"-->
+<!--          >{{ $t('查看') }}</el-button>-->
+          <el-button
+            size="mini"
+            type="text"
+            @click="detailHandle(scope.row)"
+          >{{ $t('查看') }}</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="processImg(scope.row.processId)"
+          >{{ $t('流程图') }}</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <process-img v-if="processImgVisible" ref="processImg" @refreshDataList="getList"></process-img>
+    <add-or-update v-if="specDealVisible" ref="specDeal" @refreshDataList="getList"></add-or-update>
+    <spec-modify v-if="specModifyDealVisible" ref="specModifyDeal" @refreshDataList="getList"></spec-modify>
+    <spec-training-plan v-if="specTrainingPlanVisible" ref="specTrainingPlan" @refreshDataList="getList"></spec-training-plan>
+    <spec-maintenance v-if="specMaintenanceVisible" ref="specMaintenance" @refreshDataList="getList"></spec-maintenance>
+    <intact-detail v-if="intactDetailVisible" ref="intactDetail" @refreshDataList="getList"></intact-detail>
+    <kekao-detail v-if="kekaoDetailVisible" ref="kekaoDetail" @refreshDataList="getList"></kekao-detail>
+    <invoice-detail v-if="invoiceDetailVisible" ref="invoiceDetail" @refreshDataList="getList"></invoice-detail>
+    <offlinevalve-detail v-if="offlinevalveDetailVisible" ref="offlinevalveDetail" @refreshDataList="getList"></offlinevalve-detail>
+    <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
+    <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
+  </div>
+</template>
+
+<script>
+  // import {getMyApprovelist} from "@/api/ehs/approvedanger";
+  // import {treeselect} from "@/api/system/dept";
+  // import Treeselect from "@riophae/vue-treeselect";
+  // import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+  // import ProcessImg from '../processImg'
+  // import AddOrUpdate from '../approveDetail/spec-detail';
+  // import SpecModify from '../approveDetail/specModify-detail';
+  // import SpecTrainingPlan from '../approveDetail/specTrainingPlan-detaill';
+  // import SpecMaintenance from '../approveDetail/specMaintenance-detail';
+  // import IntactDetail from '../approveDetail/intact-detail';
+  // import KekaoDetail from "@/views/approve/approveDetail/kekao-detail";
+  // import InvoiceDetail from "@/views/approve/approveDetail/invoice-detail";
+  // import OfflinevalveDetail from "@/views/approve/approveDetail/offlinevalve-detail";
+  // import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
+  // import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
+
+  export default {
+    name: "Myapprove",
+    components: {
+      SaiApplyDetail,
+      SafetychangeDetail,
+      OfflinevalveDetail,
+      Treeselect,ProcessImg,AddOrUpdate,SpecModify,SpecTrainingPlan,SpecMaintenance,IntactDetail,KekaoDetail,InvoiceDetail},
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        processImgVisible: false,
+        specDealVisible: false,
+        specModifyDealVisible: false,
+        specTrainingPlanVisible: false,
+        specMaintenanceVisible: false,
+        intactDetailVisible:false,
+        kekaoDetailVisible:false,
+        invoiceDetailVisible:false,
+        offlinevalveDetailVisible:false,
+        safetychangeDetailVisible:false,
+        saiApplyVisible:false,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: false,
+        // 总条数
+        total: 0,
+        // 我的申请表格数据
+        approvedangerList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 装置名称字典
+        plantCodeOptions: [],
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          plantCode: null,
+          recorderId: null,
+          hiddendangerLevel: null,
+          hiddendangerContent: null,
+          measures: null,
+          completeTime: null,
+          status: null,
+          creattime: null,
+          endtime: null,
+          processId: null,
+          approveNo: null,
+          deptId: null,
+        },
+        // 表单参数
+        form: {},
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+      this.getDicts("PLANT_DIVIDE").then(response => {
+        this.plantCodeOptions = response.data;
+      });
+    },
+    methods: {
+      /** 查询隐患申请列表 */
+      getList() {
+        this.loading = true;
+        getMyApprovelist(this.queryParams).then(response => {
+          this.approvedangerList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      //操作审批流程
+      detailHandle (row) {
+        if (row.processName == "特种设备审核"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "年度检查报告申请"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "月度检查"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "设备修改/删除审核" || row.processName == "设备新增/删除审核"){
+          this.specModifyDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specModifyDeal.init(row.approveSpecModify.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "专项培训计划审核") {
+          this.specTrainingPlanVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specTrainingPlan.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        }else if (row.processName == "设备维修审批流程") {
+          this.specMaintenanceVisible = true
+          this.$nextTick(() => {
+          //  console.log(row.taskName)
+
+              console.log(row)
+            this.$refs.specMaintenance.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        }else if (row.processName == "设备变更申请") {
+          this.intactDetailVisible = true
+          this.$nextTick(() => {
+
+            console.log(row)
+            this.$refs.intactDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        }else if (row.processName == "可靠性管理申请") {
+          this.kekaoDetailVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.kekaoDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        }else if (row.processName == "预约开票审批流程") {
+          this.invoiceDetailVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.invoiceDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        } else if (row.processName == "安全阀离线/切出申请流程") {
+          this.offlinevalveDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.offlinevalveDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        } else if (row.processName == "组织保护措施状态变更申请流程") {
+          this.safetychangeDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.safetychangeDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        } else if (row.processName == "SAI开项申请流程") {
+          console.log(row)
+          this.saiApplyVisible = true
+          this.$nextTick(() => {
+            this.$refs.saiApplyDetail.init(row.approveObject.saiApplyId, row.taskId, row.processId, row.taskName)
+          })
+        } else {
+          this.approveInfo = row;
+          this.infoTaskName = row.taskName;
+          this.infoprocessName = row.processName;
+          this.addOrUpdateVisible = true;
+        }
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 装置名称字典翻译
+      plantCodeFormat(row, column) {
+        return this.selectDictLabel(this.plantCodeOptions, row.plantCode);
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          plantCode: null,
+          recorderId: null,
+          hiddendangerLevel: null,
+          hiddendangerContent: null,
+          measures: null,
+          completeTime: null,
+          status: 0,
+          creattime: null,
+          endtime: null,
+          processId: null,
+          approveNo: null,
+          deptId: null,
+          delFlag: null
+        };
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      processImg (processId) {
+        this.processImgVisible = true
+        this.$nextTick(() => {
+          this.$refs.processImg.init(processId)
+        })
+      },
+    }
+  };
+</script>

+ 501 - 0
ruoyi-ui/src/views/branch/approve/pending/index.vue

@@ -0,0 +1,501 @@
+<template >
+  <div class="app-container">
+    <!-- 顶部工具栏 -->
+    <el-row :gutter="10">
+      <div class="top-right-btn">
+        <el-row>
+          <el-tooltip  effect="dark" :content="$t('tagsView.refresh')" placement="top">
+            <el-button size="mini" circle icon="el-icon-refresh" @click="getList()" />
+          </el-tooltip>
+        </el-row>
+      </div>
+    </el-row>
+    <el-table v-loading="loading" :data="approvedangerList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column :label="$t('流程')+' '+ $t('ID')" align="center" prop="processId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('流程')+' ' + $t('名称')" align="center" prop="processName" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('流程')+' ' + $t('创建时间')" align="center" prop="processCreateTime" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('待办任务')+' ' + $t('名称')" align="center" prop="taskName" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('待办任务')+' ' + $t('创建时间')" align="center" prop="taskCreateTime" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('申请编号')" align="center" prop="apNo" :show-overflow-tooltip="true">
+<!--        <template slot-scope="scope">-->
+<!--          <span v-if="scope.row.processName === ($t('事件') + $t('审批流程')) ">{{scope.row.tApproveAccident.approveNo}}</span>-->
+<!--          <span v-if="scope.row.processName === ($t('重大隐患') + $t('审批流程') )|| scope.row.processName === ($t('普通隐患') + $t('审批流程') )">{{scope.row.tApprove.approveNo}}</span>-->
+<!--        </template>-->
+      </el-table-column>
+      <el-table-column :label="$t('操作')" align="center" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="addOrUpdateHandle(scope.row)"
+          >{{ $t('处理') }}</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="processImg(scope.row.processId)"
+          >{{ $t('流程图') }}</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 弹窗, 新增 / 修改 -->
+    <div v-if="addOrUpdateVisible">
+      <el-dialog  :close-on-click-modal="false" v-dialogDrag :visible.sync="addOrUpdateVisible" :destroy-on-close="true">
+        <add-or-update v-if="this.infoprocessName === ($t('重大隐患')+' '+ $t('审批流程') )|| this.infoprocessName === ($t('普通隐患')+' ' + $t('审批流程') )" :info="approveInfo"></add-or-update>
+        <accident v-if="this.infoprocessName === ($t('事件')+ $t('审批流程'))" :info="approveInfo" @recordInfo="approveChange($event)"></accident>
+        <el-form>
+          <el-form-item :label="$t('上传措施前照片')" prop="before" v-if="this.infoTaskName === '执行人'">
+            <el-upload
+              ref="uploadbefore"
+              :limit="1"
+              :headers="uploadbefore.headers"
+              :action="uploadbefore.url"
+              :disabled="uploadbefore.isUploading"
+              :on-progress="handleFileUploadProgressBefore"
+              :on-success="handleFileSuccessBefore"
+              :auto-upload="true"
+              drag
+            >
+              <i class="el-icon-upload"></i>
+              <div class="el-upload__text">
+                {{ $t('将文件拖到此处,或') }}
+                <em>{{ $t('点击上传') }}</em>
+              </div>
+            </el-upload>
+          </el-form-item>
+          <el-form-item :label="$t('上传措施后照片')" prop="after" v-if="this.infoTaskName === $t('执行人')">
+            <el-upload
+              ref="uploadafter"
+              :limit="1"
+              :headers="uploadafter.headers"
+              :action="uploadafter.url"
+              :disabled="uploadafter.isUploading"
+              :on-progress="handleFileUploadProgressAfter"
+              :on-success="handleFileSuccessAfter"
+              drag
+            >
+              <i class="el-icon-upload"></i>
+              <div class="el-upload__text">
+                {{ $t('将文件拖到此处,或') }}
+                <em>{{ $t('点击上传') }}</em>
+              </div>
+            </el-upload>
+          </el-form-item>
+          <el-form-item :label="$t('审批意见')" prop="comment">
+            <el-input v-model="comment" :placeholder="$t('请输入') + $t('审批意见')" maxlength="100" show-word-limit></el-input>
+          </el-form-item>
+        </el-form>
+        <span v-if="this.infoprocessName ===  ($t('重大隐患')+' ' + $t('审批流程') ) || this.infoprocessName === ($t('普通隐患')+' '  + $t('审批流程') )" slot="footer">
+          <span v-if="this.infoTaskName === $t('执行人')" class="dialog-footer">
+            <el-button type="primary" @click="dataFormSubmit(1)">{{ $t('已完成') }}</el-button>
+            <el-button type="danger" @click="dataFormSubmit(0)">{{ $t('无法执行') }}</el-button>
+          </span>
+          <span v-if="this.infoTaskName === $t('验证人')" class="dialog-footer">
+            <el-button type="primary" @click="dataFormSubmit(1)">{{ $t('通过') }}</el-button>
+            <el-button type="danger" @click="dataFormSubmit(0)">{{ $t('无效') }}</el-button>
+            <el-button type="warning" @click="dataFormSubmit(2)">{{ $t('未达标') }}</el-button>
+          </span>
+          <span v-if="this.infoTaskName === $t('记录人')" class="dialog-footer">
+            <el-button type="primary" @click="dataFormSubmit(1)">{{ $t('重新提交') }}</el-button>
+          </span>
+          <span v-if="this.infoTaskName === $t('确认')" class="dialog-footer">
+            <el-button type="primary" @click="dataFormSubmit(1)">{{ $t('确认') }}</el-button>
+            <el-button type="danger" @click="dataFormSubmit(0)">{{ $t('确认')+' ' + $t('不通过') }}</el-button>
+          </span>
+        </span>
+        <span v-if="this.infoprocessName === ($t('事件') + $t('审批流程'))" slot="footer">
+          <span v-if="this.infoTaskName === $t('记录人')" class="dialog-footer">
+            <el-button type="primary" @click="dataFormSubmit(1)">{{ $t('提交') }}</el-button>
+          </span>
+        </span>
+      </el-dialog>
+    </div>
+
+    <add-or-update v-if="specDealVisible" ref="specDeal" @refreshDataList="getList"></add-or-update>
+    <spec-modify v-if="specModifyDealVisible" ref="specModifyDeal" @refreshDataList="getList"></spec-modify>
+    <spec-training-plan v-if="specTrainingPlanDealVisible" ref="specTrainingPlanDeal" @refreshDataList="getList"></spec-training-plan>
+    <process-img v-if="processImgVisible" ref="processImg" @refreshDataList="getList"></process-img>
+    <intact-resolve v-if="intactResolveVisible" ref="intactResolveDeal" @refreshDataList="getList"></intact-resolve>
+    <kekao-resolve v-if="kekaoResolveVisible" ref="kekaoResolveDeal" @refreshDataList="getList"></kekao-resolve>
+    <spec-maintenance v-if="specMaintenanceVisible" ref="specMaintenance" @refreshDataList="getList"></spec-maintenance>
+    <invoice-detail v-if="invoiceDetailVisible" ref="invoiceDetail" @refreshDataList="getList"></invoice-detail>
+    <offlinevalve-detail v-if="offlinevalveDetailVisible" ref="offlinevalveDetail" @refreshDataList="getList"></offlinevalve-detail>
+    <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
+    <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
+  </div>
+</template>
+
+<script>
+  // import {getPendinglist, handleApprovedanger} from "@/api/ehs/approvedanger";
+  // import AddOrUpdate from './spec-detail';
+  // import SpecModify from './specModify-deal';
+  // import SpecTrainingPlan from './specTrainingPlan-deal';
+  // import IntactResolve from '../approveDetail/intact-resolve';
+  // import Accident from '../approveaccidentDetail/index';
+  // import ProcessImg from '../processImg/index';
+  // import {treeselect} from "@/api/system/dept";
+  // import {getToken} from "@/utils/auth";
+  // import Treeselect from "@riophae/vue-treeselect";
+  // import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+  // import SpecMaintenance from "@/views/approve/pending/specMaintenance-deal";
+  // import KekaoResolve from '../approveDetail/kekao-resolve';
+  // import InvoiceDetail from "@/views/approve/approveDetail/invoice-detail";
+  // import OfflinevalveDetail from "@/views/approve/approveDetail/offlinevalve-detail";
+  // import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
+  // import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
+
+  export default {
+    name: "Pending",
+    components: {
+      SaiApplyDetail,
+      SafetychangeDetail,
+      OfflinevalveDetail,
+      Treeselect,
+      AddOrUpdate,
+      SpecModify,
+      Accident,
+      SpecTrainingPlan,
+      ProcessImg,
+      IntactResolve,
+      SpecMaintenance,
+      KekaoResolve,
+      InvoiceDetail
+    },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        //弹窗界面是否开启
+        addOrUpdateVisible: false,
+        processImgVisible: false,
+        specDealVisible: false,
+        specModifyDealVisible: false,
+        specTrainingPlanDealVisible: false,
+        intactResolveVisible:false,
+        kekaoResolveVisible:false,
+        specMaintenanceVisible: false,
+        invoiceDetailVisible:false,
+        offlinevalveDetailVisible:false,
+        safetychangeDetailVisible:false,
+        saiApplyVisible:false,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: false,
+        // 总条数
+        total: 0,
+        // 我的申请表格数据
+        approvedangerList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 装置名称字典
+        plantCodeOptions: [],
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          plantCode: null,
+          recorderId: null,
+          hiddendangerLevel: null,
+          hiddendangerContent: null,
+          measures: null,
+          completeTime: null,
+          status: null,
+          creattime: null,
+          endtime: null,
+          processId: null,
+          approveNo: null,
+          deptId: null,
+        },
+        // 措施前上传照片参数
+        uploadbefore: {
+          file: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/common/upload",
+          // 报告附件上传位置编号
+          ids: 0,
+          commonfileList: null,
+        },
+        // 措施后上传照片参数
+        uploadafter: {
+          file: "",
+          // 是否禁用上传
+          isUploading: false,
+          // 是否更新已经存在的用户数据
+          updateSupport: 0,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/common/upload",
+          // 报告附件上传位置编号
+          ids: 0,
+          commonfileList: null,
+        },
+        // 表单参数
+        form: {},
+        //事件记录人更新内容
+        recordInfo: {},
+        //处理数据传输
+        approveInfo: null,
+        //审批显示按键判断依据
+        infoprocessName: null,
+        infoTaskName: null,
+        //上传措施前后照片url,文件名称
+        beforeUrl: null,
+        beforeFilename: null,
+        afterUrl: null,
+        afterFilename: null,
+        //审批备注
+        comment: null
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+      this.getDicts("PLANT_DIVIDE").then(response => {
+        this.plantCodeOptions = response.data;
+      });
+    },
+    methods: {
+      /** 查询隐患申请列表 */
+      getList() {
+        this.loading = true;
+        getPendinglist(this.queryParams).then(response => {
+          this.approvedangerList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      // 装置名称字典翻译
+      plantCodeFormat(row, column) {
+        return this.selectDictLabel(this.plantCodeOptions, row.plantCode);
+      },
+      // 取消按钮
+      cancel() {
+        this.addOrUpdateVisible = false;
+        this.reset();
+      },
+      /** 事件子组件传值 */
+      approveChange(value) {
+        this.recordInfo = value
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          plantCode: null,
+          recorderId: null,
+          hiddendangerLevel: null,
+          hiddendangerContent: null,
+          measures: null,
+          completeTime: null,
+          status: 0,
+          creattime: null,
+          endtime: null,
+          processId: null,
+          approveNo: null,
+          deptId: null,
+          delFlag: null,
+          submitType: null,
+          commont: null,
+          accidentLevel: null,
+          executorId: null
+
+        };
+        this.resetForm("form");
+      },
+      //操作审批流程
+      addOrUpdateHandle (row) {
+        if (row.processName == "特种设备审核"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "年度检查报告申请"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "月度检查"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "设备修改/删除审核" || row.processName == "设备新增/删除审核"){
+          this.specModifyDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specModifyDeal.init(row.approveSpecModify.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "专项培训计划审核"){
+          this.specTrainingPlanDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specTrainingPlanDeal.init(row.approveObj.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "设备维修审批流程"){
+          this.specMaintenanceVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specMaintenance.init(row.approveObj.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "设备变更申请"){
+          this.intactResolveVisible = true
+          this.$nextTick(() => {
+
+            console.log(row)
+
+            this.$refs.intactResolveDeal.init(row.approveObj.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "可靠性管理申请"){
+          this.kekaoResolveVisible = true
+          this.$nextTick(() => {
+
+            console.log(row)
+
+            this.$refs.kekaoResolveDeal.init(row.approveObj.id, row.taskId, row.processId,row.taskName)
+          })
+        } else if (row.processName == "预约开票审批流程"){
+          this.invoiceDetailVisible = true
+          this.$nextTick(() => {
+            console.log(row)
+            console.log(row.approveObj)
+            this.$refs.invoiceDetail.init(row.approveObject.id, row.taskId, row.processId,row.taskName)
+          })
+        } else if (row.processName == "安全阀离线/切出申请流程") {
+          this.offlinevalveDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.offlinevalveDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName,true)
+          })
+        } else if (row.processName == "组织保护措施状态变更申请流程") {
+          this.safetychangeDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.safetychangeDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName,true)
+          })
+        } else if (row.processName == "SAI开项申请流程") {
+          this.saiApplyVisible = true
+          this.$nextTick(() => {
+            this.$refs.saiApplyDetail.init(row.approveObject.saiApplyId, row.taskId, row.processId, row.taskName)
+          })
+        } else {
+          this.approveInfo = row;
+          this.infoTaskName = row.taskName;
+          this.infoprocessName = row.processName;
+          this.addOrUpdateVisible = true;
+        }
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      // 表单提交
+      dataFormSubmit (val) {
+        //相关信息
+        this.form = this.approveInfo
+        this.form.submitType = val
+        this.form.comment = this.comment
+        // 审批确认后,申请人填写相关信息
+        if (this.form.processName === (this.$t('事件') + this.$t('审批流程'))) {
+          this.form.accidentLevel = this.recordInfo.accidentLevel;
+          this.form.measures = this.recordInfo.measures;
+          this.form.executorId = this.recordInfo.executorId;
+          this.form.completeTime = this.recordInfo.completeTime;
+          console.info("accidentLevel:" + this.form.accidentLevel)
+          console.info("measures:" + this.form.measures)
+          console.info("executorId:" + this.form.executorId)
+          console.info("completeTime:" + this.form.completeTime)
+        }
+        //提交审批
+        this.form.beforeUrl = this.beforeUrl
+        this.form.beforeFilename = this.beforeFilename
+        this.form.afterUrl = this.afterUrl
+        this.form.afterFilename = this.afterFilename
+        handleApprovedanger(this.form).then(response => {
+          this.msgSuccess(this.$t('处理成功'));
+          this.addOrUpdateVisible = false;
+          this.getList();
+        });
+        this.$nextTick(function () {
+          this.comment = ''
+        })
+      },
+      // 文件上传中处理
+      handleFileUploadProgressBefore(event, file, fileList) {
+        this.uploadbefore.isUploading = true;
+      },
+      handleFileUploadProgressAfter(event, file, fileList) {
+        this.uploadafter.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccessBefore(response, file, fileList) {
+        this.uploadbefore.isUploading = false;
+        //this.$refs.uploadbefore.clearFiles();
+        this.beforeUrl = response.url;
+        this.beforeFilename = response.fileName;
+      },
+      handleFileSuccessAfter(response, file, fileList) {
+        this.uploadafter.isUploading = false;
+        //this.$refs.uploadafter.clearFiles();
+        this.afterUrl = response.url;
+        this.afterFilename = response.fileName;
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.uploadbefore.submit()
+        this.$refs.uploadafter.submit()
+      },
+      processImg (processId) {
+        this.processImgVisible = true
+        this.$nextTick(() => {
+          this.$refs.processImg.init(processId)
+        })
+      },
+    }
+  };
+</script>

+ 36 - 0
ruoyi-ui/src/views/branch/approve/processImg/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <el-dialog  :close-on-click-modal="false" v-dialogDrag
+    :title="$t('流程图')"
+
+    :visible.sync="visible">
+  <div style="padding-top: 0px;">
+    <img :src=getUrl() style="width: 100%">
+  </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="visible = false">{{ $t('返回') }}</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+
+  export default {
+    data () {
+      return {
+        visible: false,
+        dataListLoading: false,
+        dataList: [],
+        processId: ''
+      }
+    },
+    methods: {
+      init (processId) {
+        this.processId = processId
+        this.visible = true
+      },
+      getUrl () {
+        return process.env.VUE_APP_BASE_API + '/ehs/approvedanger/processImg/' + this.processId
+      }
+    }
+  }
+</script>

+ 319 - 0
ruoyi-ui/src/views/branch/approve/taskdone/index.vue

@@ -0,0 +1,319 @@
+<template >
+  <div class="app-container">
+    <el-table v-loading="loading" :data="approvedangerList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column :label="$t('流程') + $t('ID')" align="center" prop="processId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('流程') + $t('名称')" align="center" prop="processName" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('流程') + $t('创建时间')" align="center" prop="processCreateTime" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('申请人') + $t('姓名')" align="center" prop="apName" :show-overflow-tooltip="true"/>
+<!--      <el-table-column :label="$t('隐患级别')" align="center" prop="tApprove.hiddendangerLevel" :show-overflow-tooltip="true"/>-->
+      <el-table-column :label="$t('申请编号')" align="center" prop="apNo" :show-overflow-tooltip="true"/>
+      <el-table-column
+        prop="isEnd"
+        header-align="center"
+        align="center"
+        :label="$t('是否结束')">
+        <template slot-scope="scope">
+          <el-tag
+            :type="scope.row.end? 'success' : 'danger'"
+            disable-transitions>{{scope.row.end? $t('是') : $t('否')}}</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('操作')" align="center" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-view"
+            @click="handleView(scope.row)"
+          >{{ $t('查看') }}</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="processImg(scope.row.processId)"
+          >{{ $t('流程图') }}</el-button>
+        </template>
+      </el-table-column>
+      </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 弹窗, 查看 -->
+<!--    <div v-if="addOrUpdateVisible">-->
+<!--      <el-dialog  :close-on-click-modal="false" v-dialogDrag :visible.sync="addOrUpdateVisible" :destroy-on-close="true">-->
+<!--        <add-or-update :info="approveInfo"></add-or-update>-->
+<!--      </el-dialog>-->
+<!--    </div>-->
+    <process-img v-if="processImgVisible" ref="processImg" @refreshDataList="getList"></process-img>
+    <add-or-update v-if="specDealVisible" ref="specDeal" @refreshDataList="getList"></add-or-update>
+    <spec-modify v-if="specModifyDealVisible" ref="specModifyDeal" @refreshDataList="getList"></spec-modify>
+    <spec-training-plan v-if="specTrainingPlanVisible" ref="specTrainingPlan" @refreshDataList="getList"></spec-training-plan>
+    <spec-maintenance v-if="specMaintenanceVisible" ref="specMaintenance" @refreshDataList="getList"></spec-maintenance>
+    <intact-detail v-if="intactDetailVisible" ref="intactDetail" @refreshDataList="getList"></intact-detail>
+    <kekao-detail v-if="kekaoDetailVisible" ref="kekaoDetail" @refreshDataList="getList"></kekao-detail>
+    <invoice-detail v-if="invoiceDetailVisible" ref="invoiceDetail" @refreshDataList="getList"></invoice-detail>
+    <offlinevalve-detail v-if="offlinevalveDetailVisible" ref="offlinevalveDetail" @refreshDataList="getList"></offlinevalve-detail>
+    <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
+    <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
+  </div>
+</template>
+
+<script>
+  // import { getTaskdonelist } from "@/api/ehs/approvedanger";
+  // import AddOrUpdate from '../approveDetail/spec-detail';
+  // import { treeselect } from "@/api/system/dept";
+  // import { getToken } from "@/utils/auth";
+  // import Treeselect from "@riophae/vue-treeselect";
+  // import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+  // import ProcessImg from "../processImg/index";
+  // import SpecModify from '../approveDetail/specModify-detail';
+  // import SpecTrainingPlan from '../approveDetail/specTrainingPlan-detaill';
+  // import SpecMaintenance from "@/views/approve/approveDetail/specMaintenance-detail";
+  // import IntactDetail from "@/views/approve/approveDetail/intact-detail";
+  // import KekaoDetail from "@/views/approve/approveDetail/kekao-detail";
+  // import InvoiceDetail from "@/views/approve/approveDetail/invoice-detail";
+  // import OfflinevalveDetail from "@/views/approve/approveDetail/offlinevalve-detail";
+  // import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
+  // import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
+
+  export default {
+    name: "Taskdone",
+    components: {
+      SaiApplyDetail,
+      SafetychangeDetail,
+      OfflinevalveDetail,
+      Treeselect, AddOrUpdate,ProcessImg,SpecModify,SpecTrainingPlan,SpecMaintenance,IntactDetail,KekaoDetail,InvoiceDetail
+    },
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        processImgVisible: false,
+        specDealVisible: false,
+        specModifyDealVisible: false,
+        specTrainingPlanVisible: false,
+        specMaintenanceVisible: false,
+        intactDetailVisible:false,
+        kekaoDetailVisible:false,
+        invoiceDetailVisible:false,
+        offlinevalveDetailVisible:false,
+        safetychangeDetailVisible:false,
+        saiApplyVisible:false,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: false,
+        // 总条数
+        total: 0,
+        // 我的申请表格数据
+        approvedangerList: [],
+        // 弹出层标题
+        title: "",
+        // 部门树选项
+        deptOptions: undefined,
+        clientHeight:300,
+        // 是否显示弹出层
+        open: false,
+        // 装置名称字典
+        plantCodeOptions: [],
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 20,
+          plantCode: null,
+          recorderId: null,
+          hiddendangerLevel: null,
+          hiddendangerContent: null,
+          measures: null,
+          completeTime: null,
+          status: null,
+          creattime: null,
+          endtime: null,
+          processId: null,
+          approveNo: null,
+          deptId: null,
+        },
+        // 表单参数
+        form: {},
+        //处理数据传输
+        approveInfo: null,
+        //弹窗界面是否开启
+        addOrUpdateVisible: false,
+      };
+    },
+    watch: {
+      // 根据名称筛选部门树
+      deptName(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+        this.clientHeight = document.body.clientHeight -250
+      })
+      this.getList();
+      this.getTreeselect();
+      this.getDicts("PLANT_DIVIDE").then(response => {
+        this.plantCodeOptions = response.data;
+      });
+    },
+    methods: {
+      /** 查询隐患申请列表 */
+      getList() {
+        this.loading = true;
+        getTaskdonelist(this.queryParams).then(response => {
+          this.approvedangerList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      /** 查询部门下拉树结构 */
+      getTreeselect() {
+        treeselect().then(response => {
+          this.deptOptions = response.data;
+        });
+      },
+      /** 查看操作 */
+      handleView (row) {
+        if (row.processName == "特种设备审核"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "年度检查报告申请"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "月度检查"){
+          this.specDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specDeal.init(row.specApprove.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "设备修改/删除审核" || row.processName == "设备新增/删除审核"){
+          this.specModifyDealVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specModifyDeal.init(row.approveSpecModify.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "专项培训计划审核"){
+          this.specTrainingPlanVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specTrainingPlan.init(row.approveObject.id, row.taskId, row.processId,row.taskName)
+          })
+        }else if (row.processName == "设备维修审批流程") {
+          this.specMaintenanceVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.specMaintenance.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        }else if (row.processName == "设备变更申请") {
+          this.intactDetailVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.intactDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        }else if (row.processName == "可靠性管理申请") {
+          this.kekaoDetailVisible = true
+          this.$nextTick(() => {
+            console.log(row.taskName)
+            this.$refs.kekaoDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        }else if (row.processName == "预约开票审批流程"){
+          this.invoiceDetailVisible = true
+          this.$nextTick(() => {
+            console.log(row)
+            console.log(row.approveObj)
+            this.$refs.invoiceDetail.init(row.approveObject.id, row.taskId, row.processId,row.taskName)
+          })
+        } else if (row.processName == "安全阀离线/切出申请流程") {
+          this.offlinevalveDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.offlinevalveDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        } else if (row.processName == "组织保护措施状态变更申请流程") {
+          this.safetychangeDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.safetychangeDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
+        } else if (row.processName == "SAI开项申请流程") {
+          this.saiApplyVisible = true
+          this.$nextTick(() => {
+            this.$refs.saiApplyDetail.init(row.approveObject.saiApplyId, row.taskId, row.processId, row.taskName)
+          })
+        } else {
+          this.approveInfo = row;
+          this.infoTaskName = row.taskName;
+          this.infoprocessName = row.processName;
+          this.addOrUpdateVisible = true;
+        }
+      },
+      // 装置名称字典翻译
+      plantCodeFormat(row, column) {
+        return this.selectDictLabel(this.plantCodeOptions, row.plantCode);
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          plantCode: null,
+          recorderId: null,
+          hiddendangerLevel: null,
+          hiddendangerContent: null,
+          measures: null,
+          completeTime: null,
+          status: 0,
+          creattime: null,
+          endtime: null,
+          processId: null,
+          approveNo: null,
+          deptId: null,
+          delFlag: null
+        };
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      processImg (processId) {
+        this.processImgVisible = true
+        this.$nextTick(() => {
+          this.$refs.processImg.init(processId)
+        })
+      },
+    }
+  };
+</script>

+ 3 - 2
ruoyi-ui/src/views/branch/bzgf/dyjygl/jdycz/index.vue

@@ -1,8 +1,9 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../assets/images/bzgf/党员教育管理-监督与处置1.png" style="max-width: 70%; height: auto; width: auto;"/>
-      <img src="../../../../../assets/images/bzgf/党员教育管理-监督与处置2.png" style="max-width: 70%; height: auto; width: auto;"/>
+      <img src="../../../../../assets/images/bzgf/党员教育管理-监督与处置1.png" style="max-width: 70%; height: auto; width: auto;"/><br/>
+      <img src="../../../../../assets/images/bzgf/党员教育管理-监督与处置2.png" style="max-width: 70%; height: auto; width: auto;"/><br/>
+      <img src="../../../../../assets/images/bzgf/党员教育管理-监督与处置3.png" style="max-width: 70%; height: auto; width: auto;"/>
     </div>
   </div>
 </template>

+ 8 - 0
ruoyi-ui/src/views/branch/bzgf/dyjygl/xxhgl/index.vue

@@ -0,0 +1,8 @@
+<template>
+  <div class="app-container">
+    <div>
+      <img src="../../../../../assets/images/bzgf/党员教育管理-信息化管理1.png" style="max-width: 70%; height: auto; width: auto;"/><br/>
+      <img src="../../../../../assets/images/bzgf/党员教育管理-信息化管理2.png" style="max-width: 50%; height: auto; width: auto;"/>
+    </div>
+  </div>
+</template>

+ 1 - 1
ruoyi-ui/src/views/branch/bzgf/dyjygl/zzgxgl/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../assets/images/bzgf/党员教育管理-组织关系管理.png" style="max-width: 80%; height: auto; width: auto;"/>
+      <img src="../../../../../assets/images/bzgf/党员教育管理-组织关系管理.png" style="max-width: 80%; height: auto; width: auto;"/><br/>
       <img src="../../../../../assets/images/bzgf/党员教育管理-接转党员组织关系.png" style="max-width: 60%; height: auto; width: auto;"/>
     </div>
   </div>

+ 6 - 1
ruoyi-ui/src/views/branch/bzgf/gzjz/dzbwyhjdsx/index.vue

@@ -1,7 +1,12 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../assets/images/bzgf/党支部委员会决定事项.png" style="max-width: 50%; height: auto; width: auto;"/>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>党支部委员会决定事项</span>
+        </div>
+        <img src="../../../../../assets/images/bzgf/党支部委员会决定事项.png" style="max-width: 50%; height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>

+ 6 - 1
ruoyi-ui/src/views/branch/bzgf/gzjz/dzbzyrw/index.vue

@@ -1,7 +1,12 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../assets/images/bzgf/党支部主要任务.png" style="max-width: 90%;height: auto; width: auto;"/>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>党支部主要任务</span>
+        </div>
+        <img src="../../../../../assets/images/bzgf/党支部主要任务.png" style="max-width: 90%;height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>

+ 16 - 1
ruoyi-ui/src/views/branch/bzgf/zzsh/mzpydy/index.vue

@@ -1,7 +1,22 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../assets/images/bzgf/民主评议党员.png" style="max-width: 80%;height: auto; width: auto;"/>
+      <el-card class="box-card" style="margin-bottom: 20px;">
+        <div slot="header" class="clearfix">
+          <span>标准规范</span>
+        </div>
+        <span class="paragraph">
+          (1)党支部一般每年开展 1次民主评议党员,组织党员对照合格党员标准、对照入党誓词,联系个人实际进行党性分析。<br/>
+          (2)党支部召开党员大会,按照个人自评、党员互评、民主测评的程序,组织党员进行评议。<br/>
+          (3)党支部委员会会议或者党员大会根据民主测评情况,综合党员日常表现,对每名党员提出评定意见,并向党员个人反馈。
+        </span>
+      </el-card>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>民主评议党员流程</span>
+        </div>
+        <img src="../../../../../assets/images/bzgf/民主评议党员.png" style="max-width: 80%;height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>

+ 5 - 2
ruoyi-ui/src/views/branch/bzgf/zzsh/shyk/dklc/index.vue

@@ -1,7 +1,10 @@
 <template>
   <div class="app-container">
-    <div>
+    <el-card class="box-card">
+      <div slot="header" class="clearfix">
+        <span>党课流程</span>
+      </div>
       <img src="../../../../../../assets/images/bzgf/党课流程.png" style="max-width: 100%;height: auto; width: auto;"/>
-    </div>
+    </el-card>
   </div>
 </template>

+ 6 - 1
ruoyi-ui/src/views/branch/bzgf/zzsh/shyk/dxzhlc/index.vue

@@ -1,7 +1,12 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../../assets/images/bzgf/党小组会议流程.png" style="max-width: 100%;height: auto; width: auto;"/>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>党小组会流程</span>
+        </div>
+        <img src="../../../../../../assets/images/bzgf/党小组会议流程.png" style="max-width: 100%;height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>

+ 42 - 1
ruoyi-ui/src/views/branch/bzgf/zzsh/shyk/zbdhlc/index.vue

@@ -1,7 +1,48 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../../assets/images/bzgf/支部大会流程.png" style="max-width: 90%;height: auto; width: auto;"/>
+      <el-card class="box-card" style="margin-bottom: 20px;">
+        <div slot="header" class="clearfix">
+          <span>“三会一课” 标准规范</span>
+        </div>
+        <span class="paragraph">
+          (1)党支部应当组织党员按期参加党员大会、党小组会和上党课,定期召开党支部委员会会议。<br/>
+          (2)“三会一课”应当突出政治学习和教育,突出党性锻炼,以“两学一做”为主要内容,结合党员思想和工作实际,确定主题和具体方式,做到形式多样、氛围庄重。<br/>
+          (3)党课应当针对党员思想和工作实际,回应普遍关心的问题,注重身边人讲身边事,增强吸引力感染力。党课原则上每季度组织 1次。党员领导人员应当坚持为基层党员讲党课,党组织书记每年至少讲 1次党课。
+        </span>
+      </el-card>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>支部大会流程</span>
+        </div>
+        <img src="../../../../../../assets/images/bzgf/支部大会流程.png" style="max-width: 90%;height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>
+
+<style>
+  .paragraph{
+    font-size: 14px;
+    line-height: 28px;
+  }
+  .text {
+    font-size: 14px;
+  }
+
+  .item {
+    margin-bottom: 18px;
+  }
+
+  .clearfix:before,
+  .clearfix:after {
+    display: table;
+    content: "";
+  }
+  .clearfix:after {
+    clear: both
+  }
+
+  .box-card {
+  }
+</style>

+ 6 - 1
ruoyi-ui/src/views/branch/bzgf/zzsh/shyk/zwhlc/index.vue

@@ -1,7 +1,12 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../../assets/images/bzgf/支委会流程.png" style="max-width: 80%;height: auto; width: auto;"/>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>支委会流程</span>
+        </div>
+        <img src="../../../../../../assets/images/bzgf/支委会流程.png" style="max-width: 80%;height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>

+ 16 - 1
ruoyi-ui/src/views/branch/bzgf/zzsh/txth/index.vue

@@ -1,7 +1,22 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../assets/images/bzgf/谈心谈话.png" style="max-width: 100%;height: auto; width: auto;"/>
+      <el-card class="box-card" style="margin-bottom: 20px;">
+        <div slot="header" class="clearfix">
+          <span>标准规范</span>
+        </div>
+        <span class="paragraph">
+          党支部应当经常开展谈心谈话。<br/>
+          党支部委员之间、党支部委员和党员之间、党员和党员之间,每年谈心谈话一般不少于 1次。<br/>
+          谈心谈话应当坦诚相见、交流思想、交换意见、帮助提高。
+        </span>
+      </el-card>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>谈心谈话流程</span>
+        </div>
+        <img src="../../../../../assets/images/bzgf/谈心谈话.png" style="max-width: 100%;height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>

+ 42 - 1
ruoyi-ui/src/views/branch/bzgf/zzsh/ztdr/index.vue

@@ -1,7 +1,48 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../assets/images/bzgf/主题党日流程.png" style="max-width: 50%;height: auto; width: auto;"/>
+      <el-card class="box-card" style="margin-bottom: 20px;">
+        <div slot="header" class="clearfix">
+          <span>标准规范</span>
+        </div>
+        <span class="paragraph">
+          党支部每月相对固定 1天开展主题党日。<br/>
+          主题党日开展前,党支部应当认真研究确定主题和内容;<br/>
+          开展后,应当抓好议定事项的组织落实。
+        </span>
+      </el-card>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>主题党日流程</span>
+        </div>
+        <img src="../../../../../assets/images/bzgf/主题党日流程.png" style="max-width: 50%;height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>
+
+<style>
+  .paragraph{
+    font-size: 14px;
+    line-height: 28px;
+  }
+  .text {
+    font-size: 14px;
+  }
+
+  .item {
+    margin-bottom: 18px;
+  }
+
+  .clearfix:before,
+  .clearfix:after {
+    display: table;
+    content: "";
+  }
+  .clearfix:after {
+    clear: both
+  }
+
+  .box-card {
+  }
+</style>

+ 41 - 1
ruoyi-ui/src/views/branch/bzgf/zzsh/zzshh/index.vue

@@ -1,7 +1,47 @@
 <template>
   <div class="app-container">
     <div>
-      <img src="../../../../../assets/images/bzgf/组织生活会流程.png" style="max-width: 100%;height: auto; width: auto;"/>
+      <el-card class="box-card" style="margin-bottom: 20px;">
+        <div slot="header" class="clearfix">
+          <span>标准规范</span>
+        </div>
+        <span class="paragraph">
+          (1)党支部每年至少召开 1次组织生活会,一般安排在年末或次年初,也可以根据工作需要随时召开。<br/>
+          (2)组织生活会一般以党支部党员大会、党支部委员会会议或者党小组会形式召开。
+        </span>
+      </el-card>
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>组织生活会流程</span>
+        </div>
+        <img src="../../../../../assets/images/bzgf/组织生活会流程.png" style="max-width: 100%;height: auto; width: auto;"/>
+      </el-card>
     </div>
   </div>
 </template>
+
+<style>
+  .paragraph{
+    font-size: 14px;
+    line-height: 28px;
+  }
+  .text {
+    font-size: 14px;
+  }
+
+  .item {
+    margin-bottom: 18px;
+  }
+
+  .clearfix:before,
+  .clearfix:after {
+    display: table;
+    content: "";
+  }
+  .clearfix:after {
+    clear: both
+  }
+
+  .box-card {
+  }
+</style>

+ 82 - 46
ruoyi-ui/src/views/index.vue

@@ -2,24 +2,32 @@
   <div class="app-container home">
     <el-row :gutter="20">
       <el-col :xs="12" :sm="12" :md="12" :lg="12">
-        <el-carousel height="350px" style="margin-bottom: 20px;">
-          <el-carousel-item v-for="item in publicizeUrls" :key="item">
-            <el-image :src="item" style="width: 100%; height: 100%;"></el-image>
-          </el-carousel-item>
+        <el-carousel direction="vertical" height="350px" style="margin-bottom: 20px;">
+          <!-- 为了让走马灯在轮播图片的同时能够在上面附带文字,将走马灯组件单独放在一个 div 里
+       		并且为这个 div 单独设计 css 样式 pic_item -->
+          <div class="pic_item">
+            <el-carousel-item v-for="(item, index) in publicizeUrls" :key="index">
+              <el-image :src="item.url" style="width: 100%; height: 100%;"></el-image>
+              <h3>{{item.title}}</h3>
+            </el-carousel-item>
+          </div>
         </el-carousel>
       </el-col>
       <el-col :xs="12" :sm="12" :md="12" :lg="12">
-        <el-carousel height="350px" style="margin-bottom: 20px;">
-          <el-carousel-item v-for="item in demeanorUrls" :key="item">
-            <el-image :src="item" style="width: 100%; height: 100%;"></el-image>
-          </el-carousel-item>
+        <el-carousel direction="vertical" height="350px" style="margin-bottom: 20px;">
+          <div class="pic_item">
+            <el-carousel-item v-for="(item, index) in demeanorUrls" :key="index">
+              <el-image :src="item.url" style="width: 100%; height: 100%;"></el-image>
+              <h3>{{item.title}}</h3>
+            </el-carousel-item>
+          </div>
         </el-carousel>
       </el-col>
     </el-row>
     <el-row :gutter="20">
       <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
+        <el-card>
+          <div slot="header">
             <span class="title">
               公示公告
             </span>
@@ -32,8 +40,8 @@
         </el-card>
       </el-col>
       <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
+        <el-card>
+          <div slot="header">
             <span class="title">
               先进风采
             </span>
@@ -46,8 +54,8 @@
         </el-card>
       </el-col>
       <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
+        <el-card>
+          <div slot="header">
             <span class="title">
               政治生日
             </span>
@@ -88,14 +96,21 @@ export default {
     listPublicizeProfiles().then(response => {
       let profiles = response.data;
       for (let i = 0; i < profiles.length; i++) {
-        this.publicizeUrls.push(process.env.VUE_APP_BASE_API + profiles[i].url);
+        this.publicizeUrls.push({
+          "url": process.env.VUE_APP_BASE_API + profiles[i].url,
+          "title": profiles[i].title
+        });
       }
+      console.log(this.publicizeUrls)
     });
     /** 查询支部园地风采图片 */
     listDemeanorProfiles().then(response => {
       let profiles = response.data;
       for (let i = 0; i < profiles.length; i++) {
-        this.demeanorUrls.push(process.env.VUE_APP_BASE_API + profiles[i].url);
+        this.demeanorUrls.push({
+          "url": process.env.VUE_APP_BASE_API + profiles[i].url,
+          "title": profiles[i].title
+        });
       }
     });
   },
@@ -127,7 +142,7 @@ export default {
     margin: 0;
   }
 
-  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+  /*font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;*/
   font-size: 13px;
   color: #676a6c;
   overflow-x: hidden;
@@ -153,26 +168,6 @@ export default {
       font-weight: 700;
     }
   }
-
-  .update-log {
-    ol {
-      display: block;
-      list-style-type: decimal;
-      margin-block-start: 1em;
-      margin-block-end: 1em;
-      margin-inline-start: 0;
-      margin-inline-end: 0;
-      padding-inline-start: 40px;
-    }
-  }
-}
-
-.link:hover{
-  color: red;
-}
-
-.date{
-  float: right;
 }
 
 .title{
@@ -182,20 +177,12 @@ export default {
 .el-carousel__item h3 {
   color: #475669;
   font-size: 14px;
-  opacity: 0.75;
+  opacity: 0.9;
   line-height: 150px;
   margin: 0;
   text-align: center;
 }
 
-/*.el-carousel__item:nth-child(2n) {*/
-  /*background-color: #99a9bf;*/
-/*}*/
-
-/*.el-carousel__item:nth-child(2n+1) {*/
-  /*background-color: #d3dce6;*/
-/*}*/
-
 img{
   width: auto;
   height: auto;
@@ -220,5 +207,54 @@ img{
     padding: 8px;
   }
 }
+.pic_item {
+  position: relative;
+  height: 100%;
+}
+.pic_item:hover{
+  cursor: pointer;
+}
+
+// pic_item 这个整体 div 样式的时候,其中的 h3 的标签的样式
+// 也就是显示在走马灯上的字体
+
+.pic_item h3 {
+  /* position: relative; */
+  /* width: 864px;
+  height: 168px; */
+  position: absolute;
+  left: 1rem;
+  bottom: 1rem;
+  color: white;
+  /* text-decoration-line: underline; */
+  font-weight: 900;
+  /*font-family:Georgia, 'Times New Roman', Times, serif;*/
+  font-size: 18px;
+  line-height: 116%;
+  display: flex;
+  align-items: center;
+  flex: none;
+  order: 1;
+  align-self: stretch;
+}
+
+.smallpic_item h3{
+  position: absolute;
+  left: 3rem;
+  bottom: 5rem;
+  font-family:Georgia, 'Times New Roman', Times, serif;
+  font-style: normal;
+  font-weight: 700;
+  font-size: 24px;
+  line-height: 132%;
+  display: flex;
+  align-items: center;
+  letter-spacing: 0.02em;
+  font-feature-settings: 'liga' off;
+
+  /* White */
+
+  color: #FFFFFF;
+}
 </style>