licailing 5 лет назад
Родитель
Сommit
fcee959513

+ 2 - 0
src/main/java/com/izouma/wenlvju/domain/Rate.java

@@ -1,5 +1,6 @@
 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;
@@ -28,6 +29,7 @@ import java.util.Map;
 @Where(clause = "del = 0")
 @ApiModel(value = "等级评定")
 public class Rate extends BaseEntity {
+    @Searchable
     @ApiModelProperty(value = "承办单位名称")
     private String name;
 

+ 101 - 0
src/main/java/com/izouma/wenlvju/dto/RateDTO.java

@@ -0,0 +1,101 @@
+package com.izouma.wenlvju.dto;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.izouma.wenlvju.domain.Organization;
+import com.izouma.wenlvju.domain.Rate;
+import com.izouma.wenlvju.enums.RateStatus;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel(value = "Rate")
+public class RateDTO {
+    @ExcelIgnore
+    private Long id;
+
+    @ExcelProperty(value = "编号")
+    private String code;
+
+    @ExcelProperty(value = "承办单位名称")
+    @ApiModelProperty(value = "承办单位名称")
+    private String name;
+
+    @ExcelProperty(value = "申请时间")
+    private LocalDateTime createdAt;
+
+    @ExcelIgnore
+    private String district;
+
+    @ExcelIgnore
+    private RateStatus status;
+
+    @ExcelProperty(value = "审核状态")
+    private String status1;
+
+    @ExcelIgnore
+    @ApiModelProperty(value = "单位概况")
+    private String introduction;
+
+    @ExcelIgnore
+    @ApiModelProperty(value = "是否提交")
+    private boolean submit;
+
+//    @ApiModelProperty(value = "承办单位")
+//    private String organizer;
+
+    @ExcelProperty(value = "地址")
+    private String address;
+
+
+    @ExcelProperty(value = "年度")
+    @ApiModelProperty(value = "年度")
+    private String year;
+
+    @ExcelProperty(value = "考级机构名称")
+    @ApiModelProperty(value = "考级机构名称")
+    private String gradingOrganization;
+
+    @ExcelIgnore
+    @ApiModelProperty(value = "申请时间")
+    private LocalDateTime applyTime;
+
+    @ExcelProperty(value = "总分")
+    @ApiModelProperty(value = "分数")
+    private int score;
+
+    @ExcelProperty(value = "等级")
+    @ApiModelProperty(value = "等级")
+    private String grade;
+
+    public RateDTO(Rate rate, Organization organization, String gradingOrganization) {
+        BeanUtil.copyProperties(rate, this);
+        if (ObjectUtil.isNotEmpty(organization)) {
+            this.gradingOrganization = gradingOrganization;
+            this.code = organization.getCode();
+            String address = "南京市" + organization.getDistrict();
+            if (StrUtil.isNotBlank(organization.getAddress())) {
+                address += organization.getAddress();
+            }
+            rate.setAddress(address);
+        }
+        if (ObjectUtil.isNotNull(rate.getGrade())) {
+            this.grade = rate.getGrade().getDesc();
+        }
+        if (ObjectUtil.isNotNull(rate.getStatus())){
+            this.status1 = rate.getStatus().getDesc();
+        }
+    }
+}

+ 21 - 11
src/main/java/com/izouma/wenlvju/enums/RateStatus.java

@@ -4,42 +4,52 @@ public enum RateStatus {
     /*
     草稿
      */
-    DRAFT,
+    DRAFT("草稿"),
     /*
     等待初审
      */
-    FIRST_REVIEW_PENDING,
+    FIRST_REVIEW_PENDING("等待初审"),
     /*
     初审不通过
      */
-    FIRST_REVIEW_DENY,
+    FIRST_REVIEW_DENY("初审驳回"),
     /*
     待分配专家组
      */
-    ASSIGN_EXPERT,
+    ASSIGN_EXPERT("待分配专家组"),
     /*
     确定审查时间
      */
-    REVIEW_TIME,
+//    REVIEW_TIME,
     /*
     待专家组考察(分配专家组)
      */
-    REVIEW_PENDING,
+    REVIEW_PENDING("待专家组考察"),
     /*
     最终评审
      */
-    SUBMIT_GRADE,
-    EXPERT_DENY,
+    SUBMIT_GRADE("最终评审"),
+//    EXPERT_DENY(""),
     /*
     待提交纸质材料
      */
-    SUBMIT_PAPER_MATERIALS,
+    SUBMIT_PAPER_MATERIALS("待提交纸质材料"),
     /*
     取消
      */
-    CANCEL,
+    CANCEL("取消"),
     /*
     完成
      */
-    COMPLETE
+    COMPLETE("完成");
+
+    private final String desc;
+
+    public String getDesc() {
+        return desc;
+    }
+
+    RateStatus(String desc) {
+        this.desc = desc;
+    }
 }

+ 0 - 5
src/main/java/com/izouma/wenlvju/service/RateService.java

@@ -21,12 +21,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.nio.file.Paths;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;

+ 16 - 17
src/main/java/com/izouma/wenlvju/web/RateController.java

@@ -3,13 +3,16 @@ package com.izouma.wenlvju.web;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.izouma.wenlvju.domain.GradingOrganization;
 import com.izouma.wenlvju.domain.Organization;
 import com.izouma.wenlvju.domain.Rate;
 import com.izouma.wenlvju.domain.User;
 import com.izouma.wenlvju.dto.PageQuery;
+import com.izouma.wenlvju.dto.RateDTO;
 import com.izouma.wenlvju.dto.ReviewTime;
 import com.izouma.wenlvju.enums.RateStatus;
 import com.izouma.wenlvju.exception.BusinessException;
+import com.izouma.wenlvju.repo.GradingOrganizationRepo;
 import com.izouma.wenlvju.repo.OrganizationRepo;
 import com.izouma.wenlvju.repo.RateRepo;
 import com.izouma.wenlvju.repo.UserRepo;
@@ -34,11 +37,12 @@ import java.util.stream.Collectors;
 @RequestMapping("/rate")
 @AllArgsConstructor
 public class RateController extends BaseController {
-    private RateService         rateService;
-    private RateRepo            rateRepo;
-    private OrganizationRepo    organizationRepo;
-    private OrganizationService organizationService;
-    private UserRepo            userRepo;
+    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")
@@ -74,23 +78,18 @@ public class RateController extends BaseController {
     }
 
     @PostMapping("/all2")
-    public Page<Rate> all2(@RequestBody PageQuery pageQuery) {
+    public Page<RateDTO> all2(@RequestBody PageQuery pageQuery) {
         pageQuery.setSort("createdAt,desc");
         Map<Long, Organization> organizationMap = organizationRepo.findAll()
                 .stream()
                 .collect(Collectors.toMap(Organization::getId, organization -> organization));
+        Map<Long, String> gradeMap = gradingOrganizationRepo.findAll()
+                .stream()
+                .collect(Collectors.toMap(GradingOrganization::getId, GradingOrganization::getName));
+
         return rateService.all(pageQuery).map(rate -> {
             Organization organization = organizationMap.get(rate.getOrganizationId());
-            if (ObjectUtil.isNotEmpty(organization)) {
-                rate.setOrganizer(organization.getName());
-                String address = "南京市" + organization.getDistrict();
-                if (StrUtil.isNotBlank(organization.getAddress())) {
-                    address += organization.getAddress();
-                }
-                rate.setAddress(address);
-            }
-
-            return rate;
+            return new RateDTO(rate, organization, gradeMap.get(organization.getGradingOrganizationId()));
         });
     }
 
@@ -119,7 +118,7 @@ public class RateController extends BaseController {
     @GetMapping("/excel")
     @ResponseBody
     public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<Rate> data = all(pageQuery).getContent();
+        List<RateDTO> data = all2(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
 

+ 0 - 1
src/main/vue/src/mixins/rateStatus.js

@@ -6,7 +6,6 @@ export default {
                 { label: '等待初审', value: 'FIRST_REVIEW_PENDING' },
                 { label: '初审驳回', value: 'FIRST_REVIEW_DENY' },
                 { label: '已上报', value: 'ASSIGN_EXPERT' },
-                { label: '待确定审查时间', value: 'REVIEW_TIME' },
                 { label: '待专家组考察', value: 'REVIEW_PENDING' },
                 { label: '待最终评审', value: 'SUBMIT_GRADE' },
                 { label: '待提交纸质材料', value: 'SUBMIT_PAPER_MATERIALS' },

+ 31 - 13
src/main/vue/src/views/AssignExpert.vue

@@ -22,11 +22,16 @@
                     v-model="formData.introduction"
                 ></el-input>
             </el-form-item>
+            <el-divider direction="horizontal" content-position="left">承办过的考级活动</el-divider>
             <div class="add-con" v-for="(item, index) in collaborates" :key="index">
-                <div v-if="!item.del" style="padding: 10px 0">
+                <div v-if="!item.del" style="padding: 3px 0 0 0">
                     <div class="parameters1">
                         <el-form-item prop="gradingOrganizationId" label="考级机构">
-                            <el-select v-model="item.gradingOrganizationId" placeholder="所属考级机构">
+                            <el-select
+                                v-model="item.gradingOrganizationId"
+                                placeholder="所属考级机构"
+                                style="width: 210px"
+                            >
                                 <el-option
                                     v-for="item in grading"
                                     :key="item.value"
@@ -38,7 +43,7 @@
                         </el-form-item>
                         <el-form-item prop="artTypeId" label="代理专业">
                             <el-cascader
-                                style="width: 100%"
+                                style="width: 250px"
                                 v-model="item.artTypeId"
                                 :props="optionProps"
                                 :options="artTypes"
@@ -86,6 +91,7 @@
                         <el-select
                             v-model="employeeId"
                             style="width: 82.5%; margin-right: 10px;"
+                            multiple
                             filterable
                             clearable
                             placeholder="请选择专家组员"
@@ -270,13 +276,18 @@ export default {
             }
         },
         chooseEmp() {
-            if (this.employeeIds.indexOf(this.employeeId) < 0 && this.employeeId != '') {
-                this.emps.push(
-                    this.users.find(item => {
-                        return item.id === this.employeeId;
-                    })
-                );
-                this.employeeIds.push(this.employeeId);
+            if (this.employeeId.length > 0) {
+                this.employeeId.forEach(index => {
+                    console.log(index);
+                    if (this.employeeIds.indexOf(index) < 0) {
+                        this.emps.push(
+                            this.users.find(item => {
+                                return item.id === index;
+                            })
+                        );
+                        this.employeeIds.push(index);
+                    }
+                });
                 this.employeeId = '';
             }
         },
@@ -301,9 +312,9 @@ export default {
 .edit-view {
     // padding-left: 20%;
     .add-con {
-        background-color: #f7f7f7;
+        // background-color: #f7f7f7;
         width: 100%;
-        margin-bottom: 10px;
+        // margin-bottom: 10px;
     }
 }
 .subform {
@@ -316,6 +327,13 @@ export default {
 .parameters1 {
     display: flex;
     align-items: center;
-    margin-top: 23px;
+    // margin-top: 23px;
+}
+.el-divider__text {
+    left: 0;
+    font-size: 18px;
+}
+.el-divider--horizontal {
+    margin: 32px 0;
 }
 </style>

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

@@ -522,7 +522,7 @@ export default {
     // margin-top: 10px;
 }
 .el-divider__text {
-    font-size: 20px;
+    font-size: 18px;
     font-weight: 500;
 }
 

+ 42 - 10
src/main/vue/src/views/RateList.vue

@@ -2,16 +2,39 @@
     <div class="list-view">
         <div class="filters-container">
             <!-- <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
-            <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button> -->
-            <!-- <el-button @click="addRow" type="primary" icon="el-icon-plus" class="filter-item">创建申请 </el-button> -->
-            <!-- <el-button
+             <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-button>
+            <el-select
+                style="width: 220px"
+                v-model="status"
+                placeholder="请选择的状态"
+                class="filter-item"
+                multiple
+                clearable
+            >
+                <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>
+                <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"
@@ -25,10 +48,11 @@
         >
             <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="organizer" label="承办单位"> </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="status" label="状态" :formatter="statusFormatter" min-width="100"> </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 }">
@@ -38,9 +62,9 @@
             </el-table-column>
             <el-table-column prop="grade" label="等级">
                 <template slot-scope="{ row }">
-                    <span v-if="row.grade == 'EXCELLENT'"><el-tag type="success">优秀</el-tag></span>
-                    <span v-else-if="row.grade == 'ELIGIBLE'"><el-tag type="warning">合格</el-tag></span>
-                    <span v-else-if="row.grade == 'NOT_ELIGIBLE'"><el-tag type="danger">不合格</el-tag></span>
+                    <span v-if="row.grade == '优秀'"><el-tag type="success">优秀</el-tag></span>
+                    <span v-else-if="row.grade == '合格'"><el-tag type="warning">合格</el-tag></span>
+                    <span v-else-if="row.grade == '不合格'"><el-tag type="danger">不合格</el-tag></span>
                     <span v-else><el-tag type="info">暂无</el-tag></span>
                 </template>
             </el-table-column>
@@ -204,7 +228,9 @@ export default {
             dialogDismiss: false,
             reason: '',
             dismissReason: ['资料不全', '缺少附件', '无资格'],
-            form: {}
+            form: {},
+            grade: '',
+            status: ''
         };
     },
     created() {
@@ -250,6 +276,12 @@ export default {
             if (!this.display) {
                 data.query.district = this.userInfo.district;
             }
+            if (this.status) {
+                data.query.status = this.status;
+            }
+            if (this.grade) {
+                data.query.grade = this.grade;
+            }
             return data;
         },
         toggleMultipleMode(multipleMode) {

+ 6 - 3
src/main/vue/src/views/organization/Organization.vue

@@ -3,7 +3,7 @@
         <el-tabs v-model="active">
             <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"><GradeList ref="page3"/></el-tab-pane>
+            <el-tab-pane label="评分细则" name="third" :disabled="grade"><GradeList ref="page3"/></el-tab-pane>
         </el-tabs>
     </div>
 </template>
@@ -15,7 +15,6 @@ export default {
     name: 'Organization',
     created() {
         let data = this.$route.query.status;
-        console.log(data != 'SUBMIT_GRADE');
         if (
             data == 'SUBMIT_GRADE' ||
             data == 'REVIEW_PENDING' ||
@@ -24,11 +23,15 @@ export default {
         ) {
             this.status = false;
         }
+        if (data == 'SUBMIT_GRADE' || data == 'COMPLETE') {
+            this.grade = false;
+        }
     },
     data() {
         return {
             active: 'first',
-            status: true
+            status: true,
+            grade: true
         };
     },
     methods: {