licailing 5 ani în urmă
părinte
comite
1bd91832da

+ 5 - 1
src/main/java/com/izouma/wenlvju/domain/PerformanceApply.java

@@ -37,5 +37,9 @@ public class PerformanceApply extends BaseEntity {
     @ApiModelProperty(value = "状态")
     private ApplyStatus   status;
     @ApiModelProperty(value = "表演时间")
-    public  LocalDateTime showTime;
+    private LocalDateTime showTime;
+    @ApiModelProperty(value = "奖项")
+    private String        awards;
+    private Integer       score;
+
 }

+ 2 - 0
src/main/java/com/izouma/wenlvju/repo/PerformanceApplyRepo.java

@@ -17,4 +17,6 @@ public interface PerformanceApplyRepo extends JpaRepository<PerformanceApply, Lo
     void softDelete(Long id);
 
     List<PerformanceApply> findAllByStatusAndPerformanceId(ApplyStatus status, Long performanceId);
+
+    List<PerformanceApply> findAllByShowTimeIsNotNullAndPerformanceId(Long performanceId);
 }

+ 19 - 3
src/main/java/com/izouma/wenlvju/service/PerformanceApplyService.java

@@ -47,11 +47,11 @@ public class PerformanceApplyService {
                 performanceApplyRepo.findAllByStatusAndPerformanceId(ApplyStatus.PASS, performanceId);
 
         List<PerformanceApply> showTime = applyList.stream()
-                .filter(apply -> apply.showTime != null)
-                .sorted((a, b) -> b.showTime.compareTo(a.getShowTime()))
+                .filter(apply -> apply.getShowTime() != null)
+                .sorted((a, b) -> b.getShowTime().compareTo(a.getShowTime()))
                 .collect(Collectors.toList());
         List<PerformanceApply> showTimeNull = applyList.stream()
-                .filter(apply -> apply.showTime == null)
+                .filter(apply -> apply.getShowTime() == null)
                 .collect(Collectors.toList());
 
         if (CollUtil.isEmpty(showTimeNull)) {
@@ -75,4 +75,20 @@ public class PerformanceApplyService {
             time[0] = time[0].plusMinutes(10);
         });
     }
+
+    /*
+    自动评奖
+     */
+    public void autoAwards(Long performanceId) {
+        List<PerformanceApply> applies = performanceApplyRepo.findAllByShowTimeIsNotNullAndPerformanceId(performanceId);
+        if (CollUtil.isEmpty(applies)) {
+            return;
+        }
+        applies.forEach(apply -> {
+            apply.setAwards("一等奖");
+            apply.setScore(100);
+            performanceApplyRepo.save(apply);
+        });
+    }
+
 }

+ 16 - 0
src/main/java/com/izouma/wenlvju/service/UserService.java

@@ -7,6 +7,7 @@ import com.izouma.wenlvju.config.Constants;
 import com.izouma.wenlvju.domain.User;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.dto.UserRegister;
+import com.izouma.wenlvju.enums.AuthorityName;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.UserRepo;
 import com.izouma.wenlvju.security.Authority;
@@ -28,6 +29,9 @@ import org.springframework.data.domain.Page;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 
+import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.SetJoin;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -181,4 +185,16 @@ public class UserService {
         }
         return setPassword(userId, password);
     }
+
+    public Page<User> all1(PageQuery pageQuery) {
+        return userRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
+            List<Predicate> and = JpaUtils.toPredicates(pageQuery,User.class,root,criteriaQuery,criteriaBuilder);
+            // 只有专家权限
+            SetJoin<User, Authority> join = root.join(root.getModel()
+                    .getSet("authorities", Authority.class), JoinType.LEFT);
+            and.add(join.in(Authority.get(AuthorityName.ROLE_EXPERT)));
+            return criteriaBuilder.and(and.toArray(new Predicate[0]));
+
+        }), JpaUtils.toPageRequest(pageQuery));
+    }
 }

+ 6 - 0
src/main/java/com/izouma/wenlvju/web/PerformanceApplyController.java

@@ -71,5 +71,11 @@ public class PerformanceApplyController extends BaseController {
     public void autoArrangement(@RequestParam Long performanceId) {
         performanceApplyService.autoArrangement(performanceId);
     }
+
+    @PostMapping("/autoAwards")
+    @ApiOperation("自动评奖")
+    public void autoAwards(@RequestParam Long performanceId) {
+        performanceApplyService.autoAwards(performanceId);
+    }
 }
 

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

@@ -45,10 +45,10 @@ public class RegulatoryController extends BaseController {
         return regulatoryRepo.save(record);
     }
 
-
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/all")
     public Page<Regulatory> all(@RequestBody PageQuery pageQuery) {
+        pageQuery.setSort("createdAt,desc");
         return regulatoryService.all(pageQuery);
     }
 

+ 6 - 1
src/main/java/com/izouma/wenlvju/web/UserController.java

@@ -75,12 +75,17 @@ public class UserController extends BaseController {
                 .orElseThrow(new BusinessException("用户不存在"));
     }
 
-//    @PreAuthorize("hasRole('ADMIN')")
+    //    @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/all")
     public Page<User> all(@RequestBody PageQuery pageQuery) {
         return userService.all(pageQuery);
     }
 
+    @PostMapping("/all1")
+    public Page<User> all1(@RequestBody PageQuery pageQuery) {
+        return userService.all1(pageQuery);
+    }
+
     @PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/get/{id}")
     public User get(@PathVariable Long id) {

BIN
src/main/vue/src/assets/arrangement.png


+ 16 - 0
src/main/vue/src/router.js

@@ -87,6 +87,14 @@ const router = new Router({
                         title: '用户管理'
                     }
                 },
+                {
+                    path: '/expertList',
+                    name: 'expertList',
+                    component: () => import(/* webpackChunkName: "userList" */ '@/views/ExpertList.vue'),
+                    meta: {
+                        title: '专家管理'
+                    }
+                },
                 {
                     path: '/sysConfigList',
                     name: 'sysConfigList',
@@ -119,6 +127,14 @@ const router = new Router({
                         title: '监管管理'
                     }
                 },
+                {
+                    path: '/recordDistrictList2',
+                    name: 'RecordDistrictList2',
+                    component: () => import(/* webpackChunkName: "recordList" */ '@/views/RecordDistrictList2.vue'),
+                    meta: {
+                        title: '监管管理'
+                    }
+                },
                 {
                     path: '/recordDistrictList',
                     name: 'RecordList',

+ 174 - 0
src/main/vue/src/views/ExpertList.vue

@@ -0,0 +1,174 @@
+<template>
+    <div class="list-view">
+        <div class="filters-container">
+            <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
+            <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button>
+            <el-button @click="addRow" type="primary" icon="el-icon-plus" class="filter-item">添加 </el-button>
+            <!-- <el-button
+                @click="download"
+                type="primary"
+                icon="el-icon-download"
+                :loading="downloading"
+                class="filter-item"
+                >导出EXCEL
+            </el-button> -->
+        </div>
+        <el-table
+            :data="tableData"
+            row-key="id"
+            ref="table"
+            height="tableHeight"
+            header-row-class-name="table-header-row"
+            header-cell-class-name="table-header-cell"
+            row-class-name="table-row"
+            cell-class-name="table-cell"
+        >
+            <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="username" label="用户名" min-width="300"> </el-table-column>
+            <el-table-column prop="nickname" label="昵称" min-width="300"> </el-table-column>
+            <el-table-column label="头像" min-width="300">
+                <template slot-scope="{ row }">
+                    <el-image
+                        style="width: 30px; height: 30px;"
+                        :src="row.avatar"
+                        fit="cover"
+                        :preview-src-list="[row.avatar]"
+                    ></el-image>
+                </template>
+            </el-table-column>
+            <el-table-column label="操作" align="center" fixed="right">
+                <template slot-scope="{ row }">
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <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 { mapState } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+import ClipboardJS from 'clipboard';
+const clickData = {};
+export default {
+    mixins: [pageableTable],
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/user/all1',
+            downloading: false
+        };
+    },
+    computed: {
+        ...mapState([]),
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        }
+    },
+    methods: {
+        beforeGetData() {
+            if (this.search) {
+                return { search: this.search };
+            }
+        },
+        toggleMultipleMode(multipleMode) {
+            this.multipleMode = multipleMode;
+            if (!multipleMode) {
+                this.$refs.table.clearSelection();
+            }
+        },
+        addRow() {
+            this.$router.push({
+                path: '/userEdit',
+                query: {
+                    ...this.$route.query
+                }
+            });
+        },
+        editRow(row) {
+            this.$router.push({
+                path: '/userEdit',
+                query: {
+                    id: row.id
+                }
+            });
+        },
+        download() {
+            this.downloading = true;
+            this.$axios
+                .get('/user/excel', { responseType: 'blob' })
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        operation1() {
+            this.$notify({
+                title: '提示',
+                message: this.selection
+            });
+        },
+        operation2() {
+            this.$message('操作2');
+        },
+        clickId(row) {
+            if (row.id !== clickData.id) {
+                clickData.id = row.id;
+                clickData.c = 0;
+            }
+            clickData.c = (clickData.c || 0) + 1;
+            if (clickData.i) {
+                clearInterval(clickData.i);
+            }
+            clickData.i = setTimeout(_ => {
+                clickData.c = 0;
+            }, 200);
+            if (clickData.c === 5) {
+                this.$http
+                    .get(`/user/getToken/${row.id}`)
+                    .then(res => {
+                        let el = document.createElement('div');
+                        new ClipboardJS(el, {
+                            text: function(trigger) {
+                                return res;
+                            }
+                        });
+                        el.click();
+                        this.$message.success('已复制Token');
+                        clickData.c = 0;
+                    })
+                    .catch(e => {
+                        this.$message.error(e.error);
+                    });
+            }
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>

+ 7 - 2
src/main/vue/src/views/PerformanceApplyList.vue

@@ -101,12 +101,16 @@
                 </div>
             </div>
         </el-dialog>
-
         <el-dialog title="二维码" :visible.sync="dialogCode" width="400px" center>
             <div style="margin-left: 70px;">
                 <img style="width: 200px; heght: 200px;" src="@/assets/code.png" />
             </div>
         </el-dialog>
+        <el-dialog title="自动编排" :visible.sync="dialogArrangement" width="400px" center>
+            <div style="margin-left: 70px;">
+                <img style="width: 200px; heght: 200px;" src="@/assets/arrangement.png" />
+            </div>
+        </el-dialog>
     </div>
 </template>
 <script>
@@ -137,7 +141,8 @@ export default {
             add: false,
             dialogCode: false,
             canSign: false,
-            applyId: ''
+            applyId: '',
+            dialogArrangement: false
         };
     },
     created() {

+ 54 - 4
src/main/vue/src/views/PerformanceApplyList2.vue

@@ -3,11 +3,11 @@
         <div class="filters-container">
             <!-- <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
             <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button> -->
-            <el-button @click="autoArrangement" type="primary" class="filter-item" :loading="loading"
+            <el-button @click="dialogArrangement = true" type="primary" class="filter-item" :loading="loading"
                 >自动编排
             </el-button>
             <el-button @click="distribute('已成功通知')" type="primary" class="filter-item">一键通知 </el-button>
-            <el-button @click="distribute('已评奖')" type="primary" class="filter-item">自动评奖 </el-button>
+            <el-button @click="autoAwards()" type="primary" class="filter-item">自动评奖 </el-button>
             <el-button @click="distribute('已生成证书')" type="primary" class="filter-item">生成证书 </el-button>
             <!-- <el-button
                 @click="download"
@@ -37,7 +37,19 @@
             <el-table-column prop="contact" label="联系人"> </el-table-column>
             <el-table-column prop="phone" label="联系电话"> </el-table-column>
             <el-table-column prop="status" label="状态" :formatter="statusFormatter"> </el-table-column>
-            <el-table-column prop="showTime" label="表演时间"> </el-table-column>
+            <el-table-column prop="showTime" label="表演时间" min-width="120"> </el-table-column>
+            <el-table-column prop="awards" label="奖项">
+                <template slot-scope="{ row }">
+                    <span v-if="row.awards != null"> {{ row.awards }} </span>
+                    <span v-else>暂无</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="score" label="得分">
+                <template slot-scope="{ row }">
+                    <span v-if="row.score != null"> {{ row.score }} </span>
+                    <span v-else>暂无</span>
+                </template>
+            </el-table-column>
             <el-table-column label="操作" align="right" fixed="right" min-width="200">
                 <template slot-scope="{ row }">
                     <el-button
@@ -119,6 +131,14 @@
                 </div>
             </div>
         </el-dialog>
+        <el-dialog title="自动编排" :visible.sync="dialogArrangement" width="600px" center>
+            <div style="margin-left: 20px;">
+                <img style="width: 500px; heght: 400px;" src="@/assets/arrangement.png" />
+                <div style="margin-top: 20px; margin-left: 445px;">
+                    <el-button type="primary" @click="autoArrangement()">确定</el-button>
+                </div>
+            </div>
+        </el-dialog>
     </div>
 </template>
 <script>
@@ -147,7 +167,8 @@ export default {
                 value: ''
             },
             add: false,
-            loading: false
+            loading: false,
+            dialogArrangement: false
         };
     },
     computed: {
@@ -290,12 +311,41 @@ export default {
                     this.loading = false;
                     this.$message.success('OK');
                     this.getData();
+                    this.dialogArrangement = false;
                 })
                 .catch(e => {
                     console.log(e);
                     this.loading = false;
                     this.$message.error(e.error);
                 });
+        },
+        autoAwards() {
+            this.$confirm('是否进行自动评奖', '评奖', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消'
+            })
+                .then(() => {
+                    this.$http
+                        .post('/performanceApply/autoAwards', {
+                            performanceId: Number(this.$route.query.perforId)
+                        })
+                        .then(res => {
+                            this.loading = false;
+                            this.$message.success('OK');
+                            this.getData();
+                        })
+                        .catch(e => {
+                            console.log(e);
+                            this.loading = false;
+                            this.$message.error(e.error);
+                        });
+                })
+                .catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消删除'
+                    });
+                });
         }
     }
 };

+ 271 - 0
src/main/vue/src/views/RecordDistrictList2.vue

@@ -0,0 +1,271 @@
+<template>
+    <div class="list-view">
+        <div class="filters-container">
+            <!-- <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input> -->
+            <el-select class="filter-item" v-model="districtId" clearable>
+                <el-option v-for="item in district" :key="item.id" :value="item.name" :label="item.name"></el-option>
+            </el-select>
+            <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">查询 </el-button>
+            <!-- <el-button
+                @click="download"
+                type="primary"
+                icon="el-icon-download"
+                :loading="downloading"
+                class="filter-item"
+                >导出EXCEL
+            </el-button> -->
+        </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"
+        >
+            <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="organizer" label="承办单位"> </el-table-column>
+            <el-table-column prop="district" label="通讯地址"> </el-table-column>
+            <el-table-column prop="privacyPolicy" label="法人姓名"> </el-table-column>
+            <el-table-column prop="idno" label="证件号码"> </el-table-column>
+            <el-table-column prop="examinationAgency" label="所属考级机构"> </el-table-column>
+            <el-table-column prop="recordTime" label="备案时间"> </el-table-column>
+            <el-table-column prop="supervisorNickname" label="监管人员"> </el-table-column>
+            <el-table-column label="操作" align="center" fixed="right" min-width="80">
+                <template slot-scope="{ row }">
+                    <el-button @click="supervision(row.id)" type="primary" size="mini" plain>分配监管人</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>
+        <el-dialog title="分配监管人" :visible.sync="dialogVisible" width="500px" center>
+            <div>
+                <el-table :data="supervisor">
+                    <el-table-column prop="nickname" label="昵称"></el-table-column>
+                    <el-table-column prop="phone" label="手机号"></el-table-column>
+                    <el-table-column label="操作" align="center" fixed="right" min-width="80">
+                        <template slot-scope="{ row }">
+                            <el-button @click="addRegulatory(row.id)" type="success" size="mini" plain>确认</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+
+export default {
+    name: 'RecordList',
+    mixins: [pageableTable],
+    created() {
+        this.$http
+            .get('/district/NJ')
+            .then(res => {
+                this.district = res;
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
+    },
+    mounted() {
+        this.$http
+            .post('/user/authority', { authorityName: 'ROLE_SUPERVISOR' })
+            .then(res => {
+                this.supervisor = res;
+                // if (res.length > 0) {
+                //     res.forEach(item => {
+                //         this.supervisor.push({
+                //             label: item.nickname,
+                //             value: item.id
+                //         });
+                //     });
+                // }
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
+    },
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/record/allDTO',
+            downloading: false,
+            district: [],
+            districtId: '',
+            supervisor: [],
+            dialogVisible: false,
+            recordId: ''
+        };
+    },
+    computed: {
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        }
+    },
+    methods: {
+        categoryFormatter(row, column, cellValue, index) {
+            let selectedOption = this.categoryOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        statusFormatter(row, column, cellValue, index) {
+            let selectedOption = this.statusOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        beforeGetData() {
+            return {
+                search: this.search,
+                sort: 'recordTime,desc',
+                query: {
+                    district: '玄武区',
+                    del: false
+                }
+            };
+        },
+        toggleMultipleMode(multipleMode) {
+            this.multipleMode = multipleMode;
+            if (!multipleMode) {
+                this.$refs.table.clearSelection();
+            }
+        },
+        addRow() {
+            this.$router.push({
+                path: '/recordEdit',
+                query: {
+                    ...this.$route.query
+                }
+            });
+        },
+        editRow(row) {
+            this.$router.push({
+                path: '/recordEdit',
+                query: {
+                    id: row.id
+                }
+            });
+        },
+        download() {
+            this.downloading = true;
+            this.$axios
+                .get('/record/excel', {
+                    responseType: 'blob',
+                    params: { size: 10000 }
+                })
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        operation1() {
+            this.$notify({
+                title: '提示',
+                message: this.selection
+            });
+        },
+        operation2() {
+            this.$message('操作2');
+        },
+        deleteRow(row) {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/record/del/${row.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        this.$message.error(e.error);
+                    }
+                });
+        },
+        distribute() {
+            this.$alert('已分发到各区县!', '分发', {
+                confirmButtonText: '确定'
+            });
+        },
+        update() {
+            this.$http
+                .get('/record/update')
+                .then(res => {
+                    this.getData();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        },
+        supervision(id) {
+            this.dialogVisible = true;
+            this.recordId = id;
+        },
+        addRegulatory(id) {
+            this.$http
+                .post('/record/addSupervisor', {
+                    id: this.recordId,
+                    userId: id
+                })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                    this.dialogVisible = false;
+                    this.recordId = '';
+                    this.getData();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>

+ 21 - 10
src/main/vue/src/views/RegulatoryList.vue

@@ -34,57 +34,63 @@
                     <el-tag :type="row.isRecord ? '' : 'info'">{{ row.isRecord }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isPostExamGuide" label="是否明显位置张贴《考试简章》">
+            <el-table-column prop="isPostExamGuide" label="《考试简章》">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isPostExamGuide ? '' : 'info'">{{ row.isPostExamGuide }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isPerfectDeviceServices" label="考场服务设备是否完善">
+            <el-table-column prop="isPerfectDeviceServices" label="考场服务设备">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isPerfectDeviceServices ? '' : 'info'">{{ row.isPerfectDeviceServices }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isHaveTheSameTime" label="考试时间与备案考试时间是否一致">
+            <el-table-column prop="isHaveTheSameTime" label="考试时间">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isHaveTheSameTime ? '' : 'info'">{{ row.isHaveTheSameTime }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isSameAddress" label="考试地点与备案考试地点是否一致">
+            <el-table-column prop="isSameAddress" label="考试地点">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isSameAddress ? '' : 'info'">{{ row.isSameAddress }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isExaminer" label="是否有无相关专业考官且佩戴考官证">
+            <el-table-column prop="isExaminer" label="考官证">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isExaminer ? '' : 'info'">{{ row.isExaminer }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isRate" label="是否现场对艺术水平做出评定">
+            <el-table-column prop="isRate" label="做出评定">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isRate ? '' : 'info'">{{ row.isRate }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isSureContent" label="是否是所属考级机构教材确定的考级内容">
+            <el-table-column prop="isSureContent" label="考级内容">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isSureContent ? '' : 'info'">{{ row.isSureContent }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isPostPoster" label="是否在明显位置张贴《疫情防控指南》海报">
+            <el-table-column prop="isPostPoster" label="《疫情防控指南》海报">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isPostPoster ? '' : 'info'">{{ row.isPostPoster }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isHaveThermometer" label="考点是否配备测量体温设备,且专人值守">
+            <el-table-column prop="isHaveThermometer" label="测量体温设备">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isHaveThermometer ? '' : 'info'">{{ row.isHaveThermometer }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="isSchedule" label="考场是否实施预约限流措施">
+            <el-table-column prop="isSchedule" label="预约限流">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.isSchedule ? '' : 'info'">{{ row.isSchedule }}</el-tag>
                 </template>
             </el-table-column>
             <el-table-column prop="other" label="其他"> </el-table-column>
+            <el-table-column label="视频" min-width="100">
+                <el-button type="primary" size="mini" plain @click="distribute('暂无视频')">查看视频</el-button>
+            </el-table-column>
+            <el-table-column label="直播" min-width="100">
+                <el-button type="primary" size="mini" plain @click="distribute('暂无直播')">查看直播</el-button>
+            </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>详情</el-button>
@@ -208,6 +214,11 @@ export default {
                         this.$message.error(e.error);
                     }
                 });
+        },
+        distribute(content) {
+            this.$alert(content, '提示', {
+                confirmButtonText: '确定'
+            });
         }
     }
 };