licailing 4 yıl önce
ebeveyn
işleme
05d914f7ee

+ 2 - 1
src/main/h5/src/views/Home.vue

@@ -365,7 +365,8 @@ export default {
       this.$http
         .post("/programmeScore/saveScore", {
           programmeId: this.info.id,
-          score: this.socre
+          score: this.socre,
+          performanceId: this.info.performanceId
         })
         .then(res => {
           this.$toast.success("评分成功");

+ 2 - 1
src/main/h5/src/views/programme/programmeDetail.vue

@@ -244,7 +244,8 @@ export default {
       this.$http
         .post("/programmeScore/saveScore?programmeId=" + this.info.id, {
           score: this.score,
-          remark: this.message
+          remark: this.message,
+          performanceId: this.info.performanceId
         })
         .then(res => {
           this.$toast.success("评分成功");

+ 4 - 0
src/main/java/com/izouma/wenlvju/domain/performance/ProgrammeScore.java

@@ -2,6 +2,7 @@ package com.izouma.wenlvju.domain.performance;
 
 import com.izouma.wenlvju.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -37,4 +38,7 @@ public class ProgrammeScore extends BaseEntity {
 
     private Long expertId;
 
+    @ApiModelProperty(value = "审核次数")
+    private int auditTimes;
+
 }

+ 2 - 0
src/main/java/com/izouma/wenlvju/dto/ProgrammeScoreDTO.java

@@ -19,6 +19,8 @@ import java.util.List;
 public class ProgrammeScoreDTO {
     private Long id;
 
+    private Long performanceId;
+
     @ApiModelProperty(value = "分组")
     private String arrangeName;
 

+ 7 - 1
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeScoreService.java

@@ -3,8 +3,11 @@ package com.izouma.wenlvju.service.performance;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.izouma.wenlvju.domain.performance.Performance;
 import com.izouma.wenlvju.domain.performance.ProgrammeScore;
 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.ProgrammeRepo;
 import com.izouma.wenlvju.repo.performance.ProgrammeScoreRepo;
 import com.izouma.wenlvju.utils.JpaUtils;
@@ -22,20 +25,23 @@ public class ProgrammeScoreService {
 
     private ProgrammeScoreRepo programmeScoreRepo;
     private ProgrammeRepo      programmeRepo;
+    private PerformanceRepo    performanceRepo;
 
     public Page<ProgrammeScore> all(PageQuery pageQuery) {
         return programmeScoreRepo.findAll(JpaUtils.toSpecification(pageQuery, ProgrammeScore.class), JpaUtils.toPageRequest(pageQuery));
     }
 
-    public void saveScore(Long programmeId, Double score, String remark, Long userId) {
+    public void saveScore(Long programmeId, Double score, String remark, Long performanceId, Long userId) {
         ProgrammeScore programmeScore = programmeScoreRepo.findByProgrammeIdAndExpertId(programmeId, userId);
         LocalDateTime now = LocalDateTime.now();
         if (ObjectUtil.isNull(programmeScore)) {
+            Performance performance = performanceRepo.findById(performanceId).orElseThrow(new BusinessException("无活动"));
             programmeScore = ProgrammeScore.builder()
                     .expertId(userId)
                     .programmeId(programmeId)
                     .score(score)
                     .markAt(now)
+                    .auditTimes(performance.getAuditTimes())
                     .remark(remark)
                     .build();
         } else {

+ 6 - 7
src/main/java/com/izouma/wenlvju/web/performance/ProgrammeScoreController.java

@@ -2,20 +2,18 @@ package com.izouma.wenlvju.web.performance;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.wenlvju.domain.User;
-import com.izouma.wenlvju.utils.SecurityUtils;
-import com.izouma.wenlvju.web.BaseController;
 import com.izouma.wenlvju.domain.performance.ProgrammeScore;
-import com.izouma.wenlvju.service.performance.ProgrammeScoreService;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.performance.ProgrammeScoreRepo;
+import com.izouma.wenlvju.service.performance.ProgrammeScoreService;
 import com.izouma.wenlvju.utils.ObjUtils;
+import com.izouma.wenlvju.utils.SecurityUtils;
 import com.izouma.wenlvju.utils.excel.ExcelUtils;
-
+import com.izouma.wenlvju.web.BaseController;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -66,8 +64,9 @@ public class ProgrammeScoreController extends BaseController {
 
     @ApiOperation("专家手机端打分")
     @PostMapping("/saveScore")
-    public void saveScore(@RequestParam Long programmeId, Double score, String remark) {
-        programmeScoreService.saveScore(programmeId, score, remark, SecurityUtils.getAuthenticatedUser().getId());
+    public void saveScore(@RequestParam Long programmeId, Double score, String remark, @RequestParam Long performanceId) {
+        programmeScoreService.saveScore(programmeId, score, remark, performanceId, SecurityUtils.getAuthenticatedUser()
+                .getId());
     }
 
     @ApiOperation("打分细则")

+ 82 - 62
src/main/vue/src/views/performance/ProgrammeScoreList.vue

@@ -26,26 +26,28 @@
                             <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
                         </el-form-item>
                     </el-col>
-                    <!-- <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 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>
@@ -70,7 +72,8 @@
                 <template slot-scope="{ row }">{{ row.participant.join(',') }}</template>
             </el-table-column>
             <el-table-column prop="quantity" label="表演人数" min-width="70"> </el-table-column>
-            <!-- <el-table-column prop="signedIn" label="状态" :formatter="signedInFormatter"> </el-table-column> -->
+            <el-table-column prop="signedIn" label="状态" :formatter="signedInFormatter" v-if="!performance.online">
+            </el-table-column>
             <el-table-column prop="score" label="成绩"> </el-table-column>
             <el-table-column prop="myScore" label="评分" align="center" min-width="120">
                 <template slot-scope="{ row }">
@@ -104,8 +107,8 @@
                 </template>
             </el-table-column>
             <el-table-column label="操作" align="left" fixed="right" min-width="100">
-                <template slot-scope="{ row }">
-                    <el-button @click="playVideo(row)" size="mini" plain type="primary">查看作品</el-button>
+                <template slot-scope="{ row, $index }">
+                    <el-button @click="playVideo(row, $index)" size="mini" plain type="primary">查看作品</el-button>
                 </template>
             </el-table-column>
         </el-table>
@@ -132,44 +135,51 @@
         </div>
 
         <el-dialog class="videoDialog" destroy-on-close center append-to-body :visible.sync="showViedo" width="70%">
-            <video :src="programme.video" controls style="height: 80%; max-width: 80%; margin: 0 auto">
+            <video :src="programme.video" controls style="height: 85%; max-width: 85%; margin: 0 auto">
                 您的浏览器不支持 video 标签。
             </video>
-            <el-form>
-                <el-form-item label="分数">
-                    <span v-if="programme.second">{{ programme.myScore }}</span>
-                    <el-input-number
-                        v-else
-                        v-model="programme.myScore"
-                        size="mini"
-                        label=""
-                        :min="0"
-                        :max="100"
-                        :step="1"
-                        :controls="true"
-                        controls-position="both"
-                        @change="saveScore(row)"
-                    >
-                    </el-input-number>
-                </el-form-item>
-                <el-form-item label="备注">
-                    <span v-if="programme.second">{{ programme.remark }}</span>
-                    <el-input
-                        v-else
-                        size="mini"
-                        @change="saveScore(row)"
-                        v-model="programme.remark"
-                        placeholder="请输入备注"
-                        style="width: 200px"
-                        clearable
-                    ></el-input>
-                </el-form-item>
-                <el-form-item>
-                    <el-button size="mini">保存</el-button>
-                    <el-button size="mini">上一个</el-button>
-                    <el-button size="mini">下一个</el-button>
-                </el-form-item>
-            </el-form>
+            <el-card shadow="never" style="width: 85%; margin: 10px auto">
+                <el-form :form="programme">
+                    <el-form-item label="分数">
+                        <span v-if="programme.second">{{ programme.myScore }}</span>
+                        <el-input-number
+                            v-else
+                            v-model="programme.myScore"
+                            size="mini"
+                            label=""
+                            :min="0"
+                            :max="100"
+                            :step="1"
+                            :controls="true"
+                            controls-position="both"
+                            @change="saveScore(row)"
+                        >
+                        </el-input-number>
+                    </el-form-item>
+                    <el-form-item label="备注">
+                        <span v-if="programme.second">{{ programme.remark }}</span>
+                        <el-input
+                            v-else
+                            size="mini"
+                            @change="saveScore(row)"
+                            v-model="programme.remark"
+                            placeholder="请输入备注"
+                            style="width: 200px"
+                            clearable
+                        ></el-input>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-button size="mini" v-if="!programme.second">保存</el-button>
+                        <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"
+                            >下一个</el-button
+                        >
+                    </el-form-item>
+                </el-form>
+            </el-card>
             <!-- <video
                 :src="videoUrl"
                 controlsList="nodownload noremote footbar"
@@ -205,6 +215,7 @@ export default {
             dialogSign: false,
             performanceId: '',
             performances: [],
+            performance: {},
             signedInOptions: [
                 { label: '已签到', value: 'SIGNED_IN' },
                 { label: '未签到', value: 'UNSIGNED' },
@@ -217,7 +228,8 @@ export default {
             columnKeys: ['arrangeName'],
             addressList: [],
             showViedo: false,
-            programme: {}
+            programme: {},
+            index: 0
         };
     },
     created() {
@@ -244,6 +256,7 @@ export default {
                         });
                     });
                     this.performanceId = res.content[0].id;
+                    this.performance = res.content[0];
                     this.getData();
                     this.$http
                         .post('/performanceSchedule/all', { size: 100 }, { body: 'json' })
@@ -354,7 +367,8 @@ export default {
             this.$http
                 .post('/programmeScore/saveScore?programmeId=' + row.id, {
                     score: row.myScore,
-                    remark: row.remark
+                    remark: row.remark,
+                    performanceId: row.performanceId
                 })
                 .then(res => {
                     this.$message.success('评分成功');
@@ -431,13 +445,19 @@ export default {
                 }
             }
         },
-        playVideo(row) {
+        playVideo(row, index) {
+            this.index = index;
             if (row.video) {
                 this.showViedo = true;
                 this.programme = row;
             } else {
                 this.$message.success('暂无视频');
             }
+        },
+        move(direction) {
+            const end = direction + this.index;
+            this.programme = { ...this.tableData[end] };
+            this.index = end;
         }
     }
 };

+ 1 - 1
src/test/java/com/izouma/wenlvju/service/performance/ProgrammeScoreServiceTest.java

@@ -13,7 +13,7 @@ public class ProgrammeScoreServiceTest extends ApplicationTests {
 
     @Test
     public void test() {
-        programmeScoreService.saveScore(1346L, null, null, 1L);
+        programmeScoreService.saveScore(1346L, null, null, 1013L, 1L);
     }
 
     @Test