licailing 4 yıl önce
ebeveyn
işleme
4aabbe3c59

+ 5 - 20
src/main/java/com/izouma/wenlvju/domain/Performance.java → src/main/java/com/izouma/wenlvju/domain/performance/Performance.java

@@ -1,18 +1,18 @@
-package com.izouma.wenlvju.domain;
+package com.izouma.wenlvju.domain.performance;
 
 import com.izouma.wenlvju.converter.PerformanceEnquiryListConverter;
+import com.izouma.wenlvju.domain.BaseEntity;
 import com.izouma.wenlvju.dto.PerformanceEnquiry;
-import com.izouma.wenlvju.enums.PerformanceStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-
-import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Convert;
+import javax.persistence.Entity;
 import java.time.LocalDate;
-import java.time.LocalTime;
 import java.util.List;
 
 @Data
@@ -25,24 +25,9 @@ public class Performance extends BaseEntity {
     @ApiModelProperty(value = "名称")
     private String name;
 
-//    @ApiModelProperty(value = "报名时间")
-//    private LocalDate startDate;
-
     @ApiModelProperty(value = "报名截止时间")
     private LocalDate endDate;
 
-    @ApiModelProperty(value = "活动时间")
-    private LocalDate eventStartDate;
-
-
-    @ApiModelProperty(value = "地点")
-    private String address;
-
-    @ApiModelProperty(value = "状态")
-    @Enumerated(EnumType.STRING)
-    private PerformanceStatus status;
-
-
     @Column(columnDefinition = "TEXT")
     @Convert(converter = PerformanceEnquiryListConverter.class)
     @ApiModelProperty(value = "咨询电话")

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

@@ -1,5 +1,6 @@
 package com.izouma.wenlvju.domain.regulation;
 
+import com.izouma.wenlvju.annotations.Searchable;
 import com.izouma.wenlvju.converter.StringArrayConverter;
 import com.izouma.wenlvju.domain.BaseEntity;
 import com.izouma.wenlvju.enums.UnitType;
@@ -40,6 +41,7 @@ public class Complain extends BaseEntity {
     @ApiModelProperty(value = "联系方式")
     private String phone;
 
+    @Searchable
     @ApiModelProperty(value = "投诉目的")
     private String title;
 

+ 0 - 12
src/main/java/com/izouma/wenlvju/enums/PerformanceStatus.java

@@ -1,12 +0,0 @@
-package com.izouma.wenlvju.enums;
-
-public enum PerformanceStatus {
-    /*
-    报名中
-     */
-    APPLY,
-    /*
-    已结束
-     */
-    END
-}

+ 2 - 2
src/main/java/com/izouma/wenlvju/repo/PerformanceRepo.java → src/main/java/com/izouma/wenlvju/repo/performance/PerformanceRepo.java

@@ -1,6 +1,6 @@
-package com.izouma.wenlvju.repo;
+package com.izouma.wenlvju.repo.performance;
 
-import com.izouma.wenlvju.domain.Performance;
+import com.izouma.wenlvju.domain.performance.Performance;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;

+ 2 - 1
src/main/java/com/izouma/wenlvju/service/PerformanceApplyService.java

@@ -4,11 +4,13 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.izouma.wenlvju.domain.*;
+import com.izouma.wenlvju.domain.performance.Performance;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.enums.ApplyStatus;
 import com.izouma.wenlvju.enums.AuthorityName;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.*;
+import com.izouma.wenlvju.repo.performance.PerformanceRepo;
 import com.izouma.wenlvju.security.Authority;
 import com.izouma.wenlvju.security.JwtTokenUtil;
 import com.izouma.wenlvju.security.JwtUserFactory;
@@ -20,7 +22,6 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.util.*;
 import java.util.stream.Collectors;
 

+ 3 - 3
src/main/java/com/izouma/wenlvju/service/PerformanceService.java → src/main/java/com/izouma/wenlvju/service/performance/PerformanceService.java

@@ -1,8 +1,8 @@
-package com.izouma.wenlvju.service;
+package com.izouma.wenlvju.service.performance;
 
-import com.izouma.wenlvju.domain.Performance;
+import com.izouma.wenlvju.domain.performance.Performance;
 import com.izouma.wenlvju.dto.PageQuery;
-import com.izouma.wenlvju.repo.PerformanceRepo;
+import com.izouma.wenlvju.repo.performance.PerformanceRepo;
 import com.izouma.wenlvju.utils.JpaUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;

+ 5 - 4
src/main/java/com/izouma/wenlvju/web/PerformanceController.java → src/main/java/com/izouma/wenlvju/web/performance/PerformanceController.java

@@ -1,13 +1,14 @@
-package com.izouma.wenlvju.web;
+package com.izouma.wenlvju.web.performance;
 
-import com.izouma.wenlvju.domain.Performance;
+import com.izouma.wenlvju.domain.performance.Performance;
 import com.izouma.wenlvju.repo.PerformanceApplyRepo;
-import com.izouma.wenlvju.service.PerformanceService;
+import com.izouma.wenlvju.service.performance.PerformanceService;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
-import com.izouma.wenlvju.repo.PerformanceRepo;
+import com.izouma.wenlvju.repo.performance.PerformanceRepo;
 import com.izouma.wenlvju.utils.ObjUtils;
 import com.izouma.wenlvju.utils.excel.ExcelUtils;
+import com.izouma.wenlvju.web.BaseController;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;

+ 82 - 15
src/main/vue/src/views/ComplainEdit.vue

@@ -41,11 +41,11 @@
             <el-form-item prop="title" label="投诉目的">
                 <el-input type="textarea" :rows="3" v-model="formData.title"></el-input>
             </el-form-item>
-            <el-form-item prop="nature" label="问题性质">
+            <el-form-item prop="nature" label="问题性质" v-if="formData.id">
                 <el-input v-model="formData.nature"></el-input>
             </el-form-item>
-            <el-form-item prop="unitType" label="涉及的单位">
-                <el-select v-model="formData.unitType" clearable filterable placeholder="请选择">
+            <el-form-item prop="unitType" label="涉及的单位" v-if="formData.id">
+                <el-select v-model="formData.unitType" clearable filterable placeholder="请选择单位类型">
                     <el-option
                         v-for="item in unitTypeOptions"
                         :key="item.value"
@@ -54,26 +54,53 @@
                     >
                     </el-option>
                 </el-select>
-                <el-input v-model="formData.unitName" style="width: 68%"></el-input>
+                <!-- <el-input v-model="formData.unitName" style="width: 68%"></el-input> -->
+                <el-select
+                    v-model="formData.unitName"
+                    clearable
+                    filterable
+                    placeholder="请选择"
+                    style="width: 68%"
+                    v-if="formData.unitType == 'ORGANIZATION'"
+                >
+                    <el-option v-for="item in organizations" :key="item.value" :label="item.label" :value="item.value">
+                    </el-option>
+                </el-select>
+                <el-select
+                    v-model="formData.unitName"
+                    clearable
+                    filterable
+                    placeholder="请选择"
+                    style="width: 68%"
+                    v-if="formData.unitType == 'GRADING_ORGANIZATION'"
+                >
+                    <el-option
+                        v-for="item in gradingOrganizations"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                    >
+                    </el-option>
+                </el-select>
             </el-form-item>
 
-            <el-form-item prop="file" label="图片">
+            <el-form-item prop="file" label="附件" v-if="formData.id">
                 <file-upload v-model="formData.file"></file-upload>
             </el-form-item>
-            <el-divider direction="horizontal" content-position="left">审查情况</el-divider>
-            <el-form-item prop="processing" label="办理情况">
+            <el-divider direction="horizontal" content-position="left" v-if="formData.id">审查情况</el-divider>
+            <el-form-item prop="processing" label="办理情况" v-if="formData.id">
                 <el-input type="textarea" :rows="5" v-model="formData.processing"></el-input>
             </el-form-item>
-            <el-form-item prop="situationIsReal" label="情况属实">
+            <el-form-item prop="situationIsReal" label="情况属实" v-if="formData.id">
                 <el-radio-group v-model="formData.situationIsReal">
                     <el-radio :label="true">是</el-radio>
                     <el-radio :label="false">否</el-radio>
                 </el-radio-group>
             </el-form-item>
-            <el-form-item prop="reviewFile" label="审查附件">
+            <el-form-item prop="reviewFile" label="审查附件" v-if="formData.id">
                 <file-upload v-model="formData.reviewFile"></file-upload>
             </el-form-item>
-            <el-form-item prop="reviewAt" label="审查时间">
+            <el-form-item prop="reviewAt" label="审查时间" v-if="formData.id">
                 <el-date-picker
                     v-model="formData.reviewAt"
                     type="datetime"
@@ -82,14 +109,15 @@
                 >
                 </el-date-picker>
             </el-form-item>
-            <el-form-item prop="finish" label="办结">
+            <!-- <el-form-item prop="finish" label="办结">
                 <el-radio-group v-model="formData.finish">
                     <el-radio :label="true">是</el-radio>
                     <el-radio :label="false">否</el-radio>
                 </el-radio-group>
-            </el-form-item>
+            </el-form-item> -->
             <el-form-item>
-                <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
+                <el-button @click="onSave" :loading="saving" type="primary">提交</el-button>
+                <el-button @click="onSave" :loading="saving" type="success">保存</el-button>
                 <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
                 <el-button @click="$router.go(-1)">取消</el-button>
             </el-form-item>
@@ -111,6 +139,38 @@ export default {
                     this.$message.error(e.error);
                 });
         }
+        this.$http
+            .post('/gradingOrganization/all', { size: 1000 }, { body: 'json' })
+            .then(res => {
+                if (res.content.length > 0) {
+                    res.content.forEach(item => {
+                        this.gradingOrganizations.push({
+                            label: item.name,
+                            value: item.id
+                        });
+                    });
+                }
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
+        this.$http
+            .post('/organization/all', { size: 1000 }, { body: 'json' })
+            .then(res => {
+                if (res.content.length > 0) {
+                    res.content.forEach(item => {
+                        this.organizations.push({
+                            label: item.name,
+                            value: item.id
+                        });
+                    });
+                }
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
     },
     data() {
         return {
@@ -129,7 +189,9 @@ export default {
                 { label: '承办单位', value: 'ORGANIZATION' },
                 { label: '考级机构', value: 'GRADING_ORGANIZATION' },
                 { label: '考点', value: 'EXAMINATION' }
-            ]
+            ],
+            gradingOrganizations: [],
+            organizations: []
         };
     },
     methods: {
@@ -151,7 +213,12 @@ export default {
                 .then(res => {
                     this.saving = false;
                     this.$message.success('成功');
-                    this.$router.go(-1);
+                    // this.$router.go(-1);
+                    this.$router.replace({
+                        query: {
+                            id: res.id
+                        }
+                    });
                 })
                 .catch(e => {
                     console.log(e);

+ 47 - 31
src/main/vue/src/views/ComplainList.vue

@@ -1,17 +1,25 @@
 <template>
     <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
-                @click="download"
-                type="primary"
-                icon="el-icon-download"
-                :loading="downloading"
-                class="filter-item"
-                >导出EXCEL
-            </el-button>
+            <el-form :model="form" inline size="mini">
+                <el-form-item label="标题" style="margin-right: 50px">
+                    <el-input placeholder="输入标题" v-model="search" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="办理情况">
+                    <el-select v-model="situationIsReal" clearable placeholder="请选择">
+                        <el-option :value="true" label="属实"></el-option>
+                        <el-option :value="false" label="不属实"></el-option>
+                    </el-select>
+                </el-form-item>
+                <br />
+                <el-form-item>
+                    <el-button @click="getData" type="primary" icon="el-icon-search">搜索 </el-button>
+                    <el-button @click="addRow" type="primary" icon="el-icon-plus">添加 </el-button>
+                    <!-- <el-button @click="download" type="primary" icon="el-icon-download" :loading="downloading"
+                        >导出EXCEL
+                    </el-button> -->
+                </el-form-item>
+            </el-form>
         </div>
         <el-table
             :data="tableData"
@@ -24,34 +32,35 @@
             :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="source" label="来源渠道"> </el-table-column>
+            <el-table-column prop="id" label="ID" width="60"> </el-table-column>
+            <el-table-column prop="title" label="标题"> </el-table-column>
             <el-table-column prop="complainAt" label="来电时间"> </el-table-column>
-            <el-table-column prop="sex" label="性别"> </el-table-column>
+            <el-table-column prop="name" label="联系人"> </el-table-column>
+            <!-- <el-table-column prop="sex" label="性别"> </el-table-column> -->
             <el-table-column prop="phone" label="联系方式"> </el-table-column>
-            <el-table-column prop="title" label="投诉目的"> </el-table-column>
-            <el-table-column prop="content" label="投诉内容"> </el-table-column>
-            <el-table-column prop="nature" label="问题性质"> </el-table-column>
-            <el-table-column prop="unitType" label="单位类型" :formatter="unitTypeFormatter"> </el-table-column>
-            <el-table-column prop="unitName" label="单位名称"> </el-table-column>
-            <el-table-column prop="file" label="图片"> </el-table-column>
-            <el-table-column prop="processing" label="办理情况"> </el-table-column>
-            <el-table-column prop="situationIsReal" label="情况属实">
+            <el-table-column prop="finish" label="状态">
                 <template slot-scope="{ row }">
-                    <el-tag :type="row.situationIsReal ? '' : 'info'">{{ row.situationIsReal }}</el-tag>
+                    <span v-if="row.finish">办结</span>
+                    <span v-else>未办结</span>
                 </template>
             </el-table-column>
-            <el-table-column prop="reviewFile" label="审查附件"> </el-table-column>
-            <el-table-column prop="reviewAt" label="审查时间"> </el-table-column>
-            <el-table-column prop="finish" label="办结">
+            <el-table-column prop="situationIsReal" label="办理情况">
                 <template slot-scope="{ row }">
-                    <el-tag :type="row.finish ? '' : 'info'">{{ row.finish }}</el-tag>
+                    <span v-if="row.situationIsReal == ''">暂无</span>
+                    <span v-if="row.situationIsReal">属实</span>
+                    <span v-else>不属实</span>
                 </template>
             </el-table-column>
+            <!-- <el-table-column prop="nature" label="问题性质"> </el-table-column> -->
+            <!-- <el-table-column prop="unitType" label="单位类型" :formatter="unitTypeFormatter"> </el-table-column> -->
+            <!-- <el-table-column prop="unitName" label="单位名称"> </el-table-column> -->
+            <!-- <el-table-column prop="file" label="附件"> </el-table-column> -->
+            <!-- <el-table-column prop="reviewAt" label="审查时间"> </el-table-column> -->
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
-                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</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>
@@ -95,7 +104,8 @@ export default {
                 { label: '承办单位', value: 'ORGANIZATION' },
                 { label: '考级机构', value: 'GRADING_ORGANIZATION' },
                 { label: '考点', value: 'EXAMINATION' }
-            ]
+            ],
+            situationIsReal: ''
         };
     },
     computed: {
@@ -112,7 +122,13 @@ export default {
             return '';
         },
         beforeGetData() {
-            return { search: this.search };
+            return {
+                sort: 'createdAt,desc',
+                search: this.search,
+                query: {
+                    situationIsReal: this.situationIsReal
+                }
+            };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;

+ 1 - 3
src/main/vue/src/views/PerformanceList.vue

@@ -28,9 +28,7 @@
             <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 label="报名时间" show-overflow-tooltip min-width="100">
-                <template slot-scope="{ row }"> {{ row.startDate }} 至 {{ row.endDate }} </template>
-            </el-table-column>
+            <el-table-column label="报名时间" show-overflow-tooltip min-width="100"> </el-table-column>
             <el-table-column prop="eventStartDate" label="活动时间"></el-table-column>;
             <el-table-column prop="address" label="地点"> </el-table-column>
             <el-table-column prop="status" label="状态" width="80">