licailing 4 лет назад
Родитель
Сommit
f5cbb99e80

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

@@ -8,6 +8,7 @@ import lombok.NoArgsConstructor;
 import org.hibernate.annotations.Where;
 
 import javax.persistence.Entity;
+import javax.persistence.Transient;
 
 @Data
 @AllArgsConstructor
@@ -16,6 +17,8 @@ import javax.persistence.Entity;
 @Entity
 @Where(clause = "del = 0")
 public class Award extends BaseEntity {
+    private Long performanceId;
+
     @ApiModelProperty(value = "奖项名称")
     private String name;
 
@@ -24,4 +27,7 @@ public class Award extends BaseEntity {
 
     @ApiModelProperty(value = "级别")
     private int level;
+
+    @Transient
+    private String performance;
 }

+ 1 - 1
src/main/java/com/izouma/wenlvju/domain/performance/ProgrammeAward.java

@@ -22,7 +22,7 @@ import javax.persistence.Entity;
 @ApiModel(value = "节目奖项设置")
 public class ProgrammeAward extends BaseEntity {
 
-    private Long performanceId;
+//    private Long performanceId;
 
     private Long specialtyId;
 

+ 66 - 0
src/main/java/com/izouma/wenlvju/dto/ProgScoreAdminDTO.java

@@ -0,0 +1,66 @@
+package com.izouma.wenlvju.dto;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.izouma.wenlvju.domain.performance.Programme;
+import com.izouma.wenlvju.enums.CompetitionGroup;
+import com.izouma.wenlvju.enums.SignedIn;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProgScoreAdminDTO {
+    @ExcelProperty(value = "节目编号")
+    private Long id;
+
+    @ExcelProperty(value = "节目名称")
+    private String name;
+
+    @ExcelProperty(value = "参赛专业")
+    private String specialty;
+
+    @ExcelProperty(value = "参赛组别")
+    private String competitionGroup;
+
+    @ExcelProperty(value = "考级机构")
+    private String gradingOrganization;
+
+    @ExcelProperty(value = "承办单位")
+    private String organization;
+
+    @ExcelProperty(value = "考级点")
+    private String examPoint;
+
+    @ExcelProperty(value = "参演人数")
+    private int quantity;
+
+    @ApiModelProperty(value = "参演人员")
+    private List<String> participant;
+
+    @ApiModelProperty(value = "节目视频")
+    private String video;
+
+    @ApiModelProperty(value = "节目文件附件")
+    private String annex;
+
+    private Double score;
+
+    private Double myScore;
+
+    private boolean second;
+
+    public ProgScoreAdminDTO(Programme programme) {
+        BeanUtil.copyProperties(programme, this);
+        if (ObjectUtil.isNotNull(programme.getVideo())) {
+            this.video = programme.getVideo().getSrc();
+        }
+    }
+}

+ 11 - 3
src/main/java/com/izouma/wenlvju/dto/ProgrammeResultDTO.java

@@ -1,6 +1,7 @@
 package com.izouma.wenlvju.dto;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.izouma.wenlvju.domain.performance.Programme;
@@ -21,9 +22,6 @@ public class ProgrammeResultDTO {
     @ExcelProperty(value = "参赛组别")
     private String competitionGroup;
 
-    @ExcelProperty(value = "参赛级别")
-    private String level;
-
     @ExcelProperty(value = "考级机构")
     private String gradingOrganization;
 
@@ -39,6 +37,13 @@ public class ProgrammeResultDTO {
     @ExcelProperty(value = "奖项")
     private String award;
 
+    @ExcelIgnore
+    private String video;
+
+    @ExcelIgnore
+    private String annex;
+
+
     @ExcelIgnore
     private Long awardId;
 
@@ -47,5 +52,8 @@ public class ProgrammeResultDTO {
 
     public ProgrammeResultDTO(Programme programme) {
         BeanUtil.copyProperties(programme, this);
+        if (ObjectUtil.isNotNull(programme.getVideo())) {
+            this.video = programme.getVideo().getSrc();
+        }
     }
 }

+ 3 - 3
src/main/java/com/izouma/wenlvju/dto/ProgrammeShowDTO.java

@@ -8,7 +8,6 @@ import com.izouma.wenlvju.domain.performance.Programme;
 import com.izouma.wenlvju.enums.CompetitionGroup;
 import com.izouma.wenlvju.enums.ProgrammeStatus;
 import com.izouma.wenlvju.utils.excel.EnumExcelConverter;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -64,9 +63,10 @@ public class ProgrammeShowDTO {
     @ExcelProperty(value = "参赛人数")
     private int quantity;
 
-    @ExcelProperty(value = "评分")
-    private Double score;
+    @ExcelProperty(value = "奖项")
+    private String award;
 
+    @ExcelIgnore
     private int process;
 
     @ExcelIgnore

+ 3 - 0
src/main/java/com/izouma/wenlvju/repo/AwardRepo.java

@@ -7,10 +7,13 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.util.List;
 
 public interface AwardRepo extends JpaRepository<Award, Long>, JpaSpecificationExecutor<Award> {
     @Query("update Award t set t.del = true where t.id = ?1")
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    List<Award> findAllByPerformanceId(Long performanceId);
 }

+ 0 - 3
src/main/java/com/izouma/wenlvju/repo/performance/ProgrammeAwardRepo.java

@@ -7,13 +7,10 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
-import java.util.List;
 
 public interface ProgrammeAwardRepo extends JpaRepository<ProgrammeAward, Long>, JpaSpecificationExecutor<ProgrammeAward> {
     @Query("update ProgrammeAward t set t.del = true where t.id = ?1")
     @Modifying
     @Transactional
     void softDelete(Long id);
-
-    List<ProgrammeAward> findAllByPerformanceId(Long performanceId);
 }

+ 10 - 5
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeAwardService.java

@@ -46,7 +46,7 @@ public class ProgrammeAwardService {
         List<ProgrammeAward> programmeAwards = this.all(pageQuery).getContent();
 
         // 奖项
-        List<Award> awardList = awardRepo.findAll();
+        List<Award> awardList = awardRepo.findAllByPerformanceId(performanceId);
 
         //专业
         List<ArtType> all = artTypeRepo.findAll();
@@ -277,13 +277,18 @@ public class ProgrammeAwardService {
         List<Programme> programmeList = programmeRepo.findAllByPerformanceIdAndProgrammeStatus(dtos.get(0)
                 .getPerformanceId(), ProgrammeStatus.SUBMIT);
 
-        long noScore = programmeList.stream().filter(programme -> ObjectUtil.isNull(programme.getScore())).count();
-        if (noScore > 0) {
-            throw new BusinessException("有节目未评分");
-        }
+//        long noScore = programmeList.stream().filter(programme -> ObjectUtil.isNull(programme.getScore())).count();
+//        if (noScore > 0) {
+//            throw new BusinessException("有节目未评分");
+//        }
 
 
         Map<Long, List<Programme>> programmeMap = programmeList.stream()
+                .peek(programme -> {
+                    if (ObjectUtil.isNull(programme.getScore())) {
+                        programme.setScore(0.0);
+                    }
+                })
                 .sorted(Comparator.comparingDouble(Programme::getScore))
                 .collect(Collectors.groupingBy(Programme::getParentSpecialtyId));
 

+ 11 - 38
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeService.java

@@ -818,7 +818,7 @@ public class ProgrammeService {
         return this.toDTOPage(all, arrangeId, userId);
     }
 
-    public Page<ProgrammeScoreDTO> toDTOPage(Page<Programme> all) {
+    public Page<ProgScoreAdminDTO> toDTOPage(Page<Programme> all) {
         List<Long> ids = all.getContent().stream().map(Programme::getId).distinct().collect(Collectors.toList());
         Map<Long, List<Participant>> participantMap = participantRepo.findAllByProgrammeIdIn(ids)
                 .stream()
@@ -826,20 +826,21 @@ public class ProgrammeService {
         Map<Long, String> artTypeMap = artTypeRepo.findAll()
                 .stream()
                 .collect(Collectors.toMap(ArtType::getId, ArtType::getName));
-
-        Map<Long, String> arrangeMap = arrangeRepo.findAllByPerformanceId(all.getContent().get(0).getPerformanceId())
-                .stream()
-                .collect(Collectors.toMap(Arrange::getId, Arrange::getName));
-
         Map<Long, Double> scoreMap = programmeScoreRepo.findAllByProgrammeIdIn(ids)
                 .stream()
                 .collect(Collectors.groupingBy(ProgrammeScore::getProgrammeId, Collectors.averagingDouble(ProgrammeScore::getScore)));
-
+        Map<Long, String> gradeMap = gradingOrganizationRepo.findAll()
+                .stream()
+                .collect(Collectors.toMap(GradingOrganization::getId, GradingOrganization::getName));
+        Map<Long, String> organizationMap = organizationRepo.findAll()
+                .stream()
+                .collect(Collectors.toMap(Organization::getId, Organization::getName));
         return all.map(programme -> {
-            ProgrammeScoreDTO dto = new ProgrammeScoreDTO(programme);
+            ProgScoreAdminDTO dto = new ProgScoreAdminDTO(programme);
             dto.setSpecialty(artTypeMap.get(programme.getSpecialtyId()));
-            dto.setArrangeName(arrangeMap.get(programme.getArrangeId()));
             dto.setMyScore(scoreMap.get(programme.getId()));
+            dto.setGradingOrganization(gradeMap.get(programme.getGradingOrganizationId()));
+            dto.setOrganization(organizationMap.get(programme.getOrganizationId()));
             if (CollUtil.isNotEmpty(participantMap.get(programme.getId()))) {
                 List<String> participants = participantMap.get(programme.getId())
                         .stream()
@@ -969,36 +970,9 @@ public class ProgrammeService {
     }
 
     public Page<ProgrammeResultDTO> result(PageQuery pageQuery) {
-        Map<String, Object> query = pageQuery.getQuery();
-        Object code = query.get("code");
-        String artCode = null;
-        if (ObjectUtil.isNotNull(code)) {
-            artCode = Convert.convert(String.class, code);
-            query.remove("code");
-        }
-
-        List<ArtType> artTypes = artTypeRepo.findAll();
-
-        String finalArtCode = artCode;
-        Page<Programme> all = programmeRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> and = JpaUtils.toPredicates(pageQuery, Programme.class, root, criteriaQuery, criteriaBuilder);
-            if (StrUtil.isNotBlank(finalArtCode)) {
-                and.add(root.get("specialtyId").in(artTypeService.getIds(artTypes, finalArtCode)));
-            }
-
-
-            criteriaQuery.orderBy(criteriaBuilder.asc(criteriaBuilder.selectCase()
-                    .when(criteriaBuilder.isNull(root.get("awardId")), 100000)
-                    .otherwise(root.get("awardId"))));
-
-            return criteriaBuilder.and(and.toArray(new Predicate[0]));
-
-        }), JpaUtils.toPageRequest(pageQuery));
 
+        Page<Programme> all = this.all2(pageQuery);
         List<Programme> programmes = all.getContent();
-        Map<Long, String> settingMap = settingRepo.findAllByFlagIn(CollUtil.newArrayList(3, 4))
-                .stream()
-                .collect(Collectors.toMap(Setting::getId, Setting::getName));
 
         Map<Long, String> gradeMap = gradingOrganizationRepo.findAll()
                 .stream()
@@ -1024,7 +998,6 @@ public class ProgrammeService {
             dto.setGradingOrganization(organizationMap.get(programme.getGradingOrganizationId()));
             dto.setSpecialty(artTypeMap.get(programme.getSpecialtyId()));
             dto.setGradingOrganization(gradeMap.get(programme.getGradingOrganizationId()));
-            dto.setLevel(settingMap.get(programme.getLevelSettingId()));
             dto.setCompetitionGroup(programme.getCompetitionGroup().equals(CompetitionGroup.SINGLE) ? "个人" : "集体");
             return dto;
         });

+ 15 - 3
src/main/java/com/izouma/wenlvju/web/AwardController.java

@@ -1,5 +1,8 @@
 package com.izouma.wenlvju.web;
+
 import com.izouma.wenlvju.domain.Award;
+import com.izouma.wenlvju.domain.performance.Performance;
+import com.izouma.wenlvju.repo.performance.PerformanceRepo;
 import com.izouma.wenlvju.service.AwardService;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
@@ -14,13 +17,16 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/award")
 @AllArgsConstructor
 public class AwardController extends BaseController {
-    private AwardService awardService;
-    private AwardRepo awardRepo;
+    private AwardService    awardService;
+    private AwardRepo       awardRepo;
+    private PerformanceRepo performanceRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
@@ -37,7 +43,13 @@ public class AwardController extends BaseController {
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/all")
     public Page<Award> all(@RequestBody PageQuery pageQuery) {
-        return awardService.all(pageQuery);
+        Map<Long, String> performanceMap = performanceRepo.findAll()
+                .stream()
+                .collect(Collectors.toMap(Performance::getId, Performance::getName));
+        return awardService.all(pageQuery).map(award -> {
+            award.setPerformance(performanceMap.get(award.getPerformanceId()));
+            return award;
+        });
     }
 
     @GetMapping("/get/{id}")

+ 1 - 1
src/main/java/com/izouma/wenlvju/web/performance/ProgrammeController.java

@@ -185,7 +185,7 @@ public class ProgrammeController extends BaseController {
     @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/byScoreAdmin")
     @ApiOperation("查看分数")
-    public Page<ProgrammeScoreDTO> byScoreAdmin(@RequestBody PageQuery pageQuery) {
+    public Page<ProgScoreAdminDTO> byScoreAdmin(@RequestBody PageQuery pageQuery) {
         Page<Programme> all = programmeService.all2(pageQuery);
         return programmeService.toDTOPage(all);
     }

+ 34 - 1
src/main/vue/src/views/AwardEdit.vue

@@ -9,6 +9,12 @@
             size="small"
             style="max-width: 500px;"
         >
+            <el-form-item prop="performanceId" label="活动名称">
+                <el-select v-model="formData.performanceId" filterable placeholder="请选择">
+                    <el-option v-for="item in performances" :key="item.value" :label="item.label" :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
             <el-form-item prop="name" label="奖项名称">
                 <el-input v-model="formData.name"></el-input>
             </el-form-item>
@@ -44,6 +50,32 @@ export default {
                     this.$message.error(e.error);
                 });
         }
+        this.$http
+            .post(
+                '/performance/all',
+                {
+                    size: 1000,
+                    sort: 'year,desc',
+                    query: {
+                        publish: true
+                    }
+                },
+                { body: 'json' }
+            )
+            .then(res => {
+                if (res.content.length > 0) {
+                    res.content.forEach(item => {
+                        this.performances.push({
+                            label: item.name,
+                            value: item.id
+                        });
+                    });
+                }
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
     },
     data() {
         return {
@@ -56,7 +88,8 @@ export default {
                 { label: '第三奖励', value: 3 },
                 { label: '第四奖励', value: 4 },
                 { label: '第五奖励', value: 5 }
-            ]
+            ],
+            performances: []
         };
     },
     methods: {

+ 4 - 3
src/main/vue/src/views/AwardList.vue

@@ -4,14 +4,14 @@
             <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="download"
                 type="primary"
                 icon="el-icon-download"
                 :loading="downloading"
                 class="filter-item"
                 >导出EXCEL
-            </el-button>
+            </el-button> -->
         </div>
         <el-table
             :data="tableData"
@@ -24,7 +24,8 @@
             :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="id" label="ID" width="100"> </el-table-column> -->
+            <el-table-column prop="performance" label="活动名称"></el-table-column>
             <el-table-column prop="name" label="奖项名称"> </el-table-column>
             <el-table-column prop="description" label="奖项描述"> </el-table-column>
             <el-table-column prop="level" label="级别" :formatter="levelFormatter"> </el-table-column>

+ 9 - 66
src/main/vue/src/views/performance/ProgScoreAdminList.vue

@@ -36,35 +36,14 @@
                             </el-cascader>
                         </el-form-item>
                         <el-form-item>
-                            <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
+                            <el-button @click="getData" type="primary" icon="el-icon-search" size="mini"
+                                >查询
+                            </el-button>
                         </el-form-item>
                         <el-form-item>
                             <el-button @click="editRow(performanceId)">设置复审</el-button>
                         </el-form-item>
                     </el-col>
-                    <!-- <div v-if="!performance.online">
-                        <el-form-item label="活动日期">
-                            <el-date-picker v-model="date" type="date" placeholder="选择日期" class="filter-item">
-                            </el-date-picker>
-                        </el-form-item>
-                        <el-form-item label="时间">
-                            <el-radio-group v-model="morning" @change="getData" class="filter-item">
-                                <el-radio-button :label="true">上午</el-radio-button>
-                                <el-radio-button :label="false">下午</el-radio-button>
-                            </el-radio-group>
-                        </el-form-item>
-                        <el-form-item label="活动地点">
-                            <el-select v-model="form.address" class="filter-item">
-                                <el-option
-                                    v-for="(item, index) in addresses"
-                                    :key="index"
-                                    :value="item.value"
-                                    :label="item.value"
-                                ></el-option>
-                            </el-select>
-                        </el-form-item>
-                    </div> -->
-                    <!-- <el-form-item label="评审专家"></el-form-item> -->
                 </el-row>
             </el-form>
         </div>
@@ -80,9 +59,12 @@
         >
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
             <el-table-column prop="id" label="编号" width="80"> </el-table-column>
-            <el-table-column prop="arrangeName" label="分组"> </el-table-column>
             <el-table-column prop="name" label="节目名称" min-width="70"> </el-table-column>
-            <el-table-column prop="specialty" label="参赛专业"> </el-table-column>
+            <el-table-column prop="specialty" label="参赛专业" min-width="70"> </el-table-column>
+            <el-table-column prop="gradingOrganization" label="考级机构" show-overflow-tooltip min-width="160">
+            </el-table-column>
+            <el-table-column prop="organization" label="承办单位" min-width="160"> </el-table-column>
+            <el-table-column prop="examPoint" label="考级点" min-width="160"> </el-table-column>
             <el-table-column prop="participant" label="参赛人员" show-overflow-tooltip>
                 <template slot-scope="{ row }">{{
                     row.participant ? row.participant.join(',') : row.participant
@@ -119,7 +101,7 @@
                     </el-input-number>
                 </template>
             </el-table-column>
-            <el-table-column label="操作" align="left" fixed="right" min-width="150">
+            <el-table-column label="操作" align="left" fixed="right" min-width="170">
                 <template slot-scope="{ row, $index }">
                     <el-button @click="playVideo(row, $index)" size="mini" plain type="primary">查看作品</el-button>
                     <span v-if="performance.status == 'RATE'" style="margin-left:10px">
@@ -389,45 +371,6 @@ export default {
         operation2() {
             this.$message('操作2');
         },
-        signIn() {
-            this.$alert('确认签到?', '提示', { type: 'primary' })
-                .then(() => {
-                    return this.$http.post('/programme/signIn', {
-                        id: this.signForm.id,
-                        signedIn: this.signForm.signedIn,
-                        description: this.signForm.description
-                    });
-                })
-                .then(() => {
-                    this.$message.success('签到成功');
-                    this.dialogSign = false;
-                    this.getData();
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        this.$message.error(e.error);
-                    }
-                });
-        },
-        saveScore(row) {
-            if (!row.myScore) {
-                this.$message.warning('请输入评分');
-                return;
-            }
-            this.$http
-                .post('/programmeScore/saveScore?programmeId=' + row.id, {
-                    score: row.myScore,
-                    remark: row.remark,
-                    performanceId: row.performanceId
-                })
-                .then(res => {
-                    this.$message.success('评分成功');
-                    this.getData();
-                })
-                .catch(e => {
-                    this.$message.error(e.error);
-                });
-        },
         saveRow(row) {
             if (!row.score) {
                 this.$message.warning('请输入评分');

+ 78 - 47
src/main/vue/src/views/performance/ProgrammeResultList.vue

@@ -139,12 +139,12 @@
             <el-table-column prop="name" label="节目名称"> </el-table-column>
             <el-table-column prop="specialty" label="参赛专业"> </el-table-column>
             <el-table-column prop="competitionGroup" label="参赛组别" min-width="70"> </el-table-column>
-            <el-table-column prop="level" label="参赛级别" min-width="70"> </el-table-column>
-            <!-- <el-table-column prop="quantity" label="参赛人数" min-width="70"> </el-table-column> -->
+            <!-- <el-table-column prop="level" label="参赛级别" min-width="70"> </el-table-column> -->
+            <el-table-column prop="quantity" label="参赛人数" min-width="70"> </el-table-column>
             <el-table-column prop="gradingOrganization" label="考级机构" show-overflow-tooltip min-width="160">
             </el-table-column>
             <el-table-column prop="organization" label="承办单位" min-width="160"> </el-table-column>
-            <!-- <el-table-column prop="examPoint" label="考级点" min-width="160"> </el-table-column> -->
+            <el-table-column prop="examPoint" label="考级点" min-width="160"> </el-table-column>
             <el-table-column prop="award" label="获奖情况" min-width="120">
                 <template slot-scope="{ row }">
                     <span v-if="!row.second">{{ row.award }}</span>
@@ -158,17 +158,25 @@
                     </el-select>
                 </template>
             </el-table-column>
-            <el-table-column label="操作" align="left" fixed="right" min-width="120">
-                <template slot-scope="{ row }">
-                    <div v-if="performance.status == 'RATE'">
-                        <el-button @click="row.second = true" size="mini" plain type="warning" v-if="!row.second"
+            <el-table-column label="操作" align="left" fixed="right" min-width="165">
+                <template slot-scope="{ row, $index }">
+                    <el-button @click="playVideo(row, $index)" size="mini" plain type="primary" style="margin-right:5px"
+                        >查看作品</el-button
+                    >
+                    <span v-if="performance.status == 'RATE'">
+                        <el-button
+                            @click="row.second = true"
+                            size="mini"
+                            plain
+                            type="warning"
+                            v-if="!row.second && display"
                             >修改</el-button
                         >
                         <div v-else>
                             <el-button @click="saveRow(row)" size="mini" plain type="primary">保存</el-button>
                             <el-button @click="row.second = false" size="mini" plain type="danger">取消</el-button>
                         </div>
-                    </div>
+                    </span>
                 </template>
             </el-table-column>
         </el-table>
@@ -185,6 +193,42 @@
             >
             </el-pagination>
         </div>
+        <el-dialog
+            :title="programme.name"
+            class="videoDialog"
+            destroy-on-close
+            center
+            append-to-body
+            :visible.sync="showViedo"
+            width="45vw"
+        >
+            <div class="dialog-content">
+                <video
+                    :src="programme.video"
+                    controls
+                    style="max-height: 600px; max-width: 100%; margin: 0 auto"
+                    v-if="programme.video"
+                >
+                    您的浏览器不支持 video 标签。
+                </video>
+                <img
+                    style="max-height: 600px; max-width: 100%; display: block; margin: auto"
+                    :src="programme.annex"
+                    alt=""
+                    v-if="programme.annex"
+                />
+            </div>
+            <div style="display: block; margin: 10px;">
+                <el-button size="mini" @click="move(-1)" :disabled="index == 0">上一个</el-button>
+                <el-button
+                    size="mini"
+                    @click="move(1)"
+                    :disabled="(page - 1) * pageSize + index == totalElements - 1 || index >= pageSize - 1"
+                    >下一个</el-button
+                >
+                <el-button @click="showViedo = false" size="mini">关闭</el-button>
+            </div>
+        </el-dialog>
     </div>
 </template>
 <script>
@@ -207,8 +251,6 @@ export default {
             ],
             form: {},
             competitionGroup: '',
-            levelSingleOptions: [],
-            levelCollectiveOptions: [],
             levelSettingId: '',
             gradingOrganizationIdOptions: [],
             gradingOrganizationId: '',
@@ -228,47 +270,18 @@ export default {
             specialtyId: '',
             showMore: false,
             organizationIdOptions: [],
-            awards: []
+            awards: [],
+            showViedo: false,
+            programme: {},
+            index: 0,
+            display: false
         };
     },
     created() {
-        this.$http
-            .post('/setting/byFlag', { flag: 3 })
-            .then(res => {
-                if (res.length > 0) {
-                    res.forEach(item => {
-                        this.levelSingleOptions.push({
-                            label: item.name,
-                            value: item.id,
-                            desc: item.code
-                        });
-                    });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
+        this.getAdmin();
         if (this.$route.query.pid) {
             this.performanceId = Number(this.$route.query.pid);
         }
-        this.$http
-            .post('/setting/byFlag', { flag: 4 })
-            .then(res => {
-                if (res.length > 0) {
-                    res.forEach(item => {
-                        this.levelCollectiveOptions.push({
-                            label: item.name,
-                            value: item.id,
-                            desc: item.code
-                        });
-                    });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
         this.$http
             .post('/gradingOrganization/all', { size: 1000, query: { del: false } }, { body: 'json' })
             .then(res => {
@@ -340,7 +353,7 @@ export default {
                 console.log(e);
             });
         this.$http
-            .post('/award/all', { size: 20 }, { body: 'json' })
+            .post('/award/all', { size: 20, query: { performance: this.performanceId } }, { body: 'json' })
             .then(res => {
                 if (res.content.length > 0) {
                     res.content.forEach(item => {
@@ -359,7 +372,7 @@ export default {
         selection() {
             return this.$refs.table.selection.map(i => i.id);
         },
-        ...mapState(['organization'])
+        ...mapState(['userInfo'])
     },
     methods: {
         competitionGroupFormatter(row, column, cellValue, index) {
@@ -496,6 +509,24 @@ export default {
                     this.saving = false;
                     this.$message.error(e.error);
                 });
+        },
+        playVideo(row, index) {
+            this.index = index;
+            this.showViedo = true;
+            this.programme = row;
+        },
+        move(direction) {
+            const end = direction + this.index;
+            this.programme = { ...this.tableData[end] };
+            this.index = end;
+        },
+        getAdmin() {
+            let data = this.userInfo.authorities;
+            data.forEach(element => {
+                if (element.name === 'ROLE_ADMIN') {
+                    this.display = true;
+                }
+            });
         }
     }
 };