Ver código fonte

Merge branch 'test' of licailing/wenlvju into master

licailing 4 anos atrás
pai
commit
6f82a2c44b

+ 1 - 0
src/main/h5/src/views/TrainingInstitution.vue

@@ -480,6 +480,7 @@ export default {
             `/trainingInstitution/byUscc?name=${this.form.name}&uscc=${this.form.uscc}`
           )
           .then(res => {
+            res.category = res.category || "";
             res.specialty = this.setSpecialty(res.specialty);
             this.$toast.clear();
             this.form = { ...res, ...this.form };

+ 26 - 0
src/main/java/com/izouma/wenlvju/enums/GradingOrganizationDTO.java

@@ -0,0 +1,26 @@
+package com.izouma.wenlvju.enums;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.izouma.wenlvju.domain.BaseEntity;
+import com.izouma.wenlvju.domain.GradingOrganization;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "考级机构")
+public class GradingOrganizationDTO extends BaseEntity {
+    @ExcelProperty(value = "编号")
+    private Long id;
+
+    @ExcelProperty(value = "名称")
+    private String name;
+
+    public GradingOrganizationDTO(GradingOrganization gradingOrganization) {
+        BeanUtil.copyProperties(gradingOrganization, this);
+    }
+}

+ 6 - 3
src/main/java/com/izouma/wenlvju/web/GradingOrganizationController.java

@@ -1,5 +1,7 @@
 package com.izouma.wenlvju.web;
+
 import com.izouma.wenlvju.domain.GradingOrganization;
+import com.izouma.wenlvju.enums.GradingOrganizationDTO;
 import com.izouma.wenlvju.service.GradingOrganizationService;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
@@ -20,13 +22,14 @@ import java.util.List;
 @AllArgsConstructor
 public class GradingOrganizationController extends BaseController {
     private GradingOrganizationService gradingOrganizationService;
-    private GradingOrganizationRepo gradingOrganizationRepo;
+    private GradingOrganizationRepo    gradingOrganizationRepo;
 
     @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public GradingOrganization save(@RequestBody GradingOrganization record) {
         if (record.getId() != null) {
-            GradingOrganization orig = gradingOrganizationRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            GradingOrganization orig = gradingOrganizationRepo.findById(record.getId())
+                    .orElseThrow(new BusinessException("无记录"));
             ObjUtils.merge(orig, record);
             return gradingOrganizationRepo.save(orig);
         }
@@ -54,7 +57,7 @@ public class GradingOrganizationController extends BaseController {
     @GetMapping("/excel")
     @ResponseBody
     public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<GradingOrganization> data = all(pageQuery).getContent();
+        List<GradingOrganizationDTO> data = all(pageQuery).map(GradingOrganizationDTO::new).getContent();
         ExcelUtils.export(response, data);
     }
 }

+ 1 - 0
src/main/vue/src/mixins/pageableTable.js

@@ -154,6 +154,7 @@ export default {
                 })
                 .catch(_ => {});
             this.sortStr = sortStr;
+            console.log(this.sortStr);
             this.getData();
         }
     }

+ 2 - 2
src/main/vue/src/plugins/http.js

@@ -5,9 +5,9 @@ import qs from 'qs';
 let baseUrl = 'http://localhost:8080';
 switch (process.env.NODE_ENV) {
     case 'development':
-        baseUrl = 'http://localhost:8080';
+        // baseUrl = 'http://localhost:8080';
         // baseUrl = 'http://wljtest.izouma.com';
-        // baseUrl = 'http://192.168.50.190:8080';
+        baseUrl = 'http://192.168.50.190:8080';
         break;
     case 'test':
         baseUrl = 'http://localhost:8080';

+ 10 - 11
src/main/vue/src/router.js

@@ -799,16 +799,6 @@ const router = new Router({
                     meta: {
                         title: '培训机构'
                     }
-                },
-                /**初审 */
-                {
-                    path: '/programmeGOList',
-                    name: 'ProgrammegoList',
-                    component: () =>
-                        import(/* webpackChunkName: "programmeList" */ '@/views/performance/ProgrammeGOList.vue'),
-                    meta: {
-                        title: '节目列表'
-                    }
                 }
                 /**INSERT_LOCATION**/
             ]
@@ -820,6 +810,15 @@ const router = new Router({
             meta: {
                 title: '登录'
             }
+        },
+        /**初审 */
+        {
+            path: '/programmeGOList',
+            name: 'ProgrammegoList',
+            component: () => import(/* webpackChunkName: "programmeList" */ '@/views/performance/ProgrammeGOList.vue'),
+            meta: {
+                title: '节目列表'
+            }
         }
     ]
 });
@@ -843,7 +842,7 @@ router.beforeEach((to, from, next) => {
         return;
     }
     // console.log(store.state.isORGANIZER);
-    if (!store.state.userInfo && to.path !== '/login') {
+    if (!store.state.userInfo && to.path !== '/login' && to.path !== '/programmeGOList') {
         store
             .dispatch('getUserInfo')
             .then(() => {

+ 38 - 366
src/main/vue/src/views/performance/ProgrammeGOList.vue

@@ -2,158 +2,9 @@
     <div class="list-view">
         <div class="filters-container">
             <el-form :model="form" inline size="mini" label-width="100px">
-                <el-row>
-                    <el-col :span="8">
-                        <el-form-item label="参赛专业">
-                            <el-cascader
-                                ref="artCascader"
-                                style="width: 100%"
-                                v-model="form.specialtyId"
-                                :props="optionProps"
-                                :options="artTypes"
-                                :show-all-levels="false"
-                                placeholder="请选择专业"
-                                clearable
-                            >
-                            </el-cascader>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="考级机构名称">
-                            <el-select
-                                v-model="form.gradingOrganizationId"
-                                clearable
-                                filterable
-                                placeholder="考级机构"
-                                style="width: 100%"
-                            >
-                                <el-option
-                                    v-for="item in gradingOrganizationIdOptions"
-                                    :key="item.value"
-                                    :label="item.label"
-                                    :value="item.value"
-                                >
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                        <el-form-item label="承办单位名称">
-                            <el-select
-                                v-model="form.organizationId"
-                                clearable
-                                filterable
-                                placeholder="承办单位"
-                                style="width: 100%"
-                            >
-                                <el-option
-                                    v-for="item in organizationIdOptions"
-                                    :key="item.value"
-                                    :label="item.label"
-                                    :value="item.value"
-                                >
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-col>
-                </el-row>
-                <el-collapse-transition>
-                    <div v-show="showMore">
-                        <el-row>
-                            <el-col :span="8"
-                                ><el-form-item label="考级点名称">
-                                    <el-input
-                                        placeholder="考级点名称"
-                                        v-model="search"
-                                        clearable
-                                    ></el-input> </el-form-item
-                            ></el-col>
-                            <el-col :span="8">
-                                <el-form-item label="节目名称">
-                                    <el-input placeholder="节目名称" v-model="form.name" clearable></el-input>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="8"
-                                ><el-form-item label="参赛组别">
-                                    <el-select
-                                        v-model="form.competitionGroup"
-                                        clearable
-                                        filterable
-                                        placeholder="参赛组别"
-                                    >
-                                        <el-option
-                                            v-for="item in competitionGroupOptions"
-                                            :key="item.value"
-                                            :label="item.label"
-                                            :value="item.value"
-                                        >
-                                        </el-option>
-                                    </el-select> </el-form-item
-                            ></el-col>
-                        </el-row>
-                        <el-row>
-                            <el-col :span="8"
-                                ><el-form-item label="参赛级别" v-if="form.competitionGroup">
-                                    <el-select
-                                        v-model="form.levelSettingId"
-                                        clearable
-                                        filterable
-                                        placeholder="参赛级别"
-                                        style="width: 100%"
-                                        v-if="form.competitionGroup == 'SINGLE'"
-                                    >
-                                        <el-option
-                                            v-for="item in levelSingleOptions"
-                                            :key="item.value"
-                                            :label="item.label"
-                                            :value="item.value"
-                                        >
-                                            <span style="float: left">{{ item.label }}</span>
-                                            <span style="float: right; color: #8492a6; font-size: 13px">{{
-                                                item.desc
-                                            }}</span>
-                                        </el-option>
-                                    </el-select>
-                                    <el-select
-                                        v-model="form.levelSettingId"
-                                        clearable
-                                        filterable
-                                        placeholder="请选择"
-                                        style="width: 100%"
-                                        v-else
-                                    >
-                                        <el-option
-                                            v-for="item in levelCollectiveOptions"
-                                            :key="item.value"
-                                            :label="item.label"
-                                            :value="item.value"
-                                        >
-                                            <span style="float: left">{{ item.label }}</span>
-                                            <span style="float: right; color: #8492a6; font-size: 13px">{{
-                                                item.desc
-                                            }}</span>
-                                        </el-option>
-                                    </el-select>
-                                </el-form-item></el-col
-                            >
-                        </el-row>
-                    </div>
-                </el-collapse-transition>
-                <div style="width:100%;textAlign:center;margin-bottom:10px;">
-                    <el-button
-                        class="more"
-                        round
-                        type="primary"
-                        :plain="!showMore"
-                        :icon="showMore ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"
-                        @click="showMore = !showMore"
-                        size="mini"
-                        >{{ showMore ? '隐藏查询区域' : '显示查询区域' }}</el-button
-                    >
-                </div>
                 <el-form-item>
-                    <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
-                    <el-button @click="clearSearch" type="primary">清空 </el-button>
+                    <!-- <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
+                    <el-button @click="clearSearch" type="primary">清空 </el-button> -->
                     <!-- <el-button @click="addRow" type="primary" icon="el-icon-plus">添加 </el-button> -->
                     <el-button
                         @click="download"
@@ -170,7 +21,7 @@
             :data="tableData"
             row-key="id"
             ref="table"
-            empty-text="加载中..."
+            empty-text="暂无数据"
             header-row-class-name="table-header-row"
             header-cell-class-name="table-header-cell"
             row-class-name="table-row"
@@ -192,15 +43,21 @@
             <!-- <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="contact" label="联系人" min-width="68"> </el-table-column>
-            <el-table-column prop="gradingOrganization" label="考级机构" show-overflow-tooltip min-width="160">
+            <el-table-column prop="gradingOrganizationId" label="考级机构" show-overflow-tooltip min-width="160">
                 <template slot="header" slot-scope="{ column }">
                     <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
                 </template>
+                <template slot-scope="{ row }">
+                    <span>{{ row.gradingOrganization }}</span>
+                </template>
             </el-table-column>
-            <el-table-column prop="organization" label="承办单位" min-width="160">
+            <el-table-column prop="organizationId" label="承办单位" min-width="160">
                 <template slot="header" slot-scope="{ column }">
                     <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
                 </template>
+                <template slot-scope="{ row }">
+                    <span>{{ row.organization }}</span>
+                </template>
             </el-table-column>
             <el-table-column prop="examPoint" label="考级点" min-width="160">
                 <template slot="header" slot-scope="{ column }">
@@ -233,7 +90,15 @@
             >
             </el-pagination>
         </div>
-        <el-dialog class="videoDialog" destroy-on-close center append-to-body :visible.sync="showViedo" width="70%">
+        <el-dialog
+            :title="programme.name"
+            class="videoDialog"
+            destroy-on-close
+            center
+            append-to-body
+            :visible.sync="showViedo"
+            width="auto"
+        >
             <video
                 :src="programme.video"
                 controls
@@ -242,10 +107,13 @@
             >
                 您的浏览器不支持 video 标签。
             </video>
-            <!-- <div style="width: 85%; height:600px;margin: 0 auto" v-if="programme.annex"> -->
-            <img style="max-height:600px; max-width: 100%; " :src="programme.annex" alt="" v-if="programme.annex" />
-            <!-- </div> -->
-            <div style="margin: 10px">
+            <img
+                style="max-height: 600px; max-width: 100%; display: block; margin: auto"
+                :src="programme.annex"
+                alt=""
+                v-if="programme.annex"
+            />
+            <div style="display: block; margin: 10px;">
                 <el-button size="mini" @click="move(-1)" :disabled="index == 0">上一个</el-button>
                 <el-button size="mini" @click="move(1)" :disabled="(page - 1) * pageSize + index == totalElements - 1"
                     >下一个</el-button
@@ -264,7 +132,6 @@ import ProgrammeLog from '@/components/ProgrammeLog1.vue';
 export default {
     name: 'ProgrammeList',
     mixins: [pageableTable, delChild],
-    props: ['review'],
     data() {
         return {
             multipleMode: false,
@@ -311,114 +178,7 @@ export default {
             index: 0
         };
     },
-    created() {
-        if (this.$route.query.pid) {
-            this.performanceId = Number(this.$route.query.pid);
-        }
-        this.$http
-            .post('/setting/byFlag', { flag: 3 })
-            .then(res => {
-                if (res.length > 0) {
-                    res.forEach(item => {
-                        this.levelSingleOptions.push({
-                            label: item.name,
-                            value: item.id,
-                            desc: item.code
-                        });
-                    });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
-        this.$http
-            .post('/setting/byFlag', { flag: 4 })
-            .then(res => {
-                if (res.length > 0) {
-                    res.forEach(item => {
-                        this.levelCollectiveOptions.push({
-                            label: item.name,
-                            value: item.id,
-                            desc: item.code
-                        });
-                    });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
-        this.$http
-            .post('/gradingOrganization/all', { size: 1000, query: { del: false } }, { body: 'json' })
-            .then(res => {
-                if (res.content.length > 0) {
-                    res.content.forEach(item => {
-                        this.gradingOrganizationIdOptions.push({
-                            label: item.name,
-                            value: item.id
-                        });
-                    });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
-        this.$http
-            .post('/organization/all', { size: 1000, query: { del: false } }, { body: 'json' })
-            .then(res => {
-                if (res.content.length > 0) {
-                    res.content.forEach(item => {
-                        this.organizationIdOptions.push({
-                            label: item.name,
-                            value: item.id
-                        });
-                    });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
-        this.$http
-            .post(
-                '/performance/all',
-                {
-                    size: 1000,
-                    sort: 'year,desc',
-                    query: {
-                        publish: true
-                    }
-                },
-                { body: 'json' }
-            )
-            .then(res => {
-                if (res.content.length > 0) {
-                    res.content.forEach(item => {
-                        this.performances.push({
-                            label: item.name,
-                            value: item.id
-                        });
-                    });
-                    this.performanceId = res.content[0].id;
-                    this.performance = res.content[0];
-                    this.getData();
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
-        this.$http
-            .post('/artType/allList')
-            .then(res => {
-                this.artTypes = this.delChild(res);
-            })
-            .catch(e => {
-                console.log(e);
-            });
-    },
+    created() {},
     components: {
         ProgrammeLog
     },
@@ -444,29 +204,12 @@ export default {
         },
         beforeGetData() {
             let data = {
-                sort: 'programmeStatus,desc',
                 query: {}
             };
-            if (this.form.competitionGroup) {
-                data.query.competitionGroup = this.form.competitionGroup;
-            }
-            if (this.form.levelSettingId) {
-                data.query.levelSettingId = this.form.levelSettingId;
-            }
-            if (this.form.gradingOrganizationId) {
-                data.query.gradingOrganizationId = this.form.gradingOrganizationId;
-            }
-            if (this.form.organizationId) {
-                data.query.organizationId = this.form.organizationId;
-            }
-            if (this.form.specialtyId) {
-                data.query.code = this.getCode(this.form.specialtyId);
-            }
-            if (this.performanceId) {
-                data.query.performanceId = this.performanceId;
-            }
-            if (this.form.name) {
-                data.query.name = this.form.name;
+            if (this.$route.query.gid) {
+                data.query.gradingOrganizationId = this.$route.query.gid;
+            } else {
+                data.query.gradingOrganizationId = 0;
             }
             return data;
         },
@@ -492,34 +235,17 @@ export default {
             this.downloading = true;
 
             let data = {
-                sort: 'programmeStatus,desc',
-                size: 1000,
+                sort: 'gradingOrganizationId,asc;organizationId,asc;examPoint,asc',
+                size: 2000,
                 query: {
                     programmeStatus: 'SUBMIT'
                 }
             };
-            if (this.form.competitionGroup) {
-                data.query.competitionGroup = this.form.competitionGroup;
-            }
-            if (this.form.levelSettingId) {
-                data.query.levelSettingId = this.form.levelSettingId;
-            }
-            if (this.form.gradingOrganizationId) {
-                data.query.gradingOrganizationId = this.form.gradingOrganizationId;
-            }
-            if (this.organizationId) {
-                data.query.form.organizationId = this.form.organizationId;
-            }
-            if (this.form.specialtyId) {
-                data.query.code = this.getCode(this.form.specialtyId);
-            }
-            if (this.performanceId) {
-                data.query.performanceId = this.performanceId;
-            }
-            if (this.form.name) {
-                data.query.name = this.form.name;
+            if (this.$route.query.gid) {
+                data.query.gradingOrganizationId = this.$route.query.gid;
+            } else {
+                data.query.gradingOrganizationId = 0;
             }
-
             this.$axios
                 .get('/programme/excelGO', {
                     responseType: 'blob',
@@ -551,21 +277,6 @@ export default {
         operation2() {
             this.$message('操作2');
         },
-        deleteRow(row) {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
-                .then(() => {
-                    return this.$http.post(`/programme/del/${row.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.getData();
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        this.$message.error(e.error);
-                    }
-                });
-        },
         clearSearch() {
             this.form = {};
             this.getData();
@@ -611,45 +322,6 @@ export default {
                 this.$message.success('暂无图片');
             }
         },
-        audit(row, status) {
-            this.$set(row, 'loading', true);
-            let str = '确认该节目未通过初选?',
-                remark = '未通过考级机构初选。';
-            if (status == 'SUBMIT') {
-                str = '确认撤回,撤回后可参加后续的审核。';
-                remark = '撤消未通过考级机构初选。';
-            }
-            this.$confirm(str, '提示', {
-                confirmButtonText: '确认',
-                cancelButtonText: '取消',
-                type: 'warning'
-            })
-                .then(() => {
-                    this.$http
-                        .post('/programme/firstAudit', {
-                            id: row.id,
-                            status: status,
-                            remark: remark
-                        })
-                        .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);
-                });
-        },
         playVideo(row, index) {
             this.index = index;
             this.showViedo = true;

+ 35 - 7
src/main/vue/src/views/performance/ProgrammeList.vue

@@ -226,9 +226,26 @@
             <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="gradingOrganization" label="考级机构" show-overflow-tooltip min-width="130">
+                <template slot="header" slot-scope="{ column }">
+                    <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
+                </template>
+                <template slot-scope="{ row }">
+                    <span>{{ row.gradingOrganization }}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="organization" label="承办单位" min-width="170">
+                <template slot="header" slot-scope="{ column }">
+                    <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
+                </template>
+                <template slot-scope="{ row }">
+                    <span>{{ row.organization }}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="examPoint" label="考级点" min-width="160">
+                <template slot="header" slot-scope="{ column }">
+                    <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
+                </template>
             </el-table-column>
-            <el-table-column prop="organization" label="承办单位" min-width="170"> </el-table-column>
-            <el-table-column prop="examPoint" label="考级点" min-width="160"> </el-table-column>
             <el-table-column
                 prop="programmeStatus"
                 label="节目状态"
@@ -341,7 +358,15 @@
                 <el-button @click="showViedo = false" size="mini">关闭</el-button>
             </div>
         </el-dialog> -->
-        <el-dialog class="videoDialog" destroy-on-close center append-to-body :visible.sync="showViedo" width="70%">
+        <el-dialog
+            :title="programme.name"
+            class="videoDialog"
+            destroy-on-close
+            center
+            append-to-body
+            :visible.sync="showViedo"
+            width="auto"
+        >
             <video
                 :src="programme.video"
                 controls
@@ -350,10 +375,13 @@
             >
                 您的浏览器不支持 video 标签。
             </video>
-            <!-- <div style="width: 85%; height:600px;margin: 0 auto" v-if="programme.annex"> -->
-            <img style="max-height:600px; max-width: 100%; " :src="programme.annex" alt="" v-if="programme.annex" />
-            <!-- </div> -->
-            <div style="margin: 10px">
+            <img
+                style="max-height: 600px; max-width: 100%; display: block; margin: auto"
+                :src="programme.annex"
+                alt=""
+                v-if="programme.annex"
+            />
+            <div style="display: block; margin: 10px;">
                 <el-button size="mini" @click="move(-1)" :disabled="index == 0">上一个</el-button>
                 <el-button size="mini" @click="move(1)" :disabled="(page - 1) * pageSize + index == totalElements - 1"
                     >下一个</el-button

+ 66 - 20
src/main/vue/src/views/performance/ProgrammeOrgList.vue

@@ -215,8 +215,26 @@
             <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="gradingOrganization" label="考级机构" show-overflow-tooltip min-width="160">
+                <template slot="header" slot-scope="{ column }">
+                    <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
+                </template>
+                <template slot-scope="{ row }">
+                    <span>{{ row.gradingOrganization }}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="organization" label="承办单位" min-width="180">
+                <template slot="header" slot-scope="{ column }">
+                    <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
+                </template>
+                <template slot-scope="{ row }">
+                    <span>{{ row.organization }}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="examPoint" label="考级点" min-width="160">
+                <template slot="header" slot-scope="{ column }">
+                    <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
+                </template>
             </el-table-column>
-            <el-table-column prop="organization" label="承办单位" min-width="180"> </el-table-column>
             <el-table-column
                 prop="programmeStatus"
                 label="节目状态"
@@ -225,7 +243,7 @@
             ></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="300">
-                <template slot-scope="{ row }">
+                <template slot-scope="{ row, $index }">
                     <el-button @click="showRow(row)" size="mini" plain>查看</el-button>
                     <el-button
                         type="success"
@@ -235,7 +253,7 @@
                         v-if="row.programmeStatus == 'INITIAL'"
                         >编辑</el-button
                     >
-                    <el-button
+                    <!-- <el-button
                         type="warning"
                         @click="playImg(row)"
                         v-if="
@@ -269,7 +287,8 @@
                         plain
                         >浏览图片</el-button
                     >
-                    <el-button type="warning" @click="playVideo(row)" v-else size="mini" plain>浏览视频</el-button>
+                    <el-button type="warning" @click="playVideo(row)" v-else size="mini" plain>浏览视频</el-button> -->
+                    <el-button type="warning" @click="playVideo(row, $index)" size="mini" plain>查看作品</el-button>
                     <el-button
                         @click="showCode(row)"
                         type="primary"
@@ -310,21 +329,36 @@
             </div>
         </el-dialog>
 
-        <el-dialog class="videoDialog" destroy-on-close center append-to-body :visible.sync="showViedo" width="70%">
+        <el-dialog
+            :title="programme.name"
+            class="videoDialog"
+            destroy-on-close
+            center
+            append-to-body
+            :visible.sync="showViedo"
+            width="auto"
+        >
             <video
-                :src="videoUrl"
-                controlsList="nodownload noremote footbar"
+                :src="programme.video"
                 controls
-                style="height: 600px; width: 100%"
-                oncontextmenu="return false;"
-                ref="video"
-                v-if="showViedo"
+                style="max-height: 600px; max-width: 100%; margin: 0 auto"
+                v-if="programme.video"
             >
                 您的浏览器不支持 video 标签。
             </video>
-        </el-dialog>
-        <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="" />
+            <img
+                style="max-height: 600px; max-width: 100%; display: block; margin: auto"
+                :src="programme.annex"
+                alt=""
+                v-if="programme.annex"
+            />
+            <div style="display: block; margin: 10px">
+                <el-button size="mini" @click="move(-1)" :disabled="index == 0">上一个</el-button>
+                <el-button size="mini" @click="move(1)" :disabled="(page - 1) * pageSize + index == totalElements - 1"
+                    >下一个</el-button
+                >
+                <el-button @click="showViedo = false" size="mini">关闭</el-button>
+            </div>
         </el-dialog>
     </div>
 </template>
@@ -380,7 +414,9 @@ export default {
                 { label: '初选未通过', value: 'AUDIT_FAILED' },
                 { label: '审核未通过', value: 'REVIEW_FAILED' }
             ],
-            loading: false
+            loading: false,
+            programme: {},
+            index: 0
         };
     },
     created() {
@@ -702,11 +738,11 @@ export default {
         // closeEvent() {
         //     document.exitPictureInPicture();
         // },
-        playVideo(row) {
-            console.log(row);
-            this.showViedo = true;
-            this.videoUrl = row.video;
-        },
+        // playVideo(row) {
+        //     console.log(row);
+        //     this.showViedo = true;
+        //     this.videoUrl = row.video;
+        // },
         playImg(row) {
             console.log(row);
             this.showImg = true;
@@ -743,6 +779,16 @@ export default {
                 this.add = false;
             }
             this.getData();
+        },
+        playVideo(row, index) {
+            this.index = index;
+            this.showViedo = true;
+            this.programme = row;
+        },
+        move(direction) {
+            const end = direction + this.index;
+            this.programme = { ...this.tableData[end] };
+            this.index = end;
         }
     }
 };