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

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

@@ -30,5 +30,5 @@ public class ArrangeJudge extends BaseEntity {
     private Long expertId;
 
     @ApiModelProperty(value = "审核状态")
-    private int status;
+    private int auditTimes;
 }

+ 5 - 2
src/main/java/com/izouma/wenlvju/repo/performance/ArrangeJudgeRepo.java

@@ -19,14 +19,17 @@ public interface ArrangeJudgeRepo extends JpaRepository<ArrangeJudge, Long>, Jpa
 
     List<ArrangeJudge> findAllByDateAndMorning(LocalDate date, boolean morning);
 
-    @Query("select distinct expertId from ArrangeJudge where date = ?1 and morning = ?2")
-    List<Long> findExpertByDateAndMorning(LocalDate date, boolean morning);
+    @Query("select distinct expertId from ArrangeJudge where date = ?1 and morning = ?2 and arrangeId not in ?3")
+    List<Long> findExpertByDateAndMorningAndArrangeIdNot(LocalDate date, boolean morning, Collection<Long> arrangeIds);
 
     @Query("update ArrangeJudge t set t.del = true where t.arrangeId in ?1")
     @Modifying
     @Transactional
     void cancelJudge(Collection<Long> arrangeIds);
 
+    @Query("select arrangeId from ArrangeJudge where expertId = ?1 and auditTimes = ?2")
+    List<Long> findArrangeIdByExpertIdAndAuditTimes(Long expertId, int auditTimes);
+
     @Query("select arrangeId from ArrangeJudge where expertId = ?1")
     List<Long> findArrangeIdByExpertId(Long expertId);
 

+ 4 - 2
src/main/java/com/izouma/wenlvju/service/performance/ArrangeJudgeService.java

@@ -43,13 +43,14 @@ public class ArrangeJudgeService {
         List<Long> expertIds = converter.convertToEntityAttribute(experts);
         List<Long> arrangeIds = converter.convertToEntityAttribute(arranges);
         Arrange arrange = arrangeRepo.findById(arrangeIds.get(0)).orElseThrow(new BusinessException("无分组"));
+        // 取消分配
+        this.cancelAssign(arranges);
 
         LocalDate date = arrange.getDate();
         Boolean morning = arrange.getMorning();
         if (ObjectUtil.isNotNull(date)) {
             // 线上需要时间段判断
-
-            List<Long> arrangeJudges = arrangeJudgeRepo.findExpertByDateAndMorning(date, morning);
+            List<Long> arrangeJudges = arrangeJudgeRepo.findExpertByDateAndMorningAndArrangeIdNot(date, morning, arrangeIds);
             if (CollUtil.isNotEmpty(arrangeJudges)) {
                 expertIds.forEach(id -> {
                     if (arrangeJudges.contains(id)) {
@@ -68,6 +69,7 @@ public class ArrangeJudgeService {
                                 .date(date)
                                 .morning(morning)
                                 .expertId(expertId)
+                                .auditTimes(arrange.getAuditTimes())
                                 .build())));
 
         arrangeJudgeRepo.saveAll(save);

+ 45 - 9
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeService.java

@@ -592,13 +592,32 @@ public class ProgrammeService {
     查看按分组查看节目
      */
     public Page<ArrangeProgrammeDTO> byArrange(PageQuery pageQuery) {
+        Map<String, Object> query = pageQuery.getQuery();
+        Boolean review = Convert.convert(Boolean.class, query.get("review"));
+        query.remove("review");
+        if (review) {
+            pageQuery.setSort("allSigned,asc;reviewArrangeId,desc;gradingOrganizationId,asc;organizationId,asc;");
+        } else {
+            pageQuery.setSort("allSigned,asc;arrangeId,desc;gradingOrganizationId,asc;organizationId,asc;");
+        }
         Page<Programme> all = programmeRepo.findAll((root, criteriaQuery, criteriaBuilder) -> {
             List<Predicate> and = JpaUtils.toPredicates(pageQuery, Programme.class, root, criteriaQuery, criteriaBuilder);
-            and.add(criteriaBuilder.isNotNull(root.get("arrangeId")));
+            if (review) {
+                and.add(criteriaBuilder.isNotNull(root.get("reviewArrangeId")));
+            } else {
+                and.add(criteriaBuilder.isNotNull(root.get("arrangeId")));
+            }
+
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         }, JpaUtils.toPageRequest(pageQuery));
 
-        Set<Long> arrangeIds = all.getContent().stream().map(Programme::getArrangeId).collect(Collectors.toSet());
+        Set<Long> arrangeIds = all.getContent().stream().map(programme -> {
+            if (review) {
+                return programme.getReviewArrangeId();
+            }
+            return programme.getArrangeId();
+        }).collect(Collectors.toSet());
+
         Map<Long, Arrange> arrangeMap = arrangeRepo.findAllById(arrangeIds)
                 .stream()
                 .collect(Collectors.toMap(Arrange::getId, arrange -> arrange));
@@ -610,7 +629,7 @@ public class ProgrammeService {
                 .collect(Collectors.toMap(GradingOrganization::getId, GradingOrganization::getName));
         return all.map(programme -> {
             ArrangeProgrammeDTO dto = new ArrangeProgrammeDTO(programme);
-            Arrange arrange = arrangeMap.get(programme.getArrangeId());
+            Arrange arrange = arrangeMap.get(review ? programme.getReviewArrangeId() : programme.getArrangeId());
             dto.setArrangeName(arrange.getName());
             dto.setWriterDirector(arrange.getWriterDirector());
             dto.setWriterPhone(arrange.getPhone());
@@ -630,7 +649,8 @@ public class ProgrammeService {
         programmeRepo.save(programme);
 
         //该状态
-        Performance performance = performanceRepo.findById(programme.getId()).orElseThrow(new BusinessException("无活动"));
+        Performance performance = performanceRepo.findById(programme.getPerformanceId())
+                .orElseThrow(new BusinessException("无活动"));
         if (PerformanceStatus.ARRANGE_JUDGE.equals(performance.getStatus())) {
             performance.setStatus(PerformanceStatus.SIGN_IN);
             performanceRepo.save(performance);
@@ -673,14 +693,25 @@ public class ProgrammeService {
     专家查看并打分
      */
     public Page<ProgrammeScoreDTO> byScore(PageQuery pageQuery, Long userId) {
-        List<Long> arrangeId = arrangeJudgeRepo.findArrangeIdByExpertId(userId);
+        // 是否复审
+        Map<String, Object> query = pageQuery.getQuery();
+        Integer auditTimes = Convert.convert(Integer.class, query.get("auditTimes"));
+        query.remove("auditTimes");
+
+        List<Long> arrangeId = arrangeJudgeRepo.findArrangeIdByExpertIdAndAuditTimes(userId, auditTimes);
         if (CollUtil.isEmpty(arrangeId)) {
             return new PageImpl<>(new ArrayList<>(), JpaUtils.toPageRequest(pageQuery), 0);
         }
+
         pageQuery.setSort("allScore,asc;arrangeId,asc;showBegin,asc;");
         Page<Programme> all = programmeRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
             List<Predicate> and = JpaUtils.toPredicates(pageQuery, Programme.class, root, criteriaQuery, criteriaBuilder);
-            and.add(root.get("arrangeId").in(arrangeId));
+            if (auditTimes > 1) {
+                and.add(root.get("reviewArrangeId").in(arrangeId));
+            } else {
+                and.add(root.get("arrangeId").in(arrangeId));
+            }
+
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         }), JpaUtils.toPageRequest(pageQuery));
 
@@ -727,9 +758,10 @@ public class ProgrammeService {
                 .stream()
                 .collect(Collectors.toMap(ArtType::getId, ArtType::getName));
 
-        Map<Long, String> arrangeMap = arrangeRepo.findAllById(arrangeId)
+        List<Arrange> arranges = arrangeRepo.findAllById(arrangeId);
+        Map<Long, Arrange> arrangeMap = arranges
                 .stream()
-                .collect(Collectors.toMap(Arrange::getId, Arrange::getName));
+                .collect(Collectors.toMap(Arrange::getId, arrange -> arrange));
 
         Map<Long, ProgrammeScore> scoreMap = programmeScoreRepo.findByProgrammeIdInAndExpertId(ids, userId)
                 .stream()
@@ -738,7 +770,11 @@ public class ProgrammeService {
         return all.map(programme -> {
             ProgrammeScoreDTO dto = new ProgrammeScoreDTO(programme);
             dto.setSpecialty(artTypeMap.get(programme.getSpecialtyId()));
-            dto.setArrangeName(arrangeMap.get(programme.getArrangeId()));
+            // 初审/复审
+            Arrange arrange = arranges.get(0);
+            dto.setArrangeName(arrangeMap.get(arrange.getAuditTimes() > 1 ? programme.getReviewArrangeId() : programme.getArrangeId())
+                    .getName());
+
             ProgrammeScore programmeScore = scoreMap.get(programme.getId());
             if (ObjectUtil.isNotNull(programmeScore)) {
                 dto.setMyScore(programmeScore.getScore());

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

@@ -128,7 +128,6 @@ public class ProgrammeController extends BaseController {
     @ApiOperation("签到列表")
     @PostMapping("/byArrange")
     public Page<ArrangeProgrammeDTO> byArrange(@RequestBody PageQuery pageQuery) {
-        pageQuery.setSort("allSigned,asc;arrangeId,desc;gradingOrganizationId,asc;organizationId,asc;");
         return programmeService.byArrange(pageQuery);
     }
 

+ 3 - 2
src/main/vue/src/components/ArrangeLog.vue

@@ -117,9 +117,10 @@ export default {
                 .then(res => {
                     this.saving = false;
                     this.$message.success('成功');
-                    this.getData();
+                    this.$parent.getData();
                     this.$forceUpdate();
-                    this.dialogVisible = false;
+                    // this.dialogVisible = false;
+                    this.closeDialog();
                 })
                 .catch(e => {
                     console.log(e);

+ 4 - 9
src/main/vue/src/components/OrganLog.vue

@@ -94,7 +94,8 @@ export default {
         },
         onSave() {
             let ids = this.id;
-            if (this.id.length > 1) {
+            // console.log(this.id instanceof Array);
+            if (this.id instanceof Array) {
                 ids = this.id.join(',');
             }
             if (this.userIds.length > 0) {
@@ -104,7 +105,7 @@ export default {
                         this.$message.success('添加成功');
                         this.dialogVisible = false;
                         setTimeout(() => {
-                            this.getData();
+                            this.$parent.getData();
                         }, 1000);
                         // console.log(res);
                     });
@@ -130,13 +131,7 @@ export default {
         },
         init(row) {
             this.id = row;
-            // this.emps = this.tableData.map(item => {
-            //     console.log(item);
-            //     return {
-            //         label: item.phone + '--' + item.specialtyName
-            //     };
-            // });
-            // });
+            this.expert = [];
             this.$http
                 .post('/user/all1', { query: { del: false }, size: 1000, sort: '' }, { body: 'json' })
                 .then(res => {

+ 17 - 4
src/main/vue/src/router.js

@@ -683,7 +683,7 @@ const router = new Router({
                             /* webpackChunkName: "progScoreAdminList" */ '@/views/performance/ProgScoreAdminList.vue'
                         ),
                     meta: {
-                        title: '得分列表'
+                        title: '节目评审'
                     }
                 },
                 {
@@ -753,20 +753,33 @@ const router = new Router({
                     path: '/signReviewList',
                     name: 'ProgrammeSignList',
                     component: () =>
-                        import(/* webpackChunkName: "programmeSignList" */ '@/views/performance/ProgrammeSignList.vue'),
+                        import(
+                            /* webpackChunkName: "programmeSignList" */ '@/views/performance/review/ProgrammeSignList.vue'
+                        ),
                     meta: {
                         title: '节目签到'
                     }
                 },
+                {
+                    path: '/scoreReviewList',
+                    name: 'ProgrammeScoreList',
+                    component: () =>
+                        import(
+                            /* webpackChunkName: "programmeScoreList" */ '@/views/performance/review/ProgrammeScoreList.vue'
+                        ),
+                    meta: {
+                        title: '节目评审'
+                    }
+                },
                 {
                     path: '/scoreAdminReviewList',
                     name: 'ProgScoreAdminList',
                     component: () =>
                         import(
-                            /* webpackChunkName: "progScoreAdminList" */ '@/views/performance/ProgScoreAdminList.vue'
+                            /* webpackChunkName: "progScoreAdminList" */ '@/views/performance/review/ProgScoreAdminList.vue'
                         ),
                     meta: {
-                        title: '得分列表'
+                        title: '节目评审'
                     }
                 }
                 /**INSERT_LOCATION**/

+ 7 - 1
src/main/vue/src/views/performance/ProgScoreAdminList.vue

@@ -206,6 +206,7 @@ import ReviewLog from '../../components/ReviewLog';
 export default {
     name: 'ProgScoreAdminList',
     mixins: [pageableTable, delChild],
+    props: ['review'],
     components: { ReviewLog },
     data() {
         return {
@@ -303,11 +304,16 @@ export default {
         beforeGetData() {
             let data = {
                 sort: 'score,desc',
-                query: {}
+                query: {
+                    programmeStatus: ['SUBMIT']
+                }
             };
             if (this.performanceId) {
                 data.query.performanceId = this.performanceId;
             }
+            if (!this.review) {
+                data.query.programmeStatus.push('REVIEW_FAILED');
+            }
             return data;
         },
         toggleMultipleMode(multipleMode) {

+ 0 - 432
src/main/vue/src/views/performance/ProgrammeScoreList copy.vue

@@ -1,432 +0,0 @@
-<template>
-    <div class="list-view">
-        <div class="filters-container">
-            <el-form :model="form" size="mini" inline>
-                <el-row>
-                    <el-col :span="24">
-                        <el-form-item label="活动名称">
-                            <el-select
-                                v-model="performanceId"
-                                clearable
-                                filterable
-                                placeholder="活动名称"
-                                style="width: 300px"
-                                @change="changeAddress"
-                            >
-                                <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>
-                            <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>
-                    <el-form-item label="评审专家"></el-form-item>
-                </el-row>
-            </el-form>
-        </div>
-        <el-table
-            :data="tableData"
-            row-key="id"
-            ref="table"
-            header-row-class-name="table-header-row"
-            header-cell-class-name="table-header-cell"
-            row-class-name="table-row"
-            cell-class-name="table-cell"
-            :height="tableHeight"
-            :span-method="objectSpanMethod"
-        >
-            <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="arrangeName" label="分组" min-width="160"> </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="participant" label="参赛人员" show-overflow-tooltip>
-                <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="score" label="成绩"> </el-table-column>
-            <el-table-column prop="myScore" label="评分" align="center" min-width="120">
-                <template slot-scope="{ row }">
-                    <span v-if="row.second">{{ row.myScore }}</span>
-                    <el-input-number
-                        v-else
-                        v-model="row.myScore"
-                        size="mini"
-                        label=""
-                        :min="0"
-                        :max="100"
-                        :step="1"
-                        :controls="true"
-                        controls-position="both"
-                        @change="saveScore(row)"
-                    >
-                    </el-input-number>
-                </template>
-            </el-table-column>
-            <el-table-column prop="remark" label="备注" align="center" min-width="120">
-                <template slot-scope="{ row }">
-                    <span v-if="row.second">{{ row.myScore }}</span>
-                    <el-input
-                        v-else
-                        size="mini"
-                        @change="saveScore(row)"
-                        v-model="row.remark"
-                        placeholder="请输入备注"
-                        clearable
-                    ></el-input>
-                </template>
-            </el-table-column>
-            <!-- <el-table-column label="操作" align="left" fixed="right" min-width="100">
-                <template slot-scope="{ row }">
-                    <el-button @click="showSign(row)" size="mini" plain type="primary">签到处理</el-button>
-                </template>
-            </el-table-column> -->
-        </el-table>
-        <div class="pagination-wrapper">
-            <!-- <div class="multiple-mode-wrapper">
-                <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
-                <el-button-group v-else>
-                    <el-button @click="operation1">批量操作1</el-button>
-                    <el-button @click="operation2">批量操作2</el-button>
-                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
-                </el-button-group>
-            </div> -->
-            <el-pagination
-                background
-                @size-change="onSizeChange"
-                @current-change="onCurrentChange"
-                :current-page="page"
-                :page-sizes="[10, 20, 30, 40, 50]"
-                :page-size="pageSize"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="totalElements"
-            >
-            </el-pagination>
-        </div>
-    </div>
-</template>
-<script>
-import delChild from '@/mixins/delChild';
-import { mapState } from 'vuex';
-import pageableTable from '@/mixins/pageableTable';
-import QrcodeVue from 'qrcode.vue';
-import { format, isSameDay, startOfDay } from 'date-fns';
-import endOfDay from 'date-fns/endOfDay';
-import addHours from 'date-fns/addHours';
-
-export default {
-    name: 'ProgrammeScoreList',
-    mixins: [pageableTable, delChild],
-    data() {
-        return {
-            multipleMode: false,
-            search: '',
-            url: '/programme/byScore',
-            downloading: false,
-            form: {},
-            dialogSign: false,
-            performanceId: '',
-            performances: [],
-            signedInOptions: [
-                { label: '已签到', value: 'SIGNED_IN' },
-                { label: '未签到', value: 'UNSIGNED' },
-                { label: '已调整', value: 'ADJUSTED' }
-            ],
-            signForm: {},
-            addresses: [],
-            morning: true,
-            date: new Date(),
-            columnKeys: ['arrangeName'],
-            addressList: []
-        };
-    },
-    created() {
-        this.morning = isSameDay(addHours(new Date(), 12), new Date());
-
-        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
-                        });
-                    });
-                    this.$http
-                        .post('/performanceSchedule/all', { size: 100 }, { body: 'json' })
-                        .then(res => {
-                            if (res.content.length > 0) {
-                                res.content.forEach(item => {
-                                    this.addressList.push({
-                                        value: item.address,
-                                        pid: item.performanceId
-                                    });
-                                });
-                            }
-                        })
-                        .catch(e => {
-                            console.log(e);
-                            this.$message.error(e.error);
-                        });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
-    },
-    computed: {
-        selection() {
-            return this.$refs.table.selection.map(i => i.id);
-        },
-        showTable() {
-            return this.backMap(this.tableData);
-        }
-    },
-    methods: {
-        signedInFormatter(row, column, cellValue, index) {
-            let selectedOption = this.signedInOptions.find(i => i.value === cellValue);
-            if (selectedOption) {
-                return selectedOption.label;
-            }
-            return '';
-        },
-        beforeGetData() {
-            let data = {
-                query: {}
-            };
-            if (this.performanceId) {
-                data.query.performanceId = this.performanceId;
-            }
-            if (this.date) {
-                if (this.morning) {
-                    data.query.showBegin = [
-                        format(startOfDay(this.date), 'yyyy-MM-dd HH:mm:ss'),
-                        format(this.date, 'yyyy-MM-dd') + ' 12:00:00'
-                    ].join(',');
-                } else {
-                    data.query.showBegin = [
-                        format(this.date, 'yyyy-MM-dd') + ' 12:00:00',
-                        format(endOfDay(this.date), 'yyyy-MM-dd HH:mm:ss')
-                    ].join(',');
-                }
-            }
-
-            return data;
-        },
-        toggleMultipleMode(multipleMode) {
-            this.multipleMode = multipleMode;
-            if (!multipleMode) {
-                this.$refs.table.clearSelection();
-            }
-        },
-        showSign(row) {
-            this.dialogSign = true;
-            this.signForm.id = row.id;
-        },
-        operation1() {
-            this.$notify({
-                title: '提示',
-                message: this.selection
-            });
-        },
-        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
-                })
-                .then(res => {
-                    this.$message.success('评分成功');
-                    this.getData();
-                })
-                .catch(e => {
-                    this.$message.error(e.error);
-                });
-        },
-        backMap(list, key = 'arrangeName', preActive = 0) {
-            let _map = new Map();
-            list.forEach((item, index) => {
-                let info = {
-                    active: index + preActive,
-                    childNum: 1,
-                    list: []
-                };
-                if (_map.has(item[key])) {
-                    info = _map.get(item[key]);
-                    info.list.push(item);
-                    info.childNum = info.list.length;
-                } else {
-                    info.list.push(item);
-                }
-
-                _map.set(item[key], info);
-            });
-
-            let keyIndex = this.columnKeys.indexOf(key);
-            if (keyIndex !== this.columnKeys.length - 1) {
-                [..._map.keys()].forEach(item => {
-                    let info = _map.get(item);
-                    let childMap = this.backMap(info.list, this.columnKeys[keyIndex + 1], info.active);
-                    _map.set(item, {
-                        ...info,
-                        childMap: childMap
-                    });
-                });
-            }
-
-            return _map;
-        },
-        getInfo(mapInfo = new Map(), keys = ['date']) {
-            let info = {};
-            keys.forEach(item => {
-                if (mapInfo.has(item)) {
-                    info = mapInfo.get(item);
-                    mapInfo = mapInfo.get(item).childMap;
-                }
-            });
-            return info;
-        },
-        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
-            let keyIndex = columnIndex;
-            // if (column.label === '操作') {
-            //     keyIndex = 2;
-            // }
-
-            if (keyIndex < this.columnKeys.length) {
-                let keys = [...this.columnKeys].slice(0, keyIndex + 1).map(item => {
-                    return row[item];
-                });
-                let info = this.getInfo(this.showTable, keys);
-                if (rowIndex === info.active) {
-                    return {
-                        rowspan: info.childNum,
-                        colspan: 1
-                    };
-                } else {
-                    return {
-                        rowspan: 0,
-                        colspan: 0
-                    };
-                }
-            }
-        }
-    }
-};
-</script>
-<style lang="less" scoped>
-.right {
-    float: right;
-}
-/deep/.el-form-item--mini.el-form-item,
-.el-form-item--small.el-form-item {
-    margin-bottom: 10px;
-}
-.videoDialog {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    .el-dialog {
-        max-width: 900px;
-        margin-top: 0px;
-
-        .close {
-            position: absolute;
-            right: 0px;
-            top: -42px;
-            width: 71px;
-            height: 32px;
-            background: #00000015;
-
-            font-size: 12px;
-            color: #fdffff;
-            line-height: 32px;
-            text-align: center;
-            cursor: pointer;
-
-            &:hover {
-                background: #00000055;
-            }
-        }
-    }
-    .el-dialog__header {
-        display: none;
-    }
-
-    .el-dialog__body {
-        padding: 0;
-
-        video {
-            display: block;
-            height: auto;
-            width: 100%;
-            outline: none;
-        }
-    }
-}
-</style>

+ 20 - 6
src/main/vue/src/views/performance/ProgrammeScoreList.vue

@@ -26,7 +26,7 @@
                             <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
                         </el-form-item>
                     </el-col>
-                    <div v-if="!performance.online">
+                    <div v-if="!online">
                         <el-form-item label="活动日期">
                             <el-date-picker v-model="date" type="date" placeholder="选择日期" class="filter-item">
                             </el-date-picker>
@@ -72,7 +72,7 @@
                 <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" v-if="!performance.online">
+            <el-table-column prop="signedIn" label="状态" :formatter="signedInFormatter" v-if="!online">
             </el-table-column>
             <el-table-column prop="score" label="成绩"> </el-table-column>
             <el-table-column prop="myScore" label="评分" align="center" min-width="120">
@@ -215,6 +215,7 @@ import addHours from 'date-fns/addHours';
 export default {
     name: 'ProgrammeScoreList',
     mixins: [pageableTable, delChild],
+    props: ['review'],
     data() {
         return {
             multipleMode: false,
@@ -239,7 +240,8 @@ export default {
             addressList: [],
             showViedo: false,
             programme: {},
-            index: 0
+            index: 0,
+            online: true
         };
     },
     created() {
@@ -265,8 +267,7 @@ export default {
                             value: item.id
                         });
                     });
-                    this.performanceId = res.content[0].id;
-                    this.performance = res.content[0];
+                    this.setPerformance(res.content[0]);
                     this.getData();
                     this.$http
                         .post('/performanceSchedule/all', { size: 100 }, { body: 'json' })
@@ -309,11 +310,16 @@ export default {
         },
         beforeGetData() {
             let data = {
-                query: {}
+                query: {
+                    auditTimes: 1
+                }
             };
             if (this.performanceId) {
                 data.query.performanceId = this.performanceId;
             }
+            if (this.review) {
+                data.query.auditTimes = this.performance.auditTimes || 1;
+            }
             // if (this.date) {
             //     if (this.morning) {
             //         data.query.showBegin = [
@@ -469,6 +475,14 @@ export default {
             const end = direction + this.index;
             this.programme = { ...this.tableData[end] };
             this.index = end;
+        },
+        setPerformance(row) {
+            this.form.performanceId = row.id;
+            this.performance = row;
+            this.online = row.online;
+            if (this.review) {
+                this.online = this.reviewOnline;
+            }
         }
     }
 };

+ 8 - 6
src/main/vue/src/views/performance/ProgrammeSignList.vue

@@ -69,15 +69,15 @@
             </el-table-column>
             <el-table-column prop="organization" label="承办单位" min-width="160"> </el-table-column>
             <el-table-column prop="name" label="节目名称" min-width="70"> </el-table-column>
-            <el-table-column label="表演时间" min-width="70" v-if="!performance.online"> </el-table-column>
+            <el-table-column label="表演时间" min-width="70" v-if="!online"> </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="phone" label="联系电话" min-width="95"> </el-table-column>
             <el-table-column prop="writerDirector" label="编导姓名"> </el-table-column>
             <el-table-column prop="writerPhone" label="联系电话"> </el-table-column>
-            <el-table-column prop="signedIn" label="状态" :formatter="signedInFormatter" v-if="!performance.online">
+            <el-table-column prop="signedIn" label="状态" :formatter="signedInFormatter" v-if="!online">
             </el-table-column>
-            <el-table-column label="操作" align="left" fixed="right" min-width="100" v-if="!performance.online">
+            <el-table-column label="操作" align="left" fixed="right" min-width="100" v-if="!online">
                 <template slot-scope="{ row }">
                     <el-button @click="showSign(row)" size="mini" plain type="primary">签到处理</el-button>
                 </template>
@@ -187,8 +187,7 @@ export default {
                             value: item.id
                         });
                     });
-                    this.form.performanceId = res.content[0].id;
-                    this.performance = res.content[0];
+                    this.setPerformance(res.content[0]);
                     this.getData();
                     this.$http
                         .post('/performanceSchedule/all', { size: 100 }, { body: 'json' })
@@ -265,7 +264,10 @@ export default {
         beforeGetData() {
             let data = {
                 search: this.search,
-                query: { performanceId: this.form.performanceId }
+                query: {
+                    performanceId: this.form.performanceId,
+                    review: this.review || false
+                }
             };
             if (this.form.address) {
                 data.query.address = this.form.address;

+ 12 - 0
src/main/vue/src/views/performance/review/ProgrammeScoreList.vue

@@ -0,0 +1,12 @@
+<template>
+    <programme-score-list :review="true"></programme-score-list>
+</template>
+<script>
+import ProgrammeScoreList from '@/views/performance/ProgrammeScoreList';
+export default {
+    components: {
+        ProgrammeScoreList
+    }
+};
+</script>
+<style lang="less" scoped></style>

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

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