licailing 4 ani în urmă
părinte
comite
e6a022d053

+ 27 - 0
src/main/java/com/izouma/wenlvju/domain/Award.java

@@ -0,0 +1,27 @@
+package com.izouma.wenlvju.domain;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Where;
+
+import javax.persistence.Entity;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Entity
+@Where(clause = "del = 0")
+public class Award extends BaseEntity {
+    @ApiModelProperty(value = "奖项名称")
+    private String name;
+
+    @ApiModelProperty(value = "奖项描述")
+    private String description;
+
+    @ApiModelProperty(value = "级别")
+    private int level;
+}

+ 5 - 0
src/main/java/com/izouma/wenlvju/repo/performance/PerformanceScheduleRepo.java

@@ -13,4 +13,9 @@ public interface PerformanceScheduleRepo extends JpaRepository<PerformanceSchedu
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    @Query("update PerformanceSchedule t set t.del = true where t.performanceId = ?1")
+    @Modifying
+    @Transactional
+    void softDeleteByPid(Long performanceId);
 }

+ 12 - 9
src/main/java/com/izouma/wenlvju/web/performance/PerformanceController.java

@@ -2,13 +2,14 @@ package com.izouma.wenlvju.web.performance;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.wenlvju.domain.performance.Performance;
+import com.izouma.wenlvju.domain.performance.PerformanceSchedule;
 import com.izouma.wenlvju.domain.performance.Programme;
-import com.izouma.wenlvju.repo.PerformanceApplyRepo;
-import com.izouma.wenlvju.repo.performance.ProgrammeRepo;
-import com.izouma.wenlvju.service.performance.PerformanceService;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.performance.PerformanceRepo;
+import com.izouma.wenlvju.repo.performance.PerformanceScheduleRepo;
+import com.izouma.wenlvju.repo.performance.ProgrammeRepo;
+import com.izouma.wenlvju.service.performance.PerformanceService;
 import com.izouma.wenlvju.utils.ObjUtils;
 import com.izouma.wenlvju.utils.excel.ExcelUtils;
 import com.izouma.wenlvju.web.BaseController;
@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -28,10 +30,10 @@ import java.util.stream.Collectors;
 @RequestMapping("/performance")
 @AllArgsConstructor
 public class PerformanceController extends BaseController {
-    private final PerformanceService   performanceService;
-    private final PerformanceRepo      performanceRepo;
-    private final PerformanceApplyRepo performanceApplyRepo;
-    private final ProgrammeRepo        programmeRepo;
+    private final PerformanceService      performanceService;
+    private final PerformanceRepo         performanceRepo;
+    private final ProgrammeRepo           programmeRepo;
+    private final PerformanceScheduleRepo performanceScheduleRepo;
 
     @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
@@ -86,7 +88,7 @@ public class PerformanceController extends BaseController {
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
         performanceRepo.softDelete(id);
-        performanceApplyRepo.softDeleteByPerformanceId(id);
+        performanceScheduleRepo.softDeleteByPid(id);
     }
 
     @GetMapping("/excel")
@@ -107,7 +109,8 @@ public class PerformanceController extends BaseController {
     @ApiOperation("获取上一年度")
     @PostMapping("/lastYear")
     public Performance lastYear() {
-        return performanceRepo.findLastYear();
+//        return performanceRepo.findLastYear();
+        return performanceRepo.findByYear(String.valueOf(LocalDate.now().getYear() - 1));
     }
 }
 

+ 5 - 0
src/main/vue/src/mixins/delChild.js

@@ -9,6 +9,11 @@ export default {
                 };
                 return info;
             });
+        },
+        changeAddress(value) {
+            this.addresses = this.addressList.filter(item => {
+                return item.pid == value;
+            });
         }
     }
 };

+ 18 - 7
src/main/vue/src/views/performance/ArrangeJudgeList.vue

@@ -3,7 +3,13 @@
         <div class="filters-container">
             <el-form :model="form" size="mini" ref="form" inline label-width="120px">
                 <el-form-item label="活动名称" prop="performanceId">
-                    <el-select v-model="form.performanceId" filterable placeholder="活动名称" style="width: 300px">
+                    <el-select
+                        v-model="form.performanceId"
+                        filterable
+                        placeholder="活动名称"
+                        style="width: 300px"
+                        @change="changeAddress"
+                    >
                         <el-option
                             v-for="item in performances"
                             :key="item.value"
@@ -35,8 +41,8 @@
                                     <el-option
                                         v-for="(item, index) in addresses"
                                         :key="index"
-                                        :value="item"
-                                        :label="item"
+                                        :value="item.value"
+                                        :label="item.value"
                                     ></el-option>
                                 </el-select>
                             </el-form-item>
@@ -151,10 +157,11 @@
 <script>
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
+import delChild from '@/mixins/delChild';
 
 export default {
     name: 'ArrangeJudgeList',
-    mixins: [pageableTable],
+    mixins: [pageableTable, delChild],
     data() {
         return {
             multipleMode: false,
@@ -177,7 +184,8 @@ export default {
                 { label: '个人', value: 'SINGLE' },
                 { label: '集体', value: 'COLLECTIVE' }
             ],
-            columnKeys: ['date', 'morning', 'address']
+            columnKeys: ['date', 'morning', 'address'],
+            addressList: []
         };
     },
     created() {
@@ -201,7 +209,7 @@ export default {
                             value: item.id
                         });
                     });
-                    this.form.performanceId = res.content[0].id;
+                    // this.form.performanceId = res.content[0].id;
                     this.$http
                         .post(
                             '/performanceSchedule/all',
@@ -211,7 +219,10 @@ export default {
                         .then(res => {
                             if (res.content.length > 0) {
                                 res.content.forEach(item => {
-                                    this.addresses.push(item.address);
+                                    this.addressList.push({
+                                        value: item.address,
+                                        pid: item.performanceId
+                                    });
                                 });
                             }
                         })

+ 19 - 13
src/main/vue/src/views/performance/ArrangeList.vue

@@ -3,7 +3,13 @@
         <div class="filters-container">
             <el-form :model="form" :rules="rules" size="mini" ref="form" inline label-width="120px">
                 <el-form-item label="活动名称" prop="performanceId">
-                    <el-select v-model="form.performanceId" filterable placeholder="活动名称" style="width: 300px">
+                    <el-select
+                        v-model="form.performanceId"
+                        filterable
+                        placeholder="活动名称"
+                        style="width: 300px"
+                        @change="changeAddress"
+                    >
                         <el-option
                             v-for="item in performances"
                             :key="item.value"
@@ -39,8 +45,8 @@
                                     <el-option
                                         v-for="(item, index) in addresses"
                                         :key="index"
-                                        :value="item"
-                                        :label="item"
+                                        :value="item.value"
+                                        :label="item.value"
                                     ></el-option>
                                 </el-select>
                             </el-form-item>
@@ -228,7 +234,7 @@
                 header-cell-class-name="table-header-cell"
                 row-class-name="table-row"
                 cell-class-name="table-cell"
-                height="300"
+                height="500"
             >
                 <el-table-column prop="name" label="节目名称"> </el-table-column>
                 <el-table-column prop="specialty" label="参赛专业"> </el-table-column>
@@ -248,11 +254,6 @@
                 </el-table-column>
                 <el-table-column prop="organization" label="承办单位" min-width="160"> </el-table-column>
                 <el-table-column prop="examPoint" label="考级点"> </el-table-column>
-                <el-table-column label="操作">
-                    <template slot-scope="{ row }">
-                        <el-button @click="choose(row)" size="mini" type="primary">增加</el-button>
-                    </template>
-                </el-table-column>
             </el-table>
         </el-dialog>
     </div>
@@ -261,10 +262,11 @@
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
 import { time } from 'echarts';
+import delChild from '@/mixins/delChild';
 
 export default {
     name: 'ArrangeList',
-    mixins: [pageableTable],
+    mixins: [pageableTable, delChild],
     data() {
         return {
             multipleMode: false,
@@ -274,6 +276,7 @@ export default {
             form: {},
             performances: [],
             addresses: [],
+            addressList: [],
             timeRange: [null, null],
             dateRange: '',
             afterTimeRange: [null, null],
@@ -322,8 +325,8 @@ export default {
                             value: item.id
                         });
                     });
-                    this.form.performanceId = res.content[0].id;
-                    this.getData();
+                    // this.form.performanceId = res.content[0].id;
+                    // this.getData();
                     this.$http
                         .post(
                             '/performanceSchedule/all',
@@ -333,7 +336,10 @@ export default {
                         .then(res => {
                             if (res.content.length > 0) {
                                 res.content.forEach(item => {
-                                    this.addresses.push(item.address);
+                                    this.addressList.push({
+                                        value: item.address,
+                                        pid: item.performanceId
+                                    });
                                 });
                             }
                         })

+ 36 - 20
src/main/vue/src/views/performance/PerformanceEdit.vue

@@ -160,30 +160,46 @@ export default {
                     this.$message.error(e.error);
                 });
         } else {
-            this.$http.post('/performance/lastYear').then(res => {
-                if (res.programmeNum > 0) {
-                    this.edit = true;
-                }
-                if (typeof res.performanceEnquiries != 'undefined') {
-                    this.phones = res.performanceEnquiries;
-                }
-                this.dateRange = [res.startDate, res.endDate];
+            this.$confirm('是否代入上一年信息?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.$http.post('/performance/lastYear').then(res => {
+                    if (res != '') {
+                        if (res.programmeNum > 0) {
+                            this.edit = true;
+                        }
+                        if (typeof res.performanceEnquiries != 'undefined') {
+                            this.phones = res.performanceEnquiries;
+                        }
+                        this.dateRange = [res.startDate, res.endDate];
 
-                this.$http
-                    .post('/performanceSchedule/all', { size: 100, query: { performanceId: res.id } }, { body: 'json' })
-                    .then(res => {
-                        this.schedules = res.content.map(item => {
-                            delete item.id;
-                            return item;
-                        });
-                    });
+                        this.$http
+                            .post(
+                                '/performanceSchedule/all',
+                                { size: 100, query: { performanceId: res.id } },
+                                { body: 'json' }
+                            )
+                            .then(res => {
+                                this.schedules = res.content.map(item => {
+                                    delete item.id;
+                                    return item;
+                                });
+                            });
 
-                delete res.id;
-                delete res.del;
-                this.formData = res;
+                        delete res.id;
+                        delete res.del;
+                        this.formData = res;
+                    } else {
+                        this.$message.warning('暂无上一年信息');
+                    }
+                });
             });
         }
         // this.getAdmin();
+        let year = new Date().getFullYear();
+        this.years = [year - 1, year, year + 1, year + 2, year + 3];
     },
     data() {
         return {
@@ -196,7 +212,7 @@ export default {
             ],
             dateRange: [],
             eventTimeRange: '',
-            years: ['2020', '2021', '2022', '2023', '2024'],
+            years: [],
             schedules: [],
             phones: [],
             performanceId: '',

+ 1 - 6
src/main/vue/src/views/performance/ProgrammeList.vue

@@ -183,12 +183,7 @@
             <el-table-column label="操作" align="left" fixed="right" min-width="280">
                 <template slot-scope="{ row }">
                     <el-button @click="showRow(row)" size="mini" plain>查看</el-button>
-                    <el-button
-                        type="warning"
-                        @click="playVideo(row)"
-                        size="mini"
-                        plain
-                        v-if="row.video && row.video.src"
+                    <el-button type="warning" @click="playVideo(row)" size="mini" plain v-if="row.video"
                         >浏览视频</el-button
                     >
                     <el-button @click="showCode(row)" type="primary" size="mini" plain>查看二维码</el-button>

+ 11 - 10
src/main/vue/src/views/performance/ProgrammeSignList.vue

@@ -10,6 +10,7 @@
                             filterable
                             placeholder="活动名称"
                             style="width: 300px"
+                            @change="changeAddress"
                         >
                             <el-option
                                 v-for="item in performances"
@@ -36,8 +37,8 @@
                         <el-option
                             v-for="(item, index) in addresses"
                             :key="index"
-                            :value="item"
-                            :label="item"
+                            :value="item.value"
+                            :label="item.value"
                         ></el-option>
                     </el-select>
                 </el-form-item>
@@ -162,7 +163,8 @@ export default {
             ],
             signForm: {},
             addresses: [],
-            columnKeys: ['arrangeName', 'gradingOrganization', 'organization']
+            columnKeys: ['arrangeName', 'gradingOrganization', 'organization'],
+            addressList: []
         };
     },
     created() {
@@ -187,17 +189,16 @@ export default {
                             value: item.id
                         });
                     });
-                    this.form.performanceId = res.content[0].id;
+                    // this.form.performanceId = res.content[0].id;
                     this.$http
-                        .post(
-                            '/performanceSchedule/all',
-                            { size: 100, query: { performanceId: this.form.performanceId } },
-                            { body: 'json' }
-                        )
+                        .post('/performanceSchedule/all', { size: 100 }, { body: 'json' })
                         .then(res => {
                             if (res.content.length > 0) {
                                 res.content.forEach(item => {
-                                    this.addresses.push(item.address);
+                                    this.addressList.push({
+                                        value: item.address,
+                                        pid: item.performanceId
+                                    });
                                 });
                             }
                         })