Преглед изворни кода

Merge branch 'Regulation' of http://git.izouma.com/licailing/wenlvju into Regulation

xuqiang пре 4 година
родитељ
комит
b1424daeda

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

@@ -86,7 +86,7 @@ public class Programme extends BaseEntity {
     private Long arrangeId;
     private Long arrangeId;
 
 
     /*
     /*
-    初始状态为0,已提交1,不通过2,通过3,已初编排入分组为4,确定分组为5
+    初始状态为0,已提交1,考级机构初审未通过2,初审中3,未进入复审4,复审中5,评奖中6,完成7
     */
     */
     private int status;
     private int status;
 
 

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

@@ -0,0 +1,80 @@
+package com.izouma.wenlvju.dto;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.izouma.wenlvju.annotations.EnumFormat;
+import com.izouma.wenlvju.domain.performance.Participant;
+import com.izouma.wenlvju.domain.performance.Programme;
+import com.izouma.wenlvju.enums.CompetitionGroup;
+import com.izouma.wenlvju.utils.excel.EnumExcelConverter;
+import com.izouma.wenlvju.utils.excel.LocalDateConverter;
+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.EnumType;
+import javax.persistence.Enumerated;
+import java.time.LocalDate;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProgrammeShowDTO {
+    private Long id;
+
+    @ApiModelProperty(value = "活动名称")
+    private String performance;
+
+    @ApiModelProperty(value = "节目名称")
+    private String name;
+
+    @ApiModelProperty(value = "参赛专业")
+    private String specialty;
+
+    @ApiModelProperty(value = "参赛组别")
+    private CompetitionGroup competitionGroup;
+
+    @ApiModelProperty(value = "参赛级别")
+    private String level;
+
+    @ApiModelProperty(value = "作品时长")
+    private int durationOfWork;
+
+    @ApiModelProperty(value = "指导老师")
+    private String instructor;
+
+    @ApiModelProperty(value = "考级机构")
+    private String gradingOrganization;
+
+    @ApiModelProperty(value = "承办单位")
+    private String organization;
+
+    @ApiModelProperty(value = "考级点")
+    private String examPoint;
+
+    @ApiModelProperty(value = "联系人")
+    private String contact;
+
+    @ApiModelProperty(value = "参赛人数")
+    private int quantity;
+
+    private String video;
+
+    private String annex;
+
+    private int status;
+
+
+
+    public ProgrammeShowDTO(Programme programme) {
+        BeanUtil.copyProperties(programme, this);
+        if (programme.getVideo() != null) {
+            this.video = programme.getVideo().getSrc();
+        }
+    }
+
+}

+ 4 - 0
src/main/java/com/izouma/wenlvju/repo/performance/ProgrammeRepo.java

@@ -17,8 +17,12 @@ public interface ProgrammeRepo extends JpaRepository<Programme, Long>, JpaSpecif
 
 
     long countAllByPerformanceId(Long performanceId);
     long countAllByPerformanceId(Long performanceId);
 
 
+    long countAllByPerformanceIdAndStatusGreaterThan(Long performanceId, int status);
+
     List<Programme> findAllByPerformanceIdAndStatus(Long performanceId, int status);
     List<Programme> findAllByPerformanceIdAndStatus(Long performanceId, int status);
 
 
+    List<Programme> findAllByStatusGreaterThan(int status);
+
     long countAllByArrangeIdAndStatusIsNotNull(Long arrangeId);
     long countAllByArrangeIdAndStatusIsNotNull(Long arrangeId);
 
 
     @Query("update Programme t set t.allSigned = true where t.arrangeId = ?1")
     @Query("update Programme t set t.allSigned = true where t.arrangeId = ?1")

+ 44 - 4
src/main/java/com/izouma/wenlvju/service/performance/ArrangeService.java

@@ -112,8 +112,10 @@ public class ArrangeService {
         String[] arr = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
         String[] arr = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
         String format1 = format.format(date);
         String format1 = format.format(date);
 
 
+        List<Programme> byPerformanceId = programmeRepo.findAllByPerformanceIdAndStatus(dto.getPerformanceId(), 1);
+
         if (dto.isMorning() && dto.isAfternoon()) {
         if (dto.isMorning() && dto.isAfternoon()) {
-            this.saveArrange(dto, group, time, format1, arr);
+            this.saveArrange(byPerformanceId, dto, group, time, format1, arr);
         } else {
         } else {
             LocalTime startAt;
             LocalTime startAt;
             LocalTime endAt;
             LocalTime endAt;
@@ -153,7 +155,7 @@ public class ArrangeService {
                         .morning(morning)
                         .morning(morning)
                         .build();
                         .build();
 
 
-                Map<String, String> programmes = programmeService.group(arrange);
+                Map<String, String> programmes = programmeService.group(byPerformanceId, arrange);
                 List<Programme> programmeList = JSONObject.parseArray(programmes.get("programmes"), Programme.class);
                 List<Programme> programmeList = JSONObject.parseArray(programmes.get("programmes"), Programme.class);
                 List<Long> ids = programmeList.stream()
                 List<Long> ids = programmeList.stream()
                         .map(Programme::getSpecialtyId)
                         .map(Programme::getSpecialtyId)
@@ -184,11 +186,12 @@ public class ArrangeService {
 
 
     }
     }
 
 
-    public void saveArrange(ArrangeDTO dto, int group, int time, String format1, String[] arr) {
+    public void saveArrange(List<Programme> byPerformanceId, ArrangeDTO dto, int group, int time, String format1, String[] arr) {
         LocalDate date = dto.getStartDate();
         LocalDate date = dto.getStartDate();
         LocalTime startTime = dto.getMorningStartTime();
         LocalTime startTime = dto.getMorningStartTime();
         boolean morning = true;
         boolean morning = true;
         int j = 0;
         int j = 0;
+
         for (int i = 0; i < group; i++) {
         for (int i = 0; i < group; i++) {
             LocalTime endTime = startTime.plusMinutes(time);
             LocalTime endTime = startTime.plusMinutes(time);
 //            if (!endTime.isBefore(dto.getMorningEndTime())) {
 //            if (!endTime.isBefore(dto.getMorningEndTime())) {
@@ -212,7 +215,7 @@ public class ArrangeService {
                     .morning(morning)
                     .morning(morning)
                     .build();
                     .build();
 
 
-            Map<String, String> programmes = programmeService.group(arrange);
+            Map<String, String> programmes = programmeService.group(byPerformanceId, arrange);
             List<Programme> programmeList = JSONObject.parseArray(programmes.get("programmes"), Programme.class);
             List<Programme> programmeList = JSONObject.parseArray(programmes.get("programmes"), Programme.class);
             List<Long> ids = programmeList.stream()
             List<Long> ids = programmeList.stream()
                     .map(Programme::getSpecialtyId)
                     .map(Programme::getSpecialtyId)
@@ -287,4 +290,41 @@ public class ArrangeService {
         }), JpaUtils.toPageRequest(pageQuery));
         }), JpaUtils.toPageRequest(pageQuery));
     }
     }
 
 
+    public void groupOffline(ArrangeDTO dto) {
+        Arrange first = arrangeRepo.findFirstByPerformanceId(dto.getPerformanceId());
+        if (ObjectUtil.isNotNull(first) && first.isPublish()) {
+            throw new BusinessException("活动分组已发布");
+        }
+        List<Programme> byPerformanceId = programmeRepo.findAllByPerformanceIdAndStatus(dto.getPerformanceId(), 1);
+        int group = (int) Math.ceil((double) byPerformanceId.size() / dto.getQuantity());
+
+        for (int i = 0; i < group; i++) {
+            Arrange arrange = Arrange.builder()
+                    .performanceId(dto.getPerformanceId())
+                    .quantity(dto.getQuantity())
+                    .specialtyId(dto.getSpecialtyId())
+                    .name("第" + i + 1 + "场")
+                    .build();
+
+            Map<String, String> programmes = programmeService.group(byPerformanceId, arrange);
+            List<Programme> programmeList = JSONObject.parseArray(programmes.get("programmes"), Programme.class);
+            List<Long> ids = programmeList.stream()
+                    .map(Programme::getSpecialtyId)
+                    .distinct()
+                    .collect(Collectors.toList());
+            arrange.setSpecialtyId(ids);
+            arrange.setQuantity(programmeList.size());
+            arrange = arrangeRepo.save(arrange);
+
+            programmeService.saveAll(programmeList, arrange.getId());
+
+            // 插入节目
+            if (!Boolean.parseBoolean(programmes.get("flag"))) {
+                //不需要这么多分组
+                break;
+            }
+        }
+    }
+
+
 }
 }

+ 18 - 4
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeService.java

@@ -331,10 +331,10 @@ public class ProgrammeService {
     }
     }
 
 
     @Transactional(rollbackOn = Exception.class)
     @Transactional(rollbackOn = Exception.class)
-    public Map<String, String> group(Arrange arrange) {
+    public Map<String, String> group(List<Programme> byPerformanceId, Arrange arrange) {
         boolean flag = true;
         boolean flag = true;
 
 
-        List<Programme> byPerformanceId = programmeRepo.findAllByPerformanceIdAndStatus(arrange.getPerformanceId(), 0);
+
         int quantity = arrange.getQuantity();
         int quantity = arrange.getQuantity();
         if (byPerformanceId.size() < quantity) {
         if (byPerformanceId.size() < quantity) {
             flag = false;
             flag = false;
@@ -374,7 +374,7 @@ public class ProgrammeService {
         // 是否继续分组
         // 是否继续分组
         boolean flag = true;
         boolean flag = true;
 
 
-        List<Programme> byPerformanceId = programmeRepo.findAllByPerformanceIdAndStatus(arrange.getPerformanceId(), 0);
+        List<Programme> byPerformanceId = programmeRepo.findAllByPerformanceIdAndStatus(arrange.getPerformanceId(), 1);
         int quantity = arrange.getQuantity();
         int quantity = arrange.getQuantity();
         if (byPerformanceId.size() < quantity) {
         if (byPerformanceId.size() < quantity) {
             flag = false;
             flag = false;
@@ -464,7 +464,7 @@ public class ProgrammeService {
     未分组节目
     未分组节目
      */
      */
     public List<Programme> ungrouped(Long performanceId) {
     public List<Programme> ungrouped(Long performanceId) {
-        List<Programme> programmes = programmeRepo.findAllByPerformanceIdAndStatus(performanceId, 0);
+        List<Programme> programmes = programmeRepo.findAllByPerformanceIdAndStatus(performanceId, 3);
         this.sort(programmes);
         this.sort(programmes);
         return programmes;
         return programmes;
     }
     }
@@ -593,4 +593,18 @@ public class ProgrammeService {
             return dto;
             return dto;
         });
         });
     }
     }
+
+    /*
+    第一次审核
+     */
+    public void firstAudit(Long id, boolean pass) {
+        Programme programme = programmeRepo.findById(id).orElseThrow(new BusinessException("无节目"));
+        if (pass) {
+            programme.setStatus(3);
+            programmeRepo.save(programme);
+            return;
+        }
+        programme.setStatus(2);
+        programmeRepo.save(programme);
+    }
 }
 }

+ 41 - 0
src/main/java/com/izouma/wenlvju/web/FileUploadController.java

@@ -148,4 +148,45 @@ public class FileUploadController {
             throw new BusinessException("上传失败", e.getMessage());
             throw new BusinessException("上传失败", e.getMessage());
         }
         }
     }
     }
+
+    @PostMapping("/video1")
+    public String uploadVideo1(@RequestParam("file") MultipartFile file) {
+        String basePath = "application";
+        try {
+            basePath = file.getContentType().split("/")[0];
+        } catch (Exception ignored) {
+        }
+        String videoPath = basePath + "/" + new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())
+                + RandomStringUtils.randomAlphabetic(8)
+                + "." + FilenameUtils.getExtension(file.getOriginalFilename());
+
+        InputStream originInputstream;
+        try {
+            originInputstream = file.getInputStream();
+            if (StringUtils.isEmpty(file.getContentType()) || !file.getContentType().startsWith("video")) {
+                throw new BusinessException(file.getContentType() + " 非视频文件");
+            }
+
+            File destDir = TempFile.createTempDirectory("import." + FilenameUtils.getExtension(file.getOriginalFilename()));
+            file.transferTo(destDir);
+            Long videoTime = VideoUtils.getVideoTime(destDir);
+            log.info("视频长度:" + videoTime);
+
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+            byte[] buffer = new byte[1024];
+            int len;
+            while ((len = originInputstream.read(buffer)) > -1) {
+                baos.write(buffer, 0, len);
+            }
+            baos.flush();
+
+            InputStream is1 = new ByteArrayInputStream(baos.toByteArray());
+
+            return  storageService.uploadFromInputStream(is1, videoPath);
+        } catch (IOException e) {
+            log.error("上传失败", e);
+            throw new BusinessException("上传失败", e.getMessage());
+        }
+    }
 }
 }

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

@@ -59,7 +59,7 @@ public class PerformanceController extends BaseController {
 
 
     @PostMapping("/backAll")
     @PostMapping("/backAll")
     public Page<Performance> backAll(@RequestBody PageQuery pageQuery) {
     public Page<Performance> backAll(@RequestBody PageQuery pageQuery) {
-        Map<Long, Long> programme = programmeRepo.findAll()
+        Map<Long, Long> programme = programmeRepo.findAllByStatusGreaterThan(0)
                 .stream()
                 .stream()
                 .collect(Collectors.groupingBy(Programme::getPerformanceId, Collectors.counting()));
                 .collect(Collectors.groupingBy(Programme::getPerformanceId, Collectors.counting()));
         return performanceService.all(pageQuery)
         return performanceService.all(pageQuery)
@@ -79,7 +79,7 @@ public class PerformanceController extends BaseController {
     @GetMapping("/backGet/{id}")
     @GetMapping("/backGet/{id}")
     public Performance backGet(@PathVariable Long id) {
     public Performance backGet(@PathVariable Long id) {
         Performance performance = performanceRepo.findById(id).orElseThrow(new BusinessException("无记录"));
         Performance performance = performanceRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-        performance.setProgrammeNum(programmeRepo.countAllByPerformanceId(id));
+        performance.setProgrammeNum(programmeRepo.countAllByPerformanceIdAndStatusGreaterThan(id, 0));
         return performance;
         return performance;
     }
     }
 
 

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

@@ -1,10 +1,7 @@
 package com.izouma.wenlvju.web.performance;
 package com.izouma.wenlvju.web.performance;
 
 
 import com.izouma.wenlvju.domain.performance.Programme;
 import com.izouma.wenlvju.domain.performance.Programme;
-import com.izouma.wenlvju.dto.ArrangeProgrammeDTO;
-import com.izouma.wenlvju.dto.PageQuery;
-import com.izouma.wenlvju.dto.ProgrammeDTO;
-import com.izouma.wenlvju.dto.ProgrammeScoreDTO;
+import com.izouma.wenlvju.dto.*;
 import com.izouma.wenlvju.enums.SignedIn;
 import com.izouma.wenlvju.enums.SignedIn;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.performance.ProgrammeRepo;
 import com.izouma.wenlvju.repo.performance.ProgrammeRepo;
@@ -139,5 +136,16 @@ public class ProgrammeController extends BaseController {
     public ProgrammeScoreDTO getDTO(@PathVariable Long id) {
     public ProgrammeScoreDTO getDTO(@PathVariable Long id) {
         return programmeService.getDTO(id, SecurityUtils.getAuthenticatedUser().getId());
         return programmeService.getDTO(id, SecurityUtils.getAuthenticatedUser().getId());
     }
     }
+
+    @PostMapping("/firstAudit")
+    @ApiOperation("考级机构初审")
+    public void firstAudit(@RequestParam Long id, boolean pass) {
+        programmeService.firstAudit(id, pass);
+    }
+
+    public ProgrammeShowDTO getShow(Long id) {
+        return null;
+    }
+
 }
 }
 
 

BIN
src/main/resources/templates/Programme.xlsx


+ 42 - 12
src/main/vue/src/views/performance/ArrangeList.vue

@@ -28,7 +28,7 @@
                         <el-card shadow="hover" :body-style="{ padding: '20px' }" style="margin-bottom: 20px">
                         <el-card shadow="hover" :body-style="{ padding: '20px' }" style="margin-bottom: 20px">
                             <el-row :gutter="15">
                             <el-row :gutter="15">
                                 <el-col :span="12" :offset="0">
                                 <el-col :span="12" :offset="0">
-                                    <el-form-item label="活动日期" prop="dateRange">
+                                    <el-form-item label="活动日期" prop="dateRange" v-if="performance.online">
                                         <el-date-picker
                                         <el-date-picker
                                             v-model="dateRange"
                                             v-model="dateRange"
                                             value-format="yyyy-MM-dd"
                                             value-format="yyyy-MM-dd"
@@ -42,7 +42,13 @@
                                     </el-form-item>
                                     </el-form-item>
                                 </el-col>
                                 </el-col>
                                 <el-col :span="12" :offset="0">
                                 <el-col :span="12" :offset="0">
-                                    <el-form-item prop="address" class="flex" label="活动地点" style="width: 100%">
+                                    <el-form-item
+                                        prop="address"
+                                        class="flex"
+                                        label="活动地点"
+                                        style="width: 100%"
+                                        v-if="performance.online"
+                                    >
                                         <el-select v-model="form.address">
                                         <el-select v-model="form.address">
                                             <el-option
                                             <el-option
                                                 v-for="(item, index) in addresses"
                                                 v-for="(item, index) in addresses"
@@ -54,7 +60,7 @@
                                     </el-form-item>
                                     </el-form-item>
                                 </el-col>
                                 </el-col>
                                 <el-col :span="12">
                                 <el-col :span="12">
-                                    <el-form-item label="时间安排" prop="morning">
+                                    <el-form-item label="时间安排" prop="morning" v-if="performance.online">
                                         <el-checkbox v-model="form.morning" disabled>上午</el-checkbox>
                                         <el-checkbox v-model="form.morning" disabled>上午</el-checkbox>
                                         <el-time-select
                                         <el-time-select
                                             placeholder="起始时间"
                                             placeholder="起始时间"
@@ -86,19 +92,24 @@
 
 
                                 <el-col :span="6" :offset="0">
                                 <el-col :span="6" :offset="0">
                                     <el-form-item class="flex" label="分组节目数量" prop="quantity">
                                     <el-form-item class="flex" label="分组节目数量" prop="quantity">
-                                        <!-- <el-input-number type="number" v-model="form.quantity"></el-input-number> -->
-                                        <el-select v-model="form.quantity" clearable>
+                                        <el-input-number type="number" v-model="form.quantity"></el-input-number>
+                                        <!-- <el-select v-model="form.quantity" clearable>
                                             <el-option
                                             <el-option
                                                 v-for="item in nums"
                                                 v-for="item in nums"
                                                 :key="item"
                                                 :key="item"
                                                 :label="item"
                                                 :label="item"
                                                 :value="item"
                                                 :value="item"
                                             ></el-option>
                                             ></el-option>
-                                        </el-select>
+                                        </el-select> -->
                                     </el-form-item>
                                     </el-form-item>
                                 </el-col>
                                 </el-col>
                                 <el-col :span="6" :offset="0">
                                 <el-col :span="6" :offset="0">
-                                    <el-form-item class="flex" label="单个节目时长" prop="duration">
+                                    <el-form-item
+                                        class="flex"
+                                        label="单个节目时长"
+                                        prop="duration"
+                                        v-if="performance.online"
+                                    >
                                         <!-- <el-input-number type="number" v-model="form.duration"></el-input-number> -->
                                         <!-- <el-input-number type="number" v-model="form.duration"></el-input-number> -->
                                         <el-select v-model="form.duration" clearable>
                                         <el-select v-model="form.duration" clearable>
                                             <el-option
                                             <el-option
@@ -111,7 +122,7 @@
                                     </el-form-item>
                                     </el-form-item>
                                 </el-col>
                                 </el-col>
                                 <el-col :span="12" :offset="0">
                                 <el-col :span="12" :offset="0">
-                                    <el-form-item label=" " prop="afternoon">
+                                    <el-form-item label=" " prop="afternoon" v-if="performance.online">
                                         <el-checkbox v-model="form.afternoon" disabled>下午</el-checkbox>
                                         <el-checkbox v-model="form.afternoon" disabled>下午</el-checkbox>
 
 
                                         <el-time-select
                                         <el-time-select
@@ -178,9 +189,9 @@
         >
         >
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
             <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="address" label="活动地点"> </el-table-column>
+            <el-table-column prop="address" label="活动地点" v-if="performance.online"> </el-table-column>
             <el-table-column prop="name" label="分组名称" min-width="130"> </el-table-column>
             <el-table-column prop="name" label="分组名称" min-width="130"> </el-table-column>
-            <el-table-column label="时间安排" min-width="100">
+            <el-table-column label="时间安排" min-width="100" v-if="performance.online">
                 <template slot-scope="{ row }"> {{ getTime(row.startTime) }}-{{ getTime(row.endTime) }} </template>
                 <template slot-scope="{ row }"> {{ getTime(row.startTime) }}-{{ getTime(row.endTime) }} </template>
             </el-table-column>
             </el-table-column>
             <el-table-column prop="quantity" label="节目数量"> </el-table-column>
             <el-table-column prop="quantity" label="节目数量"> </el-table-column>
@@ -284,6 +295,7 @@ export default {
             downloading: false,
             downloading: false,
             form: {},
             form: {},
             performances: [],
             performances: [],
+            performance: {},
             addresses: [],
             addresses: [],
             addressList: [],
             addressList: [],
             timeRange: [null, null],
             timeRange: [null, null],
@@ -335,8 +347,9 @@ export default {
                             value: item.id
                             value: item.id
                         });
                         });
                     });
                     });
-                    // this.form.performanceId = res.content[0].id;
-                    // this.getData();
+                    this.form.performanceId = res.content[0].id;
+                    this.performance = res.content[0];
+                    this.getData();
                     this.$http
                     this.$http
                         .post(
                         .post(
                             '/performanceSchedule/all',
                             '/performanceSchedule/all',
@@ -541,6 +554,23 @@ export default {
                     this.$message.error(e.error);
                     this.$message.error(e.error);
                 });
                 });
         },
         },
+        submitOffline() {
+            let data = { ...this.form };
+
+            this.saving = true;
+            this.$http
+                .post('/arrange/group', data, { body: 'json' })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                    this.getData();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        },
         move(index, direction) {
         move(index, direction) {
             const start = index;
             const start = index;
             const end = direction + index;
             const end = direction + index;

+ 2 - 5
src/main/vue/src/views/performance/PerformanceEdit.vue

@@ -182,9 +182,6 @@ export default {
             }).then(() => {
             }).then(() => {
                 this.$http.post('/performance/lastYear').then(res => {
                 this.$http.post('/performance/lastYear').then(res => {
                     if (res != '') {
                     if (res != '') {
-                        if (res.programmeNum > 0) {
-                            this.edit = true;
-                        }
                         if (typeof res.performanceEnquiries != 'undefined') {
                         if (typeof res.performanceEnquiries != 'undefined') {
                             this.phones = res.performanceEnquiries;
                             this.phones = res.performanceEnquiries;
                         }
                         }
@@ -335,7 +332,7 @@ export default {
                         schedules.splice(index, 1);
                         schedules.splice(index, 1);
                     }
                     }
                     this.schedules = schedules;
                     this.schedules = schedules;
-                    this.$message.success('删除成功');
+                    // this.$message.success('删除成功');
                 })
                 })
                 .catch(e => {});
                 .catch(e => {});
         },
         },
@@ -345,7 +342,7 @@ export default {
                     const phones = [...this.phones];
                     const phones = [...this.phones];
                     phones.splice(index, 1);
                     phones.splice(index, 1);
                     this.phones = phones;
                     this.phones = phones;
-                    this.$message.success('删除成功');
+                    // this.$message.success('删除成功');
                 })
                 })
                 .catch(e => {});
                 .catch(e => {});
         },
         },

+ 1 - 0
src/main/vue/src/views/performance/PerformanceShow.vue

@@ -71,6 +71,7 @@
                                                 end-placeholder="结束时间"
                                                 end-placeholder="结束时间"
                                                 range-separator="至"
                                                 range-separator="至"
                                                 style="width: 240px"
                                                 style="width: 240px"
+                                                readonly
                                             >
                                             >
                                             </el-date-picker>
                                             </el-date-picker>
                                         </el-form-item>
                                         </el-form-item>

+ 3 - 0
src/main/vue/src/views/performance/ProgrammeEdit.vue

@@ -159,6 +159,9 @@
                         <el-form-item prop="instructor" label="指导老师">
                         <el-form-item prop="instructor" label="指导老师">
                             <el-input v-model="formData.instructor" class="width"></el-input>
                             <el-input v-model="formData.instructor" class="width"></el-input>
                         </el-form-item>
                         </el-form-item>
+                        <el-form-item prop="instructorPhone" label="联系电话">
+                            <el-input v-model="formData.instructorPhone" class="width"></el-input>
+                        </el-form-item>
                         <el-form-item
                         <el-form-item
                             prop="annex"
                             prop="annex"
                             label="作品图片"
                             label="作品图片"

+ 90 - 21
src/main/vue/src/views/performance/ProgrammeList.vue

@@ -161,7 +161,7 @@
             :height="tableHeight"
             :height="tableHeight"
         >
         >
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
             <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="节目编号" width="80"> </el-table-column>
             <el-table-column prop="name" label="节目名称"> </el-table-column>
             <el-table-column prop="name" label="节目名称"> </el-table-column>
             <el-table-column prop="specialty" label="参赛专业"> </el-table-column>
             <el-table-column prop="specialty" label="参赛专业"> </el-table-column>
             <el-table-column
             <el-table-column
@@ -172,7 +172,7 @@
             >
             >
             </el-table-column>
             </el-table-column>
             <el-table-column prop="level" label="参赛级别" min-width="70"> </el-table-column>
             <el-table-column prop="level" label="参赛级别" min-width="70"> </el-table-column>
-            <el-table-column prop="durationOfWork" label="作品时长" min-width="70"> </el-table-column>
+            <!-- <el-table-column prop="durationOfWork" label="作品时长" min-width="70"> </el-table-column> -->
             <el-table-column prop="quantity" label="参赛人数" min-width="70"> </el-table-column>
             <el-table-column prop="quantity" label="参赛人数" min-width="70"> </el-table-column>
             <el-table-column prop="contact" label="联系人" min-width="68"> </el-table-column>
             <el-table-column prop="contact" label="联系人" min-width="68"> </el-table-column>
             <el-table-column prop="phone" label="联系电话" min-width="95"> </el-table-column>
             <el-table-column prop="phone" label="联系电话" min-width="95"> </el-table-column>
@@ -180,13 +180,47 @@
             </el-table-column>
             </el-table-column>
             <el-table-column prop="organization" label="承办单位" 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 label="操作" align="left" fixed="right" min-width="280">
+            <el-table-column label="操作" align="left" fixed="right" min-width="320">
                 <template slot-scope="{ row }">
                 <template slot-scope="{ row }">
                     <el-button @click="showRow(row)" size="mini" plain>查看</el-button>
                     <el-button @click="showRow(row)" size="mini" plain>查看</el-button>
-                    <el-button type="warning" @click="playVideo(row)" size="mini" plain v-if="row.video"
-                        >浏览视频</el-button
+                    <el-button
+                        type="warning"
+                        @click="playImg(row)"
+                        v-if="
+                            row.specialty == '中国画' ||
+                                row.specialty == '美术' ||
+                                row.specialty == '西画' ||
+                                row.specialty == '书法' ||
+                                row.specialty == '漫画' ||
+                                row.specialty == '手工技艺' ||
+                                row.specialty == '摄影' ||
+                                row.specialty == '篆刻' ||
+                                row.specialty == '人物' ||
+                                row.specialty == '山水' ||
+                                row.specialty == '花鸟' ||
+                                row.specialty == '素描' ||
+                                row.specialty == '速写' ||
+                                row.specialty == '水粉画' ||
+                                row.specialty == '水彩画' ||
+                                row.specialty == '油画' ||
+                                row.specialty == '软笔书法' ||
+                                row.specialty == '硬笔书法' ||
+                                row.specialty == '剪纸' ||
+                                row.specialty == '泥塑' ||
+                                row.specialty == '年画' ||
+                                row.specialty == '皮影制作' ||
+                                row.specialty == '陶艺' ||
+                                row.specialty == '染织' ||
+                                row.specialty == '版画'
+                        "
+                        size="mini"
+                        plain
+                        >浏览图片</el-button
                     >
                     >
-                    <el-button @click="showCode(row)" type="primary" size="mini" plain>查看二维码</el-button>
+                    <el-button type="warning" @click="playVideo(row)" v-else size="mini" plain>浏览视频</el-button>
+                    <el-button @click="audit(row, true)" type="primary" size="mini" plain>通过</el-button>
+                    <el-button @click="audit(row, false)" type="danger" size="mini" plain>不通过</el-button>
+                    <!-- <el-button @click="showCode(row)" type="primary" size="mini" plain>查看二维码</el-button> -->
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
@@ -219,15 +253,7 @@
             </div>
             </div>
         </el-dialog>
         </el-dialog>
 
 
-        <el-dialog
-            class="videoDialog"
-            destroy-on-close
-            center
-            append-to-body
-            :visible.sync="showViedo"
-            @close="closeEvent"
-            width="70%"
-        >
+        <el-dialog class="videoDialog" destroy-on-close center append-to-body :visible.sync="showViedo" width="70%">
             <video
             <video
                 :src="videoUrl"
                 :src="videoUrl"
                 controlsList="nodownload noremote footbar"
                 controlsList="nodownload noremote footbar"
@@ -242,6 +268,9 @@
             </video>
             </video>
         </el-dialog>
         </el-dialog>
         <programme-log :dialogVisible="isShow" @close="closeDialog" ref="public"></programme-log>
         <programme-log :dialogVisible="isShow" @close="closeDialog" ref="public"></programme-log>
+        <el-dialog class="videoDialog" destroy-on-close center append-to-body :visible.sync="showImg" width="35%">
+            <img style="height: 100%; max-width: 100%" :src="annex" alt="" />
+        </el-dialog>
     </div>
     </div>
 </template>
 </template>
 <script>
 <script>
@@ -285,7 +314,9 @@ export default {
                 expandTrigger: 'hover'
                 expandTrigger: 'hover'
             },
             },
             showViedo: false,
             showViedo: false,
-            videoUrl: ''
+            showImg: false,
+            videoUrl: '',
+            annex: ''
         };
         };
     },
     },
     created() {
     created() {
@@ -415,7 +446,9 @@ export default {
         beforeGetData() {
         beforeGetData() {
             let data = {
             let data = {
                 sort: 'createdAt,desc',
                 sort: 'createdAt,desc',
-                query: {}
+                query: {
+                    status: 1
+                }
             };
             };
             if (this.form.competitionGroup) {
             if (this.form.competitionGroup) {
                 data.query.competitionGroup = this.form.competitionGroup;
                 data.query.competitionGroup = this.form.competitionGroup;
@@ -569,13 +602,49 @@ export default {
             }
             }
             return result;
             return result;
         },
         },
-        closeEvent() {
-            document.exitPictureInPicture();
-        },
+        // closeEvent() {
+        //     document.exitPictureInPicture();
+        // },
         playVideo(row) {
         playVideo(row) {
             this.showViedo = true;
             this.showViedo = true;
             this.videoUrl = row.video;
             this.videoUrl = row.video;
-            console.log(row.video);
+        },
+        playImg(row) {
+            this.showImg = true;
+            this.annex = row.annex;
+        },
+        audit(row, pass) {
+            this.$set(row, 'loading', true);
+
+            this.$confirm('审核后将不能修改或撤回,确认要审核吗?', '提示', {
+                confirmButtonText: '审核',
+                cancelButtonText: '取消',
+                type: 'warning'
+            })
+                .then(() => {
+                    this.$http
+                        .post('/programme/firstAudit', {
+                            id: row.id,
+                            pass: pass
+                        })
+                        .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);
+                });
         }
         }
     }
     }
 };
 };

+ 3 - 5
src/main/vue/src/views/performance/ProgrammeOrgList.vue

@@ -192,12 +192,10 @@
                 </template></el-table-column
                 </template></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 label="操作" align="center" fixed="right" min-width="340">
+            <el-table-column label="操作" align="center" fixed="right" min-width="270">
                 <template slot-scope="{ row }">
                 <template slot-scope="{ row }">
-                    <el-button @click="showRow(row)" size="mini" plain>查看</el-button>
-                    <el-button type="success" @click="editRow(row)" size="mini" plain v-if="row.status == 0"
-                        >编辑</el-button
-                    >
+                    <el-button @click="showRow(row)" size="mini" plain v-if="row.status == 0">查看</el-button>
+                    <el-button type="success" @click="editRow(row)" size="mini" plain v-else>编辑</el-button>
                     <el-button
                     <el-button
                         type="warning"
                         type="warning"
                         @click="playImg(row)"
                         @click="playImg(row)"

+ 3 - 0
src/main/vue/src/views/performance/ProgrammeShow.vue

@@ -122,6 +122,9 @@
                         <el-form-item prop="instructor" label="指导老师">
                         <el-form-item prop="instructor" label="指导老师">
                             <el-input v-model="formData.instructor" class="width" readonly></el-input>
                             <el-input v-model="formData.instructor" class="width" readonly></el-input>
                         </el-form-item>
                         </el-form-item>
+                        <el-form-item prop="instructorPhone" label="联系电话">
+                            <el-input v-model="formData.instructorPhone" class="width" readonly></el-input>
+                        </el-form-item>
                         <el-form-item
                         <el-form-item
                             prop="annex"
                             prop="annex"
                             label="作品图片"
                             label="作品图片"

+ 1 - 1
src/test/java/com/izouma/wenlvju/repo/UserRepoTest.java

@@ -74,7 +74,7 @@ public class UserRepoTest {
 
 
     @Test
     @Test
     public void test3() {
     public void test3() {
-        System.out.println(jwtTokenUtil.generateToken(JwtUserFactory.create(userRepo.findById(469L)
+        System.out.println(jwtTokenUtil.generateToken(JwtUserFactory.create(userRepo.findById(10148L)
                 .orElseThrow(new BusinessException("用户不存在")))));
                 .orElseThrow(new BusinessException("用户不存在")))));
     }
     }