licailing 5 лет назад
Родитель
Сommit
7d9e345ca9
42 измененных файлов с 1090 добавлено и 251 удалено
  1. 1 1
      src/main/java/com/izouma/wenlvju/converter/RateAuditListConverter.java
  2. 6 8
      src/main/java/com/izouma/wenlvju/domain/Rate.java
  3. 34 0
      src/main/java/com/izouma/wenlvju/domain/RateAudit.java
  4. 0 23
      src/main/java/com/izouma/wenlvju/dto/RateAudit.java
  5. 8 4
      src/main/java/com/izouma/wenlvju/enums/RateStatus.java
  6. 16 0
      src/main/java/com/izouma/wenlvju/repo/RateAuditRepo.java
  7. 20 0
      src/main/java/com/izouma/wenlvju/service/RateAuditService.java
  8. 51 17
      src/main/java/com/izouma/wenlvju/service/RateService.java
  9. 65 0
      src/main/java/com/izouma/wenlvju/web/RateAuditController.java
  10. 19 29
      src/main/java/com/izouma/wenlvju/web/RateController.java
  11. 1 0
      src/main/resources/genjson/RateAudit.json
  12. 4 3
      src/main/vue/src/mixins/rateStatus.js
  13. 52 25
      src/main/vue/src/router.js
  14. 1 1
      src/main/vue/src/views/ArtTypes.vue
  15. 0 0
      src/main/vue/src/views/Performance/PerformanceApplyEdit.vue
  16. 0 0
      src/main/vue/src/views/Performance/PerformanceApplyList.vue
  17. 0 0
      src/main/vue/src/views/Performance/PerformanceApplyList2.vue
  18. 0 0
      src/main/vue/src/views/Performance/PerformanceEdit.vue
  19. 0 0
      src/main/vue/src/views/Performance/PerformanceList.vue
  20. 14 5
      src/main/vue/src/views/organization/Organization.vue
  21. 48 0
      src/main/vue/src/views/organization/Organization1.vue
  22. 0 0
      src/main/vue/src/views/organization/OrganizationList.vue
  23. 27 4
      src/main/vue/src/views/rate/AssignExpert.vue
  24. 0 0
      src/main/vue/src/views/rate/GradeList.vue
  25. 4 1
      src/main/vue/src/views/rate/RateAudit.vue
  26. 107 0
      src/main/vue/src/views/rate/RateAuditEdit.vue
  27. 486 0
      src/main/vue/src/views/rate/RateDistrictList.vue
  28. 28 58
      src/main/vue/src/views/rate/RateEdit.vue
  29. 0 0
      src/main/vue/src/views/rate/RateEdit1.vue
  30. 0 0
      src/main/vue/src/views/rate/RateExpertList.vue
  31. 0 0
      src/main/vue/src/views/rate/RateGrade.vue
  32. 77 51
      src/main/vue/src/views/rate/RateList.vue
  33. 21 21
      src/main/vue/src/views/rate/RateOrganizerList.vue
  34. 0 0
      src/main/vue/src/views/record/RecordDistrictList.vue
  35. 0 0
      src/main/vue/src/views/record/RecordDistrictList2.vue
  36. 0 0
      src/main/vue/src/views/record/RecordEdit.vue
  37. 0 0
      src/main/vue/src/views/record/RecordList.vue
  38. 0 0
      src/main/vue/src/views/record/RecordList2.vue
  39. 0 0
      src/main/vue/src/views/user/ExpertEdit.vue
  40. 0 0
      src/main/vue/src/views/user/ExpertList.vue
  41. 0 0
      src/main/vue/src/views/user/UserEdit.vue
  42. 0 0
      src/main/vue/src/views/user/UserList.vue

+ 1 - 1
src/main/java/com/izouma/wenlvju/converter/RateAuditListConverter.java

@@ -1,7 +1,7 @@
 package com.izouma.wenlvju.converter;
 
 import com.alibaba.fastjson.JSON;
-import com.izouma.wenlvju.dto.RateAudit;
+import com.izouma.wenlvju.domain.RateAudit;
 import org.apache.commons.lang3.StringUtils;
 
 import javax.persistence.AttributeConverter;

+ 6 - 8
src/main/java/com/izouma/wenlvju/domain/Rate.java

@@ -2,10 +2,8 @@ package com.izouma.wenlvju.domain;
 
 import com.izouma.wenlvju.annotations.Searchable;
 import com.izouma.wenlvju.converter.LongArrayConverter;
-import com.izouma.wenlvju.converter.RateAuditListConverter;
 import com.izouma.wenlvju.converter.ReviewTimeListConverter;
 import com.izouma.wenlvju.converter.StringArrayConverter;
-import com.izouma.wenlvju.dto.RateAudit;
 import com.izouma.wenlvju.dto.ReviewTime;
 import com.izouma.wenlvju.enums.OrganizationGrade;
 import com.izouma.wenlvju.enums.RateStatus;
@@ -150,17 +148,17 @@ public class Rate extends BaseEntity {
     @Transient
     private String address;
 
-    @Column(columnDefinition = "TEXT")
-    @Convert(converter = RateAuditListConverter.class)
-    private List<RateAudit> rateAudits = new ArrayList<>();
+//    @Column(columnDefinition = "TEXT")
+//    @Convert(converter = RateAuditListConverter.class)
+//    private List<RateAudit> rateAudits = new ArrayList<>();
 
     @Column(columnDefinition = "TEXT")
     @Convert(converter = ReviewTimeListConverter.class)
     private List<ReviewTime> reviewTimes = new ArrayList<>();
 
-    @Column(columnDefinition = "TEXT")
-    @Convert(converter = StringArrayConverter.class)
-    private List<String> img;
+//    @Column(columnDefinition = "TEXT")
+//    @Convert(converter = StringArrayConverter.class)
+//    private List<String> img;
 
     private String remark;
 }

+ 34 - 0
src/main/java/com/izouma/wenlvju/domain/RateAudit.java

@@ -0,0 +1,34 @@
+package com.izouma.wenlvju.domain;
+
+import com.izouma.wenlvju.enums.RateStatus;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Where;
+
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Entity
+@ApiModel("操作记录")
+@Where(clause = "del = 0")
+public class RateAudit extends BaseEntity {
+    private Long rateId;
+
+//    private LocalDateTime auditTime;
+
+    private Long userId;
+
+    @Enumerated(EnumType.STRING)
+    private RateStatus status;
+
+    private String remark;
+}

+ 0 - 23
src/main/java/com/izouma/wenlvju/dto/RateAudit.java

@@ -1,23 +0,0 @@
-package com.izouma.wenlvju.dto;
-
-import com.izouma.wenlvju.enums.RateStatus;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-public class RateAudit {
-    private LocalDateTime auditTime;
-
-    private Long userId;
-
-    private RateStatus status;
-
-    private String remark;
-}

+ 8 - 4
src/main/java/com/izouma/wenlvju/enums/RateStatus.java

@@ -16,7 +16,7 @@ public enum RateStatus {
     /*
     待分配专家组
      */
-    ASSIGN_EXPERT("待分配专家组"),
+    ASSIGN_EXPERT("区县已上报"),
     /*
     确定审查时间
      */
@@ -24,16 +24,20 @@ public enum RateStatus {
     /*
     待专家组考察(分配专家组)
      */
-    REVIEW_PENDING("待专家组考察"),
+    REVIEW_PENDING("待线下考察"),
     /*
     最终评审
      */
-    SUBMIT_GRADE("最终评审"),
+    SUBMIT_GRADE("最终评审"),
 //    EXPERT_DENY(""),
     /*
     待提交纸质材料
      */
-    SUBMIT_PAPER_MATERIALS("待提交纸质材料"),
+    SUBMIT_PAPER_MATERIALS("待承办单位提交材料"),
+    /*
+    待收取纸质材料
+     */
+    COLLECT_PAPER_MATERIALS("待区县提交材料"),
     /*
     取消
      */

+ 16 - 0
src/main/java/com/izouma/wenlvju/repo/RateAuditRepo.java

@@ -0,0 +1,16 @@
+package com.izouma.wenlvju.repo;
+
+import com.izouma.wenlvju.domain.RateAudit;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import javax.transaction.Transactional;
+
+public interface RateAuditRepo extends JpaRepository<RateAudit, Long>, JpaSpecificationExecutor<RateAudit> {
+    @Query("update RateAudit t set t.del = true where t.id = ?1")
+    @Modifying
+    @Transactional
+    void softDelete(Long id);
+}

+ 20 - 0
src/main/java/com/izouma/wenlvju/service/RateAuditService.java

@@ -0,0 +1,20 @@
+package com.izouma.wenlvju.service;
+
+import com.izouma.wenlvju.domain.RateAudit;
+import com.izouma.wenlvju.dto.PageQuery;
+import com.izouma.wenlvju.repo.RateAuditRepo;
+import com.izouma.wenlvju.utils.JpaUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class RateAuditService {
+
+    private RateAuditRepo rateAuditRepo;
+
+    public Page<RateAudit> all(PageQuery pageQuery) {
+        return rateAuditRepo.findAll(JpaUtils.toSpecification(pageQuery, RateAudit.class), JpaUtils.toPageRequest(pageQuery));
+    }
+}

+ 51 - 17
src/main/java/com/izouma/wenlvju/service/RateService.java

@@ -6,14 +6,16 @@ import com.izouma.wenlvju.config.DateConfig;
 import com.izouma.wenlvju.domain.Collaborate;
 import com.izouma.wenlvju.domain.GradingOrganization;
 import com.izouma.wenlvju.domain.Rate;
+import com.izouma.wenlvju.domain.RateAudit;
 import com.izouma.wenlvju.dto.PageQuery;
-import com.izouma.wenlvju.dto.RateAudit;
 import com.izouma.wenlvju.enums.RateStatus;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.CollaborateRepo;
 import com.izouma.wenlvju.repo.GradingOrganizationRepo;
+import com.izouma.wenlvju.repo.RateAuditRepo;
 import com.izouma.wenlvju.repo.RateRepo;
 import com.izouma.wenlvju.utils.JpaUtils;
+import com.izouma.wenlvju.utils.ObjUtils;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import freemarker.template.Version;
@@ -24,19 +26,16 @@ import org.apache.pdfbox.multipdf.PDFMergerUtility;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
-import sun.misc.BASE64Decoder;
-import sun.misc.BASE64Encoder;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-
 
 @Service
 @Slf4j
@@ -46,30 +45,52 @@ public class RateService {
     private final RateRepo                rateRepo;
     private final CollaborateRepo         collaborateRepo;
     private final GradingOrganizationRepo gradingOrganizationRepo;
+    private final RateAuditRepo           rateAuditRepo;
 
     public Page<Rate> all(PageQuery pageQuery) {
         return rateRepo.findAll(JpaUtils.toSpecification(pageQuery, Rate.class), JpaUtils.toPageRequest(pageQuery));
     }
 
+    public Rate save(Rate record) {
+        if (record.getId() != null) {
+            Rate orig = rateRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            if (RateStatus.SUBMIT_GRADE.equals(record.getStatus())) {
+                record.setUndertakeExamination(orig.isUndertakeExamination());
+            }
+            ObjUtils.merge(orig, record);
+            return rateRepo.save(orig);
+        }
+        String year = String.valueOf(LocalDate.now().getYear());
+        List<Rate> rate = rateRepo
+                .findAllByOrganizationIdAndYearAndStatusNot(record.getOrganizationId(), year, RateStatus.CANCEL);
+        if (CollUtil.isNotEmpty(rate)) {
+            throw new BusinessException("已申请");
+        }
+        record.setYear(year);
+        if (record.isSubmit() && RateStatus.FIRST_REVIEW_PENDING.equals(record.getStatus())) {
+            record.setApplyTime(LocalDateTime.now());
+        }
+        return rateRepo.save(record);
+    }
+
     public void audit(Long id, RateStatus status, String remark, Long userId) {
         Rate rate = rateRepo.findById(id).orElseThrow(new BusinessException("无记录"));
         rate.setStatus(status);
         RateAudit rateAudit = RateAudit.builder()
-                .auditTime(LocalDateTime.now())
                 .userId(userId)
+                .rateId(id)
                 .remark(remark)
                 .status(status)
                 .build();
-        List<RateAudit> rateAudits = rate.getRateAudits();
-        if (rateAudits == null) {
-            rateAudits = new ArrayList<>();
-        }
-        rateAudits.add(rateAudit);
-//        if (RateStatus.EXPERT_PASS.equals(status)){
-//            rate.setScore(score);
+        rateAuditRepo.save(rateAudit);
+//        List<RateAudit> rateAudits = rate.getRateAudits();
+//        if (rateAudits == null) {
+//            rateAudits = new ArrayList<>();
 //        }
-        rateAudits.sort((a, b) -> b.getAuditTime().compareTo(a.getAuditTime()));
-        rate.setRateAudits(rateAudits);
+//        rateAudits.add(rateAudit);
+
+//        rateAudits.sort((a, b) -> b.getAuditTime().compareTo(a.getAuditTime()));
+//        rate.setRateAudits(rateAudits);
         rateRepo.save(rate);
     }
 
@@ -246,4 +267,17 @@ public class RateService {
         sos.flush();
         outputStream.close();
     }
+
+    public void paperMaterial(Long id, RateStatus status, String remark,Long userId) {
+        Rate rate = rateRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+        rate.setStatus(status);
+        rateRepo.save(rate);
+        RateAudit rateAudit = RateAudit.builder()
+                .userId(userId)
+                .rateId(id)
+                .remark(remark)
+                .status(status)
+                .build();
+        rateAuditRepo.save(rateAudit);
+    }
 }

+ 65 - 0
src/main/java/com/izouma/wenlvju/web/RateAuditController.java

@@ -0,0 +1,65 @@
+package com.izouma.wenlvju.web;
+import com.izouma.wenlvju.domain.RateAudit;
+import com.izouma.wenlvju.service.RateAuditService;
+import com.izouma.wenlvju.dto.PageQuery;
+import com.izouma.wenlvju.exception.BusinessException;
+import com.izouma.wenlvju.repo.RateAuditRepo;
+import com.izouma.wenlvju.utils.ObjUtils;
+import com.izouma.wenlvju.utils.SecurityUtils;
+import com.izouma.wenlvju.utils.excel.ExcelUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@RestController
+@RequestMapping("/rateAudit")
+@AllArgsConstructor
+public class RateAuditController extends BaseController {
+    private RateAuditService rateAuditService;
+    private RateAuditRepo rateAuditRepo;
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/save")
+    public RateAudit save(@RequestBody RateAudit record) {
+        if (record.getId() != null) {
+            RateAudit orig = rateAuditRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            ObjUtils.merge(orig, record);
+            return rateAuditRepo.save(orig);
+        }
+//        record.setAuditTime(LocalDateTime.now());
+        record.setUserId(SecurityUtils.getAuthenticatedUser().getId());
+        return rateAuditRepo.save(record);
+    }
+
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/all")
+    public Page<RateAudit> all(@RequestBody PageQuery pageQuery) {
+        pageQuery.setSort("createdAt,desc");
+        return rateAuditService.all(pageQuery);
+    }
+
+    @GetMapping("/get/{id}")
+    public RateAudit get(@PathVariable Long id) {
+        return rateAuditRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+    }
+
+    @PostMapping("/del/{id}")
+    public void del(@PathVariable Long id) {
+        rateAuditRepo.softDelete(id);
+    }
+
+    @GetMapping("/excel")
+    @ResponseBody
+    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
+        List<RateAudit> data = all(pageQuery).getContent();
+        ExcelUtils.export(response, data);
+    }
+}
+

+ 19 - 29
src/main/java/com/izouma/wenlvju/web/RateController.java

@@ -15,9 +15,7 @@ import com.izouma.wenlvju.repo.GradingOrganizationRepo;
 import com.izouma.wenlvju.repo.OrganizationRepo;
 import com.izouma.wenlvju.repo.RateRepo;
 import com.izouma.wenlvju.repo.UserRepo;
-import com.izouma.wenlvju.service.OrganizationService;
 import com.izouma.wenlvju.service.RateService;
-import com.izouma.wenlvju.utils.ObjUtils;
 import com.izouma.wenlvju.utils.SecurityUtils;
 import com.izouma.wenlvju.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
@@ -25,7 +23,9 @@ import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
@@ -39,34 +39,13 @@ public class RateController extends BaseController {
     private final RateService             rateService;
     private final RateRepo                rateRepo;
     private final OrganizationRepo        organizationRepo;
-    private final OrganizationService     organizationService;
     private final UserRepo                userRepo;
     private final GradingOrganizationRepo gradingOrganizationRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public Rate save(@RequestBody Rate record) {
-        if (record.getId() != null) {
-            Rate orig = rateRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            if (RateStatus.SUBMIT_GRADE.equals(record.getStatus())) {
-                record.setUndertakeExamination(orig.isUndertakeExamination());
-                record.setRateAudits(orig.getRateAudits());
-            }
-            ObjUtils.merge(orig, record);
-            return rateRepo.save(orig);
-        }
-        String year = String.valueOf(LocalDate.now().getYear());
-        List<Rate> rate = rateRepo
-                .findAllByOrganizationIdAndYearAndStatusNot(record.getOrganizationId(), year, RateStatus.CANCEL);
-        if (CollUtil.isNotEmpty(rate)) {
-            throw new BusinessException("已申请");
-        }
-        record.setYear(year);
-        organizationService.saveRate(record);
-        if (record.isSubmit() && RateStatus.FIRST_REVIEW_PENDING.equals(record.getStatus())) {
-            record.setApplyTime(LocalDateTime.now());
-        }
-        return rateRepo.save(record);
+        return rateService.save(record);
     }
 
 
@@ -114,9 +93,9 @@ public class RateController extends BaseController {
         rateRepo.softDelete(id);
     }
 
-    @GetMapping("/excel")
+    @PostMapping("/excel")
     @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
+    public void excel(HttpServletResponse response, @RequestBody PageQuery pageQuery) throws IOException {
         List<RateDTO> data = all2(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
@@ -131,8 +110,14 @@ public class RateController extends BaseController {
         rateService.addExpert(id, userId);
     }
 
-    @GetMapping(value = "/export/{id}", produces = "application/pdf;charset=utf-8")
-    public void export(@PathVariable Long id, HttpServletResponse response) {
+    @GetMapping(value = "/export/{id}", produces = "application/msword;charset=utf-8")
+    public String export(@PathVariable Long id) {
+        Rate rate = rateRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+        return rateService.export(rate);
+    }
+
+    @GetMapping(value = "/exportPdf/{id}", produces = "application/pdf;charset=utf-8")
+    public void exportPdf(@PathVariable Long id, HttpServletResponse response) {
         try {
             rateService.exportPdf(id, response);
         } catch (IOException e) {
@@ -177,5 +162,10 @@ public class RateController extends BaseController {
         return rateRepo.countAllByOrganizationIdAndYear(id, year) == 0;
     }
 
+    @PostMapping("/paperMaterial")
+    public void paperMaterial(@RequestParam Long id, @RequestParam RateStatus status, String remark) {
+        rateService.paperMaterial(id, status, remark, SecurityUtils.getAuthenticatedUser().getId());
+    }
+
 }
 

+ 1 - 0
src/main/resources/genjson/RateAudit.json

@@ -0,0 +1 @@
+{"tableName":"RateAudit","className":"RateAudit","remark":"等级评定记录","genTable":true,"genClass":true,"genList":false,"genForm":true,"genRouter":false,"javaPath":"/Users/qiufangchao/Desktop/project/wenlvju/src/main/java/com/izouma/wenlvju","viewPath":"/Users/qiufangchao/Desktop/project/wenlvju/src/main/vue/src/views","routerPath":"/Users/qiufangchao/Desktop/project/wenlvju/src/main/vue/src","resourcesPath":"/Users/qiufangchao/Desktop/project/wenlvju/src/main/resources","dataBaseType":"Mysql","fields":[{"name":"auditTime","modelName":"auditTime","remark":"操作时间","showInList":true,"showInForm":true,"formType":"datetime"},{"name":"status","modelName":"status","remark":"状态","showInList":true,"showInForm":true,"formType":"select","apiFlag":"1","optionsValue":"[{\"label\":\"DRAFT\",\"value\":\"DRAFT\"},{\"label\":\"FIRST_REVIEW_PENDING\",\"value\":\"FIRST_REVIEW_PENDING\"},{\"label\":\"FIRST_REVIEW_DENY\",\"value\":\"FIRST_REVIEW_DENY\"},{\"label\":\"ASSIGN_EXPERT\",\"value\":\"ASSIGN_EXPERT\"},{\"label\":\"REVIEW_PENDING\",\"value\":\"REVIEW_PENDING\"},{\"label\":\"SUBMIT_GRADE\",\"value\":\"SUBMIT_GRADE\"},{\"label\":\"SUBMIT_PAPER_MATERIALS\",\"value\":\"SUBMIT_PAPER_MATERIALS\"},{\"label\":\"CANCEL\",\"value\":\"CANCEL\"},{\"label\":\"COMPLETE\",\"value\":\"COMPLETE\"}]"},{"name":"remark","modelName":"remark","remark":"说明","showInList":true,"showInForm":true,"formType":"textarea"}],"readTable":false,"dataSourceCode":"dataSource","genJson":"","subtables":[],"update":false,"basePackage":"com.izouma.wenlvju","tablePackage":"com.izouma.wenlvju.domain.RateAudit"}

+ 4 - 3
src/main/vue/src/mixins/rateStatus.js

@@ -5,10 +5,11 @@ export default {
                 { label: '草稿', value: 'DRAFT' },
                 { label: '等待初审', value: 'FIRST_REVIEW_PENDING' },
                 { label: '初审驳回', value: 'FIRST_REVIEW_DENY' },
-                { label: '已审核上报', value: 'ASSIGN_EXPERT' },
-                { label: '待专家组考察', value: 'REVIEW_PENDING' },
+                { label: '区县已上报', value: 'ASSIGN_EXPERT' },
+                { label: '待线下考察', value: 'REVIEW_PENDING' },
                 { label: '待最终评审', value: 'SUBMIT_GRADE' },
-                { label: '待提交纸质材料', value: 'SUBMIT_PAPER_MATERIALS' },
+                { label: '待承办单位提交材料', value: 'SUBMIT_PAPER_MATERIALS' },
+                { label: '待区县提交材料', value: 'COLLECT_PAPER_MATERIALS' },
                 { label: '完成', value: 'COMPLETE' },
                 { label: '撤回', value: 'CANCEL' }
             ]

+ 52 - 25
src/main/vue/src/router.js

@@ -75,7 +75,7 @@ const router = new Router({
                 {
                     path: '/userEdit',
                     name: 'userEdit',
-                    component: () => import(/* webpackChunkName: "userEdit" */ '@/views/UserEdit.vue'),
+                    component: () => import(/* webpackChunkName: "userEdit" */ '@/views/user/UserEdit.vue'),
                     meta: {
                         title: '用户编辑'
                     }
@@ -83,7 +83,7 @@ const router = new Router({
                 {
                     path: '/userList',
                     name: 'userList',
-                    component: () => import(/* webpackChunkName: "userList" */ '@/views/UserList.vue'),
+                    component: () => import(/* webpackChunkName: "userList" */ '@/views/user/UserList.vue'),
                     meta: {
                         title: '用户管理'
                     }
@@ -99,7 +99,7 @@ const router = new Router({
                 {
                     path: '/assignExpert',
                     name: 'assignExpert',
-                    component: () => import(/* webpackChunkName: "userList" */ '@/views/AssignExpert.vue'),
+                    component: () => import(/* webpackChunkName: "userList" */ '@/views/rate/AssignExpert.vue'),
                     meta: {
                         title: '分配专家组'
                     }
@@ -107,9 +107,9 @@ const router = new Router({
                 {
                     path: '/gradeList',
                     name: 'gradeList',
-                    component: () => import(/* webpackChunkName: "userList" */ '@/views/organization/GradeList.vue'),
+                    component: () => import(/* webpackChunkName: "userList" */ '@/views/rate/GradeList.vue'),
                     meta: {
-                        title: '分配专家组'
+                        title: '分'
                     }
                 },
                 {
@@ -120,10 +120,19 @@ const router = new Router({
                         title: '等级评定'
                     }
                 },
+                {
+                    path: '/organization1',
+                    name: 'organization1',
+                    component: () =>
+                        import(/* webpackChunkName: "userList" */ '@/views/organization/Organization1.vue'),
+                    meta: {
+                        title: '等级评定'
+                    }
+                },
                 {
                     path: '/expertList',
                     name: 'expertList',
-                    component: () => import(/* webpackChunkName: "expertList" */ '@/views/ExpertList.vue'),
+                    component: () => import(/* webpackChunkName: "expertList" */ '@/views/user/ExpertList.vue'),
                     meta: {
                         title: '专家管理'
                     }
@@ -131,7 +140,7 @@ const router = new Router({
                 {
                     path: '/expertEdit',
                     name: 'expertEdit',
-                    component: () => import(/* webpackChunkName: "expertEdit" */ '@/views/ExpertEdit.vue'),
+                    component: () => import(/* webpackChunkName: "expertEdit" */ '@/views/user/ExpertEdit.vue'),
                     meta: {
                         title: '专家编辑'
                     }
@@ -155,7 +164,7 @@ const router = new Router({
                 {
                     path: '/recordEdit',
                     name: 'RecordEdit',
-                    component: () => import(/* webpackChunkName: "recordEdit" */ '@/views/RecordEdit.vue'),
+                    component: () => import(/* webpackChunkName: "recordEdit" */ '@/views/record/RecordEdit.vue'),
                     meta: {
                         title: '备案管理编辑'
                     }
@@ -163,7 +172,7 @@ const router = new Router({
                 {
                     path: '/recordList2',
                     name: 'RecordList2',
-                    component: () => import(/* webpackChunkName: "recordList" */ '@/views/RecordList2.vue'),
+                    component: () => import(/* webpackChunkName: "recordList" */ '@/views/record/RecordList2.vue'),
                     meta: {
                         title: '监管管理'
                     }
@@ -171,7 +180,8 @@ const router = new Router({
                 {
                     path: '/recordDistrictList2',
                     name: 'RecordDistrictList2',
-                    component: () => import(/* webpackChunkName: "recordList" */ '@/views/RecordDistrictList2.vue'),
+                    component: () =>
+                        import(/* webpackChunkName: "recordList" */ '@/views/record/RecordDistrictList2.vue'),
                     meta: {
                         title: '监管管理'
                     }
@@ -179,7 +189,8 @@ const router = new Router({
                 {
                     path: '/recordDistrictList',
                     name: 'RecordList',
-                    component: () => import(/* webpackChunkName: "recordList" */ '@/views/RecordDistrictList.vue'),
+                    component: () =>
+                        import(/* webpackChunkName: "recordList" */ '@/views/record/RecordDistrictList.vue'),
                     meta: {
                         title: '备案管理'
                     }
@@ -187,7 +198,7 @@ const router = new Router({
                 {
                     path: '/recordList',
                     name: 'RecordList',
-                    component: () => import(/* webpackChunkName: "recordList" */ '@/views/RecordList.vue'),
+                    component: () => import(/* webpackChunkName: "recordList" */ '@/views/record/RecordList.vue'),
                     meta: {
                         title: '备案管理'
                     }
@@ -195,7 +206,8 @@ const router = new Router({
                 {
                     path: '/performanceEdit',
                     name: 'PerformanceEdit',
-                    component: () => import(/* webpackChunkName: "performanceEdit" */ '@/views/PerformanceEdit.vue'),
+                    component: () =>
+                        import(/* webpackChunkName: "performanceEdit" */ '@/views/performance/PerformanceEdit.vue'),
                     meta: {
                         title: '展演管理编辑'
                     }
@@ -203,7 +215,8 @@ const router = new Router({
                 {
                     path: '/performanceList',
                     name: 'PerformanceList',
-                    component: () => import(/* webpackChunkName: "performanceList" */ '@/views/PerformanceList.vue'),
+                    component: () =>
+                        import(/* webpackChunkName: "performanceList" */ '@/views/performance/PerformanceList.vue'),
                     meta: {
                         title: '展演管理'
                     }
@@ -212,7 +225,9 @@ const router = new Router({
                     path: '/performanceApplyEdit',
                     name: 'PerformanceApplyEdit',
                     component: () =>
-                        import(/* webpackChunkName: "performanceApplyEdit" */ '@/views/PerformanceApplyEdit.vue'),
+                        import(
+                            /* webpackChunkName: "performanceApplyEdit" */ '@/views/performance/PerformanceApplyEdit.vue'
+                        ),
                     meta: {
                         title: '展演报名编辑'
                     }
@@ -221,7 +236,9 @@ const router = new Router({
                     path: '/performanceApplyList',
                     name: 'PerformanceApplyList',
                     component: () =>
-                        import(/* webpackChunkName: "performanceApplyList" */ '@/views/PerformanceApplyList.vue'),
+                        import(
+                            /* webpackChunkName: "performanceApplyList" */ '@/views/performance/PerformanceApplyList.vue'
+                        ),
                     meta: {
                         title: '展演报名'
                     }
@@ -230,7 +247,9 @@ const router = new Router({
                     path: '/performanceApplyList2',
                     name: 'PerformanceApplyList2',
                     component: () =>
-                        import(/* webpackChunkName: "performanceApplyList" */ '@/views/PerformanceApplyList2.vue'),
+                        import(
+                            /* webpackChunkName: "performanceApplyList" */ '@/views/performance/PerformanceApplyList2.vue'
+                        ),
                     meta: {
                         title: '展演报名'
                     }
@@ -270,7 +289,7 @@ const router = new Router({
                 {
                     path: '/rateEdit',
                     name: 'RateEdit',
-                    component: () => import(/* webpackChunkName: "rateEdit" */ '@/views/organization/RateEdit.vue'),
+                    component: () => import(/* webpackChunkName: "rateEdit" */ '@/views/rate/RateEdit.vue'),
                     meta: {
                         title: '等级评定申请'
                     }
@@ -278,8 +297,7 @@ const router = new Router({
                 {
                     path: '/rateOrganizerList',
                     name: 'RateOrganizerList',
-                    component: () =>
-                        import(/* webpackChunkName: "rateList" */ '@/views/organization/RateOrganizerList.vue'),
+                    component: () => import(/* webpackChunkName: "rateList" */ '@/views/rate/RateOrganizerList.vue'),
                     meta: {
                         title: '等级评定'
                     }
@@ -287,7 +305,7 @@ const router = new Router({
                 {
                     path: '/rateExpertList',
                     name: 'RateExpertList',
-                    component: () => import(/* webpackChunkName: "rateList" */ '@/views/RateExpertList.vue'),
+                    component: () => import(/* webpackChunkName: "rateList" */ '@/views/rate/RateExpertList.vue'),
                     meta: {
                         title: '等级评定'
                     }
@@ -295,7 +313,7 @@ const router = new Router({
                 {
                     path: '/rateAudit',
                     name: 'RateAudit',
-                    component: () => import(/* webpackChunkName: "rateAudit" */ '@/views/RateAudit.vue'),
+                    component: () => import(/* webpackChunkName: "rateAudit" */ '@/views/rate/RateAudit.vue'),
                     meta: {
                         title: '等级评定申请'
                     }
@@ -303,15 +321,23 @@ const router = new Router({
                 {
                     path: '/rateGrade',
                     name: 'RateGrade',
-                    component: () => import(/* webpackChunkName: "rateGrade" */ '@/views/RateGrade.vue'),
+                    component: () => import(/* webpackChunkName: "rateGrade" */ '@/views/rate/RateGrade.vue'),
                     meta: {
                         title: '打分'
                     }
                 },
+                {
+                    path: '/rateDistrictList',
+                    name: 'RateDistrictList',
+                    component: () => import(/* webpackChunkName: "rateList" */ '@/views/rate/RateDistrictList.vue'),
+                    meta: {
+                        title: '等级评定'
+                    }
+                },
                 {
                     path: '/rateList',
                     name: 'RateList',
-                    component: () => import(/* webpackChunkName: "rateList" */ '@/views/RateList.vue'),
+                    component: () => import(/* webpackChunkName: "rateList" */ '@/views/rate/RateList.vue'),
                     meta: {
                         title: '等级评定'
                     }
@@ -337,7 +363,8 @@ const router = new Router({
                 {
                     path: '/organizationList',
                     name: 'OrganizationList',
-                    component: () => import(/* webpackChunkName: "organizationList" */ '@/views/OrganizationList.vue'),
+                    component: () =>
+                        import(/* webpackChunkName: "organizationList" */ '@/views/organization/OrganizationList.vue'),
                     meta: {
                         title: '承办单位'
                     }

+ 1 - 1
src/main/vue/src/views/ArtTypes.vue

@@ -137,7 +137,7 @@ export default {
                         '/artType/save',
                         {
                             ...data,
-                            active: false,
+                            del: false,
                             children: null
                         },
                         { body: 'json' }

+ 0 - 0
src/main/vue/src/views/PerformanceApplyEdit.vue → src/main/vue/src/views/Performance/PerformanceApplyEdit.vue


+ 0 - 0
src/main/vue/src/views/PerformanceApplyList.vue → src/main/vue/src/views/Performance/PerformanceApplyList.vue


+ 0 - 0
src/main/vue/src/views/PerformanceApplyList2.vue → src/main/vue/src/views/Performance/PerformanceApplyList2.vue


+ 0 - 0
src/main/vue/src/views/PerformanceEdit.vue → src/main/vue/src/views/Performance/PerformanceEdit.vue


+ 0 - 0
src/main/vue/src/views/PerformanceList.vue → src/main/vue/src/views/Performance/PerformanceList.vue


+ 14 - 5
src/main/vue/src/views/organization/Organization.vue

@@ -4,13 +4,15 @@
             <el-tab-pane label="申请信息" name="first"><RateAudit ref="page1" @next="goNext"/></el-tab-pane>
             <el-tab-pane label="专家组" name="second" :disabled="status"><AssignExpert ref="page2"/></el-tab-pane>
             <el-tab-pane label="评分细则" name="third" :disabled="grade"><GradeList ref="page3"/></el-tab-pane>
+            <el-tab-pane label="审批进度" name="forth"><RateAuditEdit ref="page4"/></el-tab-pane>
         </el-tabs>
     </div>
 </template>
 <script>
-import RateAudit from '../RateAudit.vue';
-import AssignExpert from '../AssignExpert.vue';
-import GradeList from './GradeList.vue';
+import RateAudit from '../rate/RateAudit.vue';
+import AssignExpert from '../rate/AssignExpert.vue';
+import GradeList from '../rate/GradeList.vue';
+import RateAuditEdit from '../rate/RateAuditEdit.vue';
 export default {
     name: 'Organization',
     created() {
@@ -19,11 +21,17 @@ export default {
             data == 'SUBMIT_GRADE' ||
             data == 'REVIEW_PENDING' ||
             data == 'SUBMIT_PAPER_MATERIALS' ||
+            data == 'COLLECT_PAPER_MATERIALS' ||
             data == 'COMPLETE'
         ) {
             this.status = false;
         }
-        if (data == 'SUBMIT_GRADE' || data == 'COMPLETE' || data == 'SUBMIT_PAPER_MATERIALS') {
+        if (
+            data == 'SUBMIT_GRADE' ||
+            data == 'COMPLETE' ||
+            data == 'SUBMIT_PAPER_MATERIALS' ||
+            data == 'COLLECT_PAPER_MATERIALS'
+        ) {
             this.grade = false;
         }
     },
@@ -44,7 +52,8 @@ export default {
     components: {
         AssignExpert,
         RateAudit,
-        GradeList
+        GradeList,
+        RateAuditEdit
     }
 };
 </script>

+ 48 - 0
src/main/vue/src/views/organization/Organization1.vue

@@ -0,0 +1,48 @@
+<template>
+    <div class="edit-view">
+        <el-tabs v-model="active">
+            <el-tab-pane label="申请信息" name="first"><RateEdit ref="page1" @next="goNext"/></el-tab-pane>
+            <el-tab-pane label="审批进度" name="second"><RateAuditEdit ref="page4"/></el-tab-pane>
+        </el-tabs>
+    </div>
+</template>
+<script>
+import RateEdit from '../rate/RateEdit.vue';
+import RateAuditEdit from '../rate/RateAuditEdit.vue';
+export default {
+    name: 'Organization1',
+    created() {
+        let data = this.$route.query.status;
+        if (
+            data == 'SUBMIT_GRADE' ||
+            data == 'REVIEW_PENDING' ||
+            data == 'SUBMIT_PAPER_MATERIALS' ||
+            data == 'COMPLETE'
+        ) {
+            this.status = false;
+        }
+        if (data == 'SUBMIT_GRADE' || data == 'COMPLETE' || data == 'SUBMIT_PAPER_MATERIALS') {
+            this.grade = false;
+        }
+    },
+    data() {
+        return {
+            active: 'first',
+            status: true,
+            grade: true
+        };
+    },
+    methods: {
+        goNext(page) {
+            this.$nextTick(() => {
+                this.activeName = 'second';
+            });
+        }
+    },
+    components: {
+        RateEdit,
+        RateAuditEdit
+    }
+};
+</script>
+<style lang="less" scoped></style>

+ 0 - 0
src/main/vue/src/views/OrganizationList.vue → src/main/vue/src/views/organization/OrganizationList.vue


+ 27 - 4
src/main/vue/src/views/AssignExpert.vue → src/main/vue/src/views/rate/AssignExpert.vue

@@ -66,6 +66,7 @@
                     end-placeholder="请选择结束时间"
                     range-separator="至"
                     style="margin-left: 10px"
+                    :disabled="readonly"
                 >
                 </el-date-picker>
             </el-form-item>
@@ -77,6 +78,7 @@
                         filterable
                         clearable
                         placeholder="请选择专家组长"
+                        :disabled="readonly"
                     >
                         <el-option v-for="item in expert" :key="item.value" :value="item.value" :label="item.label">
                             <!-- <span style="float: left">{{ item.nickname }}</span>
@@ -203,10 +205,7 @@ export default {
         return {
             saving: false,
             formData: {},
-            rules: {
-                name: [{ required: true, message: '请输入公司名', trigger: 'blur' }],
-                userId: [{ required: true, message: '请选择管理员', trigger: 'blur' }]
-            },
+            rules: {},
             users: [],
             emps: [],
             employeeId: '',
@@ -253,6 +252,16 @@ export default {
             this.$http
                 .post('/rate/save', data, { body: 'json' })
                 .then(res => {
+                    this.$nextTick(() => {
+                        let audit = {
+                            rateId: res.id,
+                            remark: '等待专家组进行线下考察',
+                            status: 'REVIEW_PENDING'
+                        };
+                        this.$http.post('/rateAudit/save', audit, {
+                            body: 'json'
+                        });
+                    });
                     this.saving = false;
                     this.$message.success('成功');
                     this.$router.go(-1);
@@ -337,4 +346,18 @@ export default {
 .el-divider--horizontal {
     margin: 32px 0;
 }
+/deep/ .el-input.is-disabled .el-input__inner {
+    background-color: #ffffff;
+    color: #606266;
+}
+/deep/ .el-range-editor.is-disabled input {
+    background-color: #ffffff;
+    color: #606266;
+}
+/deep/ .el-range-editor.is-disabled {
+    background-color: #ffffff;
+}
+/deep/ .el-range-editor.is-disabled .el-range-separator {
+    color: #606266;
+}
 </style>

+ 0 - 0
src/main/vue/src/views/organization/GradeList.vue → src/main/vue/src/views/rate/GradeList.vue


+ 4 - 1
src/main/vue/src/views/RateAudit.vue → src/main/vue/src/views/rate/RateAudit.vue

@@ -93,6 +93,7 @@
                                     :options="artTypes"
                                     :show-all-levels="false"
                                     placeholder="请选择专业"
+                                    :disabled="readonly"
                                 >
                                 </el-cascader>
                             </el-form-item>
@@ -227,7 +228,6 @@ export default {
                 .then(res => {
                     this.formData = res;
                     let data = res.rateAudits;
-                    console.log(data);
                     if (typeof data != 'undefined') {
                         this.showAudit = true;
                         this.rateAudits = data;
@@ -615,4 +615,7 @@ export default {
     -webkit-box-sizing: border-box;
     box-sizing: border-box;
 }
+/deep/ .el-input.is-disabled .el-input__inner {
+    background-color: #ffffff;
+}
 </style>

+ 107 - 0
src/main/vue/src/views/rate/RateAuditEdit.vue

@@ -0,0 +1,107 @@
+<template>
+    <div class="edit-view">
+        <div v-for="(item, index) in audits" :key="index" class="div-style">
+            <div style="padding-left: 40px;">
+                <el-form :model="item" label-width="80">
+                    <el-form-item label="时间">
+                        <el-date-picker
+                            v-model="item.createdAt"
+                            type="datetime"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            placeholder="选择日期时间"
+                            style="width: 400px"
+                            disabled
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+
+                    <el-form-item label="进度">
+                        <el-input style="width: 400px" type="textarea" v-model="item.remark" readonly></el-input>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <el-divider v-if="index < audits.length - 1" direction="horizontal" content-position="left"></el-divider>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    name: 'RateAuditEdit',
+    created() {
+        if (this.$route.query.id) {
+            this.$http
+                .post('/rateAudit/all', { size: 100, query: { rateId: this.$route.query.id } }, { body: 'json' })
+                .then(res => {
+                    this.audits = res.content;
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        }
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {},
+            audits: []
+        };
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            let data = { ...this.formData };
+
+            this.saving = true;
+            this.$http
+                .post('/rateAudit/save', data, { body: 'json' })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/rateAudit/del/${this.formData.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        console.log(e);
+                        this.$message.error((e || {}).error || '删除失败');
+                    }
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.edit-view {
+    height: 680px;
+}
+.div-style {
+    margin-bottom: 10px;
+}
+/deep/ .el-input.is-disabled .el-input__inner {
+    background-color: #ffffff;
+    color: #606266;
+}
+</style>

+ 486 - 0
src/main/vue/src/views/rate/RateDistrictList.vue

@@ -0,0 +1,486 @@
+<template>
+    <div class="list-view">
+        <div class="filters-container">
+            <!-- <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
+             <el-button @click="addRow" type="primary" icon="el-icon-plus" class="filter-item">创建申请 </el-button> -->
+            <el-button
+                @click="download"
+                type="primary"
+                icon="el-icon-download"
+                :loading="downloading"
+                class="filter-item"
+                >导出EXCEL
+            </el-button>
+            <el-input
+                placeholder="输入承办单位名称"
+                v-model="search"
+                clearable
+                class="filter-item"
+                @change="getData"
+            ></el-input>
+            <el-select
+                style="width: 220px"
+                v-model="status"
+                placeholder="请选择的状态"
+                class="filter-item"
+                multiple
+                clearable
+                @change="getData"
+            >
+                <el-option
+                    v-for="item in statusOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                ></el-option>
+            </el-select>
+            <el-select
+                style="width: 220px"
+                v-model="grade"
+                placeholder="请选择的等级"
+                class="filter-item"
+                clearable
+                multiple
+                @change="getData"
+            >
+                <el-option
+                    v-for="item in gradeOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                ></el-option>
+            </el-select>
+            <!-- <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button> -->
+        </div>
+        <el-table
+            :data="tableData"
+            row-key="id"
+            ref="table"
+            header-row-class-name="table-header-row"
+            header-cell-class-name="table-header-cell"
+            row-class-name="table-row"
+            cell-class-name="table-cell"
+            :height="tableHeight"
+        >
+            <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
+            <!-- <el-table-column prop="id" label="ID" width="100"> </el-table-column> -->
+            <el-table-column prop="name" label="承办单位"> </el-table-column>
+            <el-table-column prop="createdAt" label="申请时间" min-width="100"></el-table-column>
+            <el-table-column prop="year" label="年度" min-width="60"> </el-table-column>
+            <el-table-column prop="gradingOrganization" label="考级机构" min-width="100"> </el-table-column>
+            <el-table-column prop="status1" label="状态" min-width="100"> </el-table-column>
+            <el-table-column prop="score" label="分数">
+                <template slot-scope="{ row }">
+                    <span v-if="row.score">{{ row.score }}</span>
+                    <span v-else>暂无</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="grade" label="等级">
+                <template slot-scope="{ row }">
+                    <span v-if="row.grade == '优秀'"><el-link :underline="false" type="success">优秀</el-link></span>
+                    <span v-else-if="row.grade == '合格'"
+                        ><el-link :underline="false" type="warning">合格</el-link></span
+                    >
+                    <span v-else-if="row.grade == '不合格'"
+                        ><el-link :underline="false" type="danger">不合格</el-link></span
+                    >
+                    <span v-else><el-link type="info" :underline="false">暂无</el-link></span>
+                </template>
+            </el-table-column>
+            <el-table-column label="操作" align="right" fixed="right" min-width="200">
+                <template slot-scope="{ row }">
+                    <el-button
+                        v-if="row.status === 'FIRST_REVIEW_PENDING'"
+                        :loading="row.loading"
+                        @click="audit(row, 'ASSIGN_EXPERT', '区县管理员已审核上报')"
+                        type="success"
+                        size="mini"
+                        plain
+                    >
+                        同意上报
+                    </el-button>
+                    <el-button
+                        v-if="row.status === 'FIRST_REVIEW_PENDING'"
+                        :loading="row.loading"
+                        @click="dismiss(row)"
+                        type="warning"
+                        size="mini"
+                        plain
+                    >
+                        退回
+                    </el-button>
+                    <!-- <el-button v-if="row.status === 'SUBMIT_GRADE'" @click="openScore(row)" type="warning" plain
+                        >填写分数</el-button
+                    > -->
+                    <el-button
+                        @click="supervision(row.id)"
+                        type="success"
+                        size="mini"
+                        plain
+                        v-if="(row.status === 'ASSIGN_EXPERT') & display"
+                        >分配专家组</el-button
+                    >
+                    <el-button
+                        v-if="row.status === 'SUBMIT_PAPER_MATERIALS'"
+                        type="success"
+                        plain
+                        size="mini"
+                        @click="saveComplete(row)"
+                        :loading="loading"
+                        >收取纸质材料</el-button
+                    >
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>
+                        <span v-if="row.status == 'FIRST_REVIEW_PENDING' || row.status == 'FIRST_REVIEW_PENDING'"
+                            >审核材料</span
+                        >
+                        <span v-else>查看详情</span>
+                    </el-button>
+                    <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <!-- <div class="multiple-mode-wrapper">
+                <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button @click="operation1">批量操作1</el-button>
+                    <el-button @click="operation2">批量操作2</el-button>
+                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div> -->
+            <el-pagination
+                background
+                @size-change="onSizeChange"
+                @current-change="onCurrentChange"
+                :current-page="page"
+                :page-sizes="[10, 20, 30, 40, 50]"
+                :page-size="pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="totalElements"
+            >
+            </el-pagination>
+        </div>
+
+        <el-dialog title="分配市政专家" :visible.sync="dialogVisible" width="500px" center>
+            <div>
+                <el-table :data="supervisor">
+                    <el-table-column prop="nickname" label="昵称"></el-table-column>
+                    <el-table-column prop="phone" label="手机号"></el-table-column>
+                    <el-table-column label="操作" align="center" fixed="right" min-width="80">
+                        <template slot-scope="{ row }">
+                            <el-button @click="addRegulatory(row.id)" type="success" size="mini" plain>确认</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
+        </el-dialog>
+        <el-dialog title="退回缘由" :visible.sync="dialogDismiss" width="500px" center>
+            <div style="height: 150px;width:330px;margin:2px auto">
+                <label style="margin-right: 10px">退回缘由</label>
+                <el-select
+                    v-model="reason"
+                    filterable
+                    allow-create
+                    default-first-option
+                    clearable
+                    placeholder="请选择缘由"
+                    style="width: 70%"
+                >
+                    <el-option v-for="item in dismissReason" :key="item" :label="item" :value="item"> </el-option>
+                </el-select>
+                <div style="margin: 45px 0 0 240px">
+                    <el-button type="primary" @click="saveDismiss">确认</el-button>
+                </div>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+import rateStatus from '@/mixins/rateStatus';
+
+export default {
+    name: 'RateDistrictList',
+    mixins: [pageableTable, rateStatus],
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/rate/all2',
+            downloading: false,
+            supervisor: [],
+            dialogVisible: false,
+            rateId: '',
+            display: false,
+            gradeOptions: [
+                { label: '优秀', value: 'EXCELLENT' },
+                { label: '合格', value: 'ELIGIBLE' },
+                { label: '不合格', value: 'NOT_ELIGIBLE' }
+            ],
+            dialogDismiss: false,
+            reason: '',
+            dismissReason: ['资料不全', '缺少附件', '无资格'],
+            form: {},
+            grade: '',
+            status: [],
+            loading: false
+        };
+    },
+    computed: {
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        },
+        ...mapState(['userInfo'])
+    },
+    mounted() {
+        this.$http
+            .post('/user/authority', { authorityName: 'ROLE_EXPERT' })
+            .then(res => {
+                this.supervisor = res;
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
+    },
+    methods: {
+        gradeFormatter(row, column, cellValue, index) {
+            let selectedOption = this.gradeOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        beforeGetData() {
+            // return {
+            //     search: this.search,
+            //     sort: 'createdAt,desc',
+            //     query: {
+            //         submit: true
+            //     }
+            // };
+            let data = { query: { submit: true, district: this.userInfo.district } };
+            if (this.search) {
+                data.search = this.search;
+            }
+            if (this.status) {
+                data.query.status = this.status;
+            }
+            if (this.grade) {
+                data.query.grade = this.grade;
+            }
+            return data;
+        },
+        toggleMultipleMode(multipleMode) {
+            this.multipleMode = multipleMode;
+            if (!multipleMode) {
+                this.$refs.table.clearSelection();
+            }
+        },
+        addRow() {
+            this.$router.push({
+                path: '/rateEdit',
+                query: {
+                    ...this.$route.query
+                }
+            });
+        },
+        editRow(row) {
+            this.$router.push({
+                // path: '/rateAudit',
+                path: '/organization',
+                query: {
+                    // organId: row.organizationId,
+                    // rateId: row.id
+                    id: row.id,
+                    status: row.status
+                }
+            });
+        },
+        download() {
+            this.downloading = true;
+            let data = { size: 1000, query: { submit: true, district: this.userInfo.district } };
+            this.$axios
+                .get('/rate/excel', {
+                    responseType: 'blob',
+                    params: data
+                })
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        operation1() {
+            this.$notify({
+                title: '提示',
+                message: this.selection
+            });
+        },
+        operation2() {
+            this.$message('操作2');
+        },
+        deleteRow(row) {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/rate/del/${row.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        this.$message.error(e.error);
+                    }
+                });
+        },
+        audit(row, status, remark) {
+            this.$set(row, 'loading', true);
+
+            this.$confirm('确认此承办单位同意上报?', '提示', {
+                confirmButtonText: '同意上报',
+                cancelButtonText: '取消',
+                type: 'warning'
+            })
+                .then(() => {
+                    this.$http
+                        .post('/rate/audit', {
+                            id: row.id,
+                            status: status,
+                            score: 0,
+                            remark: remark
+                        })
+                        .then(res => {
+                            this.$set(row, 'loading', false);
+                            this.$message.success('上报成功');
+                            this.getData();
+                        })
+                        .catch(e => {
+                            console.log(e);
+                            this.$set(row, 'loading', false);
+                            this.$message.error(e.error);
+                        });
+                })
+                .catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消'
+                    });
+                    this.$set(row, 'loading', false);
+                });
+        },
+        dismiss(row) {
+            // this.$prompt('请输入驳回缘由', '提示', {
+            //     confirmButtonText: '确定',
+            //     cancelButtonText: '取消'
+            // })
+            //     .then(({ value }) => {
+            //         this.audit(row, 'FIRST_REVIEW_DENY', value);
+            //     })
+            //     .catch(() => {
+            //         this.$message({
+            //             type: 'info',
+            //             message: '取消输入'
+            //         });
+            //     });
+            this.dialogDismiss = true;
+            this.form = row;
+        },
+        saveDismiss() {
+            this.audit(this.form, 'FIRST_REVIEW_DENY', this.reason);
+            this.form = '';
+            this.reason = '';
+            this.dialogDismiss = false;
+        },
+        supervision(id) {
+            this.$router.push({
+                path: '/assignExpert',
+                query: {
+                    id: id
+                }
+            });
+            // this.dialogVisible = true;
+            // this.rateId = id;
+        },
+        addRegulatory(id) {
+            this.$http
+                .post('/rate/addExpert', {
+                    id: this.rateId,
+                    userId: id
+                })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                    this.dialogVisible = false;
+                    this.recordId = '';
+                    this.getData();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        },
+        getAdmin() {
+            let data = this.userInfo.authorities;
+            let display = false;
+            data.forEach(element => {
+                if (element.name === 'ROLE_ADMIN') {
+                    display = true;
+                }
+            });
+            this.display = display;
+            return display;
+        },
+        saveComplete(row) {
+            this.$set(row, 'loading', true);
+            this.$confirm('确认已收到承办单位提交的纸质材料?', '提示', {
+                confirmButtonText: '已收到',
+                cancelButtonText: '暂未收到',
+                type: 'warning'
+            })
+                .then(() => {
+                    this.$http
+                        .post('/rate/paperMaterial', {
+                            id: row.id,
+                            status: 'COLLECT_PAPER_MATERIALS',
+                            remark: '区县管理员已确认收到承办单位提交的纸质材料'
+                        })
+                        .then(res => {
+                            this.$message.success('确认成功');
+                            this.getData();
+                        })
+                        .catch(e => {
+                            console.log(e);
+                            this.$message.error(e.error);
+                        });
+                })
+                .catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消'
+                    });
+                    this.$set(row, 'loading', false);
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.el-link {
+    font-size: 12px;
+}
+</style>

+ 28 - 58
src/main/vue/src/views/organization/RateEdit.vue → src/main/vue/src/views/rate/RateEdit.vue

@@ -125,6 +125,7 @@
                                     :options="artTypes"
                                     :show-all-levels="false"
                                     placeholder="请选择专业"
+                                    :disabled="readonly"
                                 >
                                 </el-cascader>
                             </el-form-item>
@@ -238,7 +239,7 @@
                     </div>
                 </div>
             </div>
-            <el-divider direction="horizontal" content-position="left">初审记录</el-divider>
+            <!-- <el-divider direction="horizontal" content-position="left">初审记录</el-divider>
             <div class="info-content" v-for="(item, index) in rateAudits" :key="index">
                 <div class="info-item" style="margin-bottom: 10px">
                     <div class="name">操作时间</div>
@@ -257,7 +258,7 @@
                         ></el-input>
                     </div>
                 </div>
-            </div>
+            </div> -->
             <el-form-item>
                 <div style="margin-top: 10px">
                     <el-button
@@ -314,10 +315,10 @@ export default {
         }
     },
     created() {
-        if (this.$route.query.rateId) {
-            this.rateId = this.$route.query.rateId;
+        if (this.$route.query.id) {
+            this.rateId = this.$route.query.id;
             this.$http
-                .get('rate/get/' + this.$route.query.rateId)
+                .get('rate/get/' + this.$route.query.id)
                 .then(res => {
                     this.formData = res;
                     if (res.status != 'FIRST_REVIEW_PENDING' || res.submit) {
@@ -334,7 +335,7 @@ export default {
                     this.$http
                         .post(
                             '/collaborate/all',
-                            { size: 100, query: { rateId: this.$route.query.rateId } },
+                            { size: 100, query: { rateId: this.$route.query.id } },
                             { body: 'json' }
                         )
                         .then(res => {
@@ -352,8 +353,6 @@ export default {
             this.formData.ownerEmail = this.organization.ownerEmail;
             this.formData.ownerPhone = this.organization.ownerPhone;
             this.formData.district = this.organization.district;
-            // this.formData.district1 = this.organization.district1;
-            // this.formData.privacyPolicy.push(this.organization.businessLicense);
             this.formData.organizationId = this.organization.id;
         }
         this.$http
@@ -432,55 +431,13 @@ export default {
                 district: [{ required: true, message: '请选择注册地址', trigger: 'blur' }],
                 introduction: [{ required: true, message: '请输入单位概况', trigger: 'blur' }],
                 undertakeExamination: [{ required: true, message: '请选择是否承办过考级活动', trigger: 'blur' }],
-                privacyPolicy: [
-                    {
-                        required: true,
-                        message: '请上传法人资格',
-                        trigger: 'blur'
-                    }
-                ],
-                business: [
-                    {
-                        required: true,
-                        message: '请上传业务内容',
-                        trigger: 'blur'
-                    }
-                ],
-                credits: [
-                    {
-                        required: true,
-                        message: '请上传社会信誉',
-                        trigger: 'blur'
-                    }
-                ],
-                fire: [
-                    {
-                        required: true,
-                        message: '请上传消防安全',
-                        trigger: 'blur'
-                    }
-                ],
-                hygiene: [
-                    {
-                        required: true,
-                        message: '请上传卫生防疫',
-                        trigger: 'blur'
-                    }
-                ],
-                finance: [
-                    {
-                        required: true,
-                        message: '请上传财务报表',
-                        trigger: 'blur'
-                    }
-                ],
-                property: [
-                    {
-                        required: true,
-                        message: '请上传房产证明',
-                        trigger: 'blur'
-                    }
-                ]
+                privacyPolicy: [{ required: true, message: '请上传法人资格', trigger: 'blur' }],
+                business: [{ required: true, message: '请上传业务内容', trigger: 'blur' }],
+                credits: [{ required: true, message: '请上传社会信誉', trigger: 'blur' }],
+                fire: [{ required: true, message: '请上传消防安全', trigger: 'blur' }],
+                hygiene: [{ required: true, message: '请上传卫生防疫', trigger: 'blur' }],
+                finance: [{ required: true, message: '请上传财务报表', trigger: 'blur' }],
+                property: [{ required: true, message: '请上传房产证明', trigger: 'blur' }]
             },
             collaborates: [],
             artTypes: [],
@@ -571,6 +528,16 @@ export default {
                         this.$http.post('/collaborate/batchSave', {
                             collaborates: this.saveOtherJson
                         });
+                        if (isSubmit) {
+                            let audit = {
+                                rateId: res.id,
+                                remark: '承办单位已提交申请',
+                                status: 'FIRST_REVIEW_PENDING'
+                            };
+                            this.$http.post('/rateAudit/save', audit, {
+                                body: 'json'
+                            });
+                        }
                     });
                     this.$message.success('成功');
                     this.$router.go(-1);
@@ -615,7 +582,7 @@ export default {
 </script>
 <style lang="less" scoped>
 .edit-view {
-    padding-left: 20%;
+    padding-left: 10%;
     .add-con {
         background-color: #f7f7f7;
         width: 100%;
@@ -723,4 +690,7 @@ export default {
     -webkit-box-sizing: border-box;
     box-sizing: border-box;
 }
+/deep/ .el-input.is-disabled .el-input__inner {
+    background-color: #ffffff;
+}
 </style>

+ 0 - 0
src/main/vue/src/views/organization/RateEdit1.vue → src/main/vue/src/views/rate/RateEdit1.vue


+ 0 - 0
src/main/vue/src/views/RateExpertList.vue → src/main/vue/src/views/rate/RateExpertList.vue


+ 0 - 0
src/main/vue/src/views/RateGrade.vue → src/main/vue/src/views/rate/RateGrade.vue


+ 77 - 51
src/main/vue/src/views/RateList.vue → src/main/vue/src/views/rate/RateList.vue

@@ -39,8 +39,8 @@
                 v-model="grade"
                 placeholder="请选择的等级"
                 class="filter-item"
-                clearable
                 multiple
+                clearable
                 @change="getData"
             >
                 <el-option
@@ -69,7 +69,6 @@
             <el-table-column prop="year" label="年度" min-width="60"> </el-table-column>
             <el-table-column prop="gradingOrganization" label="考级机构" min-width="100"> </el-table-column>
             <el-table-column prop="status1" label="状态" min-width="100"> </el-table-column>
-            <!-- <el-table-column label="考级机构"></el-table-column> -->
             <el-table-column prop="score" label="分数">
                 <template slot-scope="{ row }">
                     <span v-if="row.score">{{ row.score }}</span>
@@ -86,7 +85,7 @@
             </el-table-column>
             <el-table-column label="操作" align="right" fixed="right" min-width="200">
                 <template slot-scope="{ row }">
-                    <el-button
+                    <!-- <el-button
                         v-if="row.status === 'FIRST_REVIEW_PENDING'"
                         :loading="row.loading"
                         @click="audit(row, 'ASSIGN_EXPERT', '通过')"
@@ -105,20 +104,17 @@
                         plain
                     >
                         退回
-                    </el-button>
-                    <!-- <el-button v-if="row.status === 'SUBMIT_GRADE'" @click="openScore(row)" type="warning" plain
-                        >填写分数</el-button
-                    > -->
+                    </el-button> -->
                     <el-button
                         @click="supervision(row.id)"
                         type="success"
                         size="mini"
                         plain
-                        v-if="(row.status === 'ASSIGN_EXPERT') & display"
+                        v-if="row.status === 'ASSIGN_EXPERT'"
                         >分配专家组</el-button
                     >
                     <el-button
-                        v-if="row.status === 'SUBMIT_PAPER_MATERIALS'"
+                        v-if="row.status === 'COLLECT_PAPER_MATERIALS'"
                         type="success"
                         plain
                         size="mini"
@@ -126,7 +122,6 @@
                         >收取纸质材料</el-button
                     >
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>审核材料</el-button>
-                    <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
             </el-table-column>
         </el-table>
@@ -216,11 +211,10 @@
 <script>
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
-import rateStatus from '@/mixins/rateStatus';
 
 export default {
     name: 'RateList',
-    mixins: [pageableTable, rateStatus],
+    mixins: [pageableTable],
     data() {
         return {
             multipleMode: false,
@@ -246,7 +240,15 @@ export default {
             dismissReason: ['资料不全', '缺少附件', '无资格'],
             form: {},
             grade: '',
-            status: ''
+            status: [],
+            statusOptions: [
+                { label: '已审核上报', value: 'ASSIGN_EXPERT' },
+                { label: '待专家组考察', value: 'REVIEW_PENDING' },
+                { label: '待最终评审', value: 'SUBMIT_GRADE' },
+                { label: '待承办单位提交材料', value: 'SUBMIT_PAPER_MATERIALS' },
+                { label: '待区县提交材料', value: 'COLLECT_PAPER_MATERIALS' },
+                { label: '完成', value: 'COMPLETE' }
+            ]
         };
     },
     computed: {
@@ -275,29 +277,25 @@ export default {
             return '';
         },
         beforeGetData() {
-            // return {
-            //     search: this.search,
-            //     sort: 'createdAt,desc',
-            //     query: {
-            //         submit: true
-            //     }
-            // };
-            let data = { query: { submit: true } };
+            let data = {
+                query: {
+                    submit: true,
+                    status: [
+                        'ASSIGN_EXPERT',
+                        'REVIEW_PENDING',
+                        'SUBMIT_GRADE',
+                        'SUBMIT_PAPER_MATERIALS',
+                        'COLLECT_PAPER_MATERIALS',
+                        'COMPLETE'
+                    ]
+                }
+            };
+
             if (this.search) {
                 data.search = this.search;
             }
-            if (!this.getAdmin()) {
-                data.query.district = this.userInfo.district;
-            } else {
-                data.query.status = [
-                    'ASSIGN_EXPERT',
-                    'REVIEW_PENDING',
-                    'SUBMIT_GRADE',
-                    'SUBMIT_PAPER_MATERIALS',
-                    'COMPLETE'
-                ];
-            }
-            if (this.status) {
+
+            if (this.status.length > 0) {
                 data.query.status = this.status;
             }
             if (this.grade) {
@@ -333,10 +331,27 @@ export default {
         },
         download() {
             this.downloading = true;
+            let params = { size: 1000, query: { submit: true } };
+            if (this.grade.length > 0) {
+                params.query.grade = this.grade;
+            }
+
+            if (this.status) {
+                params.query.status = this.status;
+            } else {
+                params.query.status = [
+                    'ASSIGN_EXPERT',
+                    'REVIEW_PENDING',
+                    'SUBMIT_GRADE',
+                    'SUBMIT_PAPER_MATERIALS',
+                    'COLLECT_PAPER_MATERIALS',
+                    'COMPLETE'
+                ];
+            }
+
             this.$axios
-                .get('/rate/excel', {
-                    responseType: 'blob',
-                    params: { size: 10000 }
+                .post('/rate/excel', params, {
+                    responseType: 'blob'
                 })
                 .then(res => {
                     console.log(res);
@@ -503,22 +518,33 @@ export default {
                 });
         },
         saveComplete(row) {
-            row.status = 'COMPLETE';
-            this.$http
-                .post(
-                    '/rate/save',
-                    {
-                        ...row
-                    },
-                    { body: 'json' }
-                )
-                .then(res => {
-                    this.$message.success('OK');
-                    this.getData();
+            this.$confirm('确认已收到区县管理员提交的材料?', '提示', {
+                confirmButtonText: '已收到',
+                cancelButtonText: '暂未收到',
+                type: 'warning'
+            })
+                .then(() => {
+                    this.$http
+                        .post('/rate/paperMaterial', {
+                            id: row.id,
+                            status: 'COMPLETE',
+                            remark: '市政管理员已确认收到区县管理员提交的材料'
+                        })
+                        .then(res => {
+                            this.$message.success('确认成功');
+                            this.getData();
+                        })
+                        .catch(e => {
+                            console.log(e);
+                            this.$message.error(e.error);
+                        });
                 })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
+                .catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消'
+                    });
+                    this.$set(row, 'loading', false);
                 });
         }
     }

+ 21 - 21
src/main/vue/src/views/organization/RateOrganizerList.vue → src/main/vue/src/views/rate/RateOrganizerList.vue

@@ -148,9 +148,9 @@ export default {
         },
         editRow(row) {
             this.$router.push({
-                path: '/rateEdit',
+                path: '/organization1',
                 query: {
-                    rateId: row.id
+                    id: row.id
                 }
             });
         },
@@ -204,26 +204,8 @@ export default {
         },
         word(row) {
             this.downloading = true;
-            this.$axios
-                .get('/rate/export/' + row.id, { responseType: 'blob' })
-                .then(res => {
-                    console.log(res);
-                    this.downloading = false;
-                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
-                    const link = document.createElement('a');
-                    link.href = downloadUrl;
-                    link.setAttribute('download', '申请材料.pdf');
-                    document.body.appendChild(link);
-                    link.click();
-                    link.remove();
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.downloading = false;
-                    this.$message.error(e.error);
-                });
             // this.$axios
-            //     .get('/rate/test', { responseType: 'blob' })
+            //     .get('/rate/exportPdf/' + row.id, { responseType: 'blob' })
             //     .then(res => {
             //         console.log(res);
             //         this.downloading = false;
@@ -240,6 +222,24 @@ export default {
             //         this.downloading = false;
             //         this.$message.error(e.error);
             //     });
+            this.$axios
+                .get('/rate/export/' + row.id)
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute('download', '申请材料.doc');
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
         }
     }
 };

+ 0 - 0
src/main/vue/src/views/RecordDistrictList.vue → src/main/vue/src/views/record/RecordDistrictList.vue


+ 0 - 0
src/main/vue/src/views/RecordDistrictList2.vue → src/main/vue/src/views/record/RecordDistrictList2.vue


+ 0 - 0
src/main/vue/src/views/RecordEdit.vue → src/main/vue/src/views/record/RecordEdit.vue


+ 0 - 0
src/main/vue/src/views/RecordList.vue → src/main/vue/src/views/record/RecordList.vue


+ 0 - 0
src/main/vue/src/views/RecordList2.vue → src/main/vue/src/views/record/RecordList2.vue


+ 0 - 0
src/main/vue/src/views/ExpertEdit.vue → src/main/vue/src/views/user/ExpertEdit.vue


+ 0 - 0
src/main/vue/src/views/ExpertList.vue → src/main/vue/src/views/user/ExpertList.vue


+ 0 - 0
src/main/vue/src/views/UserEdit.vue → src/main/vue/src/views/user/UserEdit.vue


+ 0 - 0
src/main/vue/src/views/UserList.vue → src/main/vue/src/views/user/UserList.vue