licailing před 4 roky
rodič
revize
ab87af75a5
27 změnil soubory, kde provedl 414 přidání a 1426 odebrání
  1. 8 2
      src/main/java/com/izouma/wenlvju/domain/ExamRoom.java
  2. 0 25
      src/main/java/com/izouma/wenlvju/domain/RecordExamRoom.java
  3. 6 2
      src/main/java/com/izouma/wenlvju/domain/regulation/Complain.java
  4. 12 0
      src/main/java/com/izouma/wenlvju/enums/UnitType.java
  5. 0 8
      src/main/java/com/izouma/wenlvju/enums/WorkCategory.java
  6. 3 0
      src/main/java/com/izouma/wenlvju/repo/ExamRoomRepo.java
  7. 0 33
      src/main/java/com/izouma/wenlvju/repo/RecordExamRoomRepo.java
  8. 1 20
      src/main/java/com/izouma/wenlvju/service/ExamRoomService.java
  9. 0 20
      src/main/java/com/izouma/wenlvju/service/RecordExamRoomService.java
  10. 2 2
      src/main/java/com/izouma/wenlvju/service/RecordService.java
  11. 0 10
      src/main/java/com/izouma/wenlvju/web/ExamRoomController.java
  12. 0 97
      src/main/java/com/izouma/wenlvju/web/RecordExamRoomController.java
  13. 2 2
      src/main/vue/src/components/VideoGrid.vue
  14. 9 43
      src/main/vue/src/router.js
  15. 10 9
      src/main/vue/src/views/ExamRoomEdit.vue
  16. 8 7
      src/main/vue/src/views/ExamRoomList.vue
  17. 0 171
      src/main/vue/src/views/RegulatoryEdit.vue
  18. 0 368
      src/main/vue/src/views/RegulatoryList.vue
  19. 1 7
      src/main/vue/src/views/record/RecordInfo.vue
  20. 1 1
      src/main/vue/src/views/record/RecordList.vue
  21. 12 3
      src/main/vue/src/views/record/RecordOrganizationList.vue
  22. 321 0
      src/main/vue/src/views/record/RecordRegulationHistory.vue
  23. 6 6
      src/main/vue/src/views/record/RecordRegulationList.vue
  24. 0 258
      src/main/vue/src/views/record/RecordRoomList.vue
  25. 0 160
      src/main/vue/src/views/record/RecordSpecialtyEdit.vue
  26. 0 169
      src/main/vue/src/views/record/RecordSpecialtyList.vue
  27. 12 3
      src/main/vue/src/views/record/VideoList.vue

+ 8 - 2
src/main/java/com/izouma/wenlvju/domain/ExamRoom.java

@@ -1,5 +1,6 @@
 package com.izouma.wenlvju.domain;
 
+import com.izouma.wenlvju.annotations.Searchable;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -7,9 +8,9 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.hibernate.annotations.Where;
-import org.springframework.data.annotation.Transient;
 
 import javax.persistence.Entity;
+import javax.persistence.Transient;
 
 @Data
 @AllArgsConstructor
@@ -19,8 +20,9 @@ import javax.persistence.Entity;
 @ApiModel(value = "考场")
 @Where(clause = "del = 0")
 public class ExamRoom extends BaseEntity {
-    private Long organizationId;
+//    private Long organizationId;
 
+    @Searchable
     private String name;
 
     @ApiModelProperty(value = "设备序列号")
@@ -31,4 +33,8 @@ public class ExamRoom extends BaseEntity {
 
     private String address;
 
+    private Long recordId;
+
+    @Transient
+    private String status;
 }

+ 0 - 25
src/main/java/com/izouma/wenlvju/domain/RecordExamRoom.java

@@ -1,25 +0,0 @@
-package com.izouma.wenlvju.domain;
-
-
-import io.swagger.annotations.ApiModel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.hibernate.annotations.Where;
-
-import javax.persistence.Entity;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@Entity
-@ApiModel("备案考场")
-@Where(clause = "del = 0")
-public class RecordExamRoom extends BaseEntity {
-    private Long recordId;
-
-    private Long examRoomId;
-
-}

+ 6 - 2
src/main/java/com/izouma/wenlvju/domain/regulation/Complain.java

@@ -2,6 +2,7 @@ package com.izouma.wenlvju.domain.regulation;
 
 import com.izouma.wenlvju.converter.StringArrayConverter;
 import com.izouma.wenlvju.domain.BaseEntity;
+import com.izouma.wenlvju.enums.UnitType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -51,7 +52,7 @@ public class Complain extends BaseEntity {
      * 承办单位
      */
     @ApiModelProperty(value = "单位类型")
-    private String unitType;
+    private UnitType unitType;
 
     @ApiModelProperty(value = "单位名称")
     private String unitName;
@@ -61,7 +62,7 @@ public class Complain extends BaseEntity {
 //    @ApiModelProperty(value = "图片")
 //    private List<String> img;
 
-    @ApiModelProperty(value = "审查人")
+    @ApiModelProperty(value = "经办人")
     private Long reviewUserId;
 
     @Column(columnDefinition = "TEXT")
@@ -77,4 +78,7 @@ public class Complain extends BaseEntity {
 
     @ApiModelProperty(value = "审查时间")
     private LocalDateTime reviewAt;
+
+    @ApiModelProperty(value = "办结")
+    private boolean completion;
 }

+ 12 - 0
src/main/java/com/izouma/wenlvju/enums/UnitType.java

@@ -0,0 +1,12 @@
+package com.izouma.wenlvju.enums;
+
+public enum UnitType {
+    /*
+    承办单位
+     */
+    ORGANIZATION,
+    /*
+    考级机构
+     */
+    GRADING_ORGANIZATION
+}

+ 0 - 8
src/main/java/com/izouma/wenlvju/enums/WorkCategory.java

@@ -1,8 +0,0 @@
-package com.izouma.wenlvju.enums;
-
-public enum WorkCategory {
-    /*
-    承办单位
-     */
-    ORGANIZER
-}

+ 3 - 0
src/main/java/com/izouma/wenlvju/repo/ExamRoomRepo.java

@@ -7,10 +7,13 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.util.List;
 
 public interface ExamRoomRepo extends JpaRepository<ExamRoom, Long>, JpaSpecificationExecutor<ExamRoom> {
     @Query("update ExamRoom t set t.del = true where t.id = ?1")
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    List<ExamRoom> findAllByRecordId(Long recordId);
 }

+ 0 - 33
src/main/java/com/izouma/wenlvju/repo/RecordExamRoomRepo.java

@@ -1,33 +0,0 @@
-package com.izouma.wenlvju.repo;
-
-import com.izouma.wenlvju.domain.RecordExamRoom;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-import java.util.List;
-
-public interface RecordExamRoomRepo extends JpaRepository<RecordExamRoom, Long>, JpaSpecificationExecutor<RecordExamRoom> {
-    @Query("update RecordExamRoom t set t.del = true where t.id = ?1")
-    @Modifying
-    @Transactional
-    void softDelete(Long id);
-
-    @Query("update RecordExamRoom t set t.del = true where t.recordId = ?1 and t.examRoomId = ?2")
-    @Modifying
-    @Transactional
-    void softDeleteByRecord(Long recordId, Long examRoomId);
-
-    List<RecordExamRoom> findAllByRecordId(Long recordId);
-
-    @Query("select id from RecordExamRoom where del = false and recordId = ?1")
-    List<Long> findIdByRecordId(Long recordId);
-
-    @Query("select examRoomId from RecordExamRoom where del = false and recordId = ?1")
-    List<Long> findExamRoomIdByRecordId(Long recordId);
-
-    @Query("select examRoomId from RecordExamRoom where del = false and recordId in ?1")
-    List<Long> findExamRoomIdByRecordIdIn(Iterable<Long> recordId);
-}

+ 1 - 20
src/main/java/com/izouma/wenlvju/service/ExamRoomService.java

@@ -6,13 +6,11 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.kevinsawicki.http.HttpRequest;
 import com.izouma.wenlvju.domain.ExamRoom;
-import com.izouma.wenlvju.domain.Organization;
 import com.izouma.wenlvju.domain.Record;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.ExamRoomRepo;
 import com.izouma.wenlvju.repo.OrganizationRepo;
-import com.izouma.wenlvju.repo.RecordExamRoomRepo;
 import com.izouma.wenlvju.utils.JpaUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -31,7 +29,6 @@ public class ExamRoomService {
 
     private final ExamRoomRepo       examRoomRepo;
     private final EzvizTokenService  ezvizTokenService;
-    private final RecordExamRoomRepo recordExamRoomRepo;
     private final RecordService      recordService;
     private final OrganizationRepo   organizationRepo;
 
@@ -150,22 +147,6 @@ public class ExamRoomService {
         }
     }
 
-    /*
-    按recordId查找考场
-     */
-    public Page<ExamRoom> byRecord(Long recordId, PageQuery pageQuery) {
-        List<Long> ids = recordExamRoomRepo.findExamRoomIdByRecordId(recordId);
-        if (CollUtil.isEmpty(ids)) {
-            return new PageImpl<>(new ArrayList<>(), JpaUtils.toPageRequest(pageQuery), 0);
-        }
-
-        return examRoomRepo.findAll((root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> and = JpaUtils.toPredicates(pageQuery, ExamRoom.class, root, criteriaQuery, criteriaBuilder);
-            and.add(root.get("id").in(ids));
-            return criteriaBuilder.and(and.toArray(new Predicate[0]));
-        }, JpaUtils.toPageRequest(pageQuery));
-    }
-
     /*
     展示今天备案中的所有考场信息
      */
@@ -179,7 +160,7 @@ public class ExamRoomService {
             return null;
         }
 
-        ids.addAll(recordExamRoomRepo.findExamRoomIdByRecordIdIn(rids));
+//        ids.addAll(recordExamRoomRepo.findExamRoomIdByRecordIdIn(rids));
 
 
         if (CollUtil.isEmpty(ids)) {

+ 0 - 20
src/main/java/com/izouma/wenlvju/service/RecordExamRoomService.java

@@ -1,20 +0,0 @@
-package com.izouma.wenlvju.service;
-
-import com.izouma.wenlvju.domain.RecordExamRoom;
-import com.izouma.wenlvju.dto.PageQuery;
-import com.izouma.wenlvju.repo.RecordExamRoomRepo;
-import com.izouma.wenlvju.utils.JpaUtils;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.stereotype.Service;
-
-@Service
-@AllArgsConstructor
-public class RecordExamRoomService {
-
-    private RecordExamRoomRepo recordExamRoomRepo;
-
-    public Page<RecordExamRoom> all(PageQuery pageQuery) {
-        return recordExamRoomRepo.findAll(JpaUtils.toSpecification(pageQuery, RecordExamRoom.class), JpaUtils.toPageRequest(pageQuery));
-    }
-}

+ 2 - 2
src/main/java/com/izouma/wenlvju/service/RecordService.java

@@ -51,11 +51,11 @@ public class RecordService {
             query.remove("examinationTime");
         }
 
-        Object today = query.get("today");
+        Object today = query.get("history");
         LocalDate todayDate = null;
         if (today != null) {
             todayDate = Convert.toLocalDateTime(today).toLocalDate();
-            query.remove("today");
+            query.remove("history");
         }
 
         LocalDate finalDate = date;

+ 0 - 10
src/main/java/com/izouma/wenlvju/web/ExamRoomController.java

@@ -75,16 +75,6 @@ public class ExamRoomController extends BaseController {
         ExcelUtils.export(response, data);
     }
 
-    @PostMapping("/byRecord")
-    public Page<ExamRoom> byRecord(@RequestBody PageQuery pageQuery) {
-        Map<String, Object> query = pageQuery.getQuery();
-        Object recordId = query.get("recordId");
-        //转换
-        Long id = Convert.convert(Long.class, recordId);
-        query.remove("recordId");
-        return examRoomService.byRecord(id, pageQuery);
-    }
-
     @PostMapping("/byToday")
     @ApiOperation("今日所有备案的考场信息")
     public List<ExamRoom> byToday(PageQuery pageQuery, boolean status) {

+ 0 - 97
src/main/java/com/izouma/wenlvju/web/RecordExamRoomController.java

@@ -1,97 +0,0 @@
-package com.izouma.wenlvju.web;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.izouma.wenlvju.converter.LongArrayConverter;
-import com.izouma.wenlvju.domain.RecordExamRoom;
-import com.izouma.wenlvju.repo.ExamRoomRepo;
-import com.izouma.wenlvju.service.RecordExamRoomService;
-import com.izouma.wenlvju.dto.PageQuery;
-import com.izouma.wenlvju.exception.BusinessException;
-import com.izouma.wenlvju.repo.RecordExamRoomRepo;
-import com.izouma.wenlvju.utils.ObjUtils;
-import com.izouma.wenlvju.utils.excel.ExcelUtils;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
-
-@RestController
-@RequestMapping("/recordExamRoom")
-@AllArgsConstructor
-public class RecordExamRoomController extends BaseController {
-    private final RecordExamRoomService recordExamRoomService;
-    private final RecordExamRoomRepo    recordExamRoomRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public RecordExamRoom save(@RequestBody RecordExamRoom record) {
-        if (record.getId() != null) {
-            RecordExamRoom orig = recordExamRoomRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return recordExamRoomRepo.save(orig);
-        }
-        return recordExamRoomRepo.save(record);
-    }
-
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/all")
-    public Page<RecordExamRoom> all(@RequestBody PageQuery pageQuery) {
-        return recordExamRoomService.all(pageQuery);
-    }
-
-    @GetMapping("/get/{id}")
-    public RecordExamRoom get(@PathVariable Long id) {
-        return recordExamRoomRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        recordExamRoomRepo.softDelete(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<RecordExamRoom> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-
-    @PostMapping("/add")
-    @ApiOperation("添加考场")
-    public void addRooms(@RequestParam Long recordId, @RequestParam String addRooms) {
-        if (StrUtil.isEmpty(addRooms)) {
-            return;
-        }
-        List<Long> roomIds = Convert.toList(Long.class, addRooms);
-        List<Long> ids = recordExamRoomRepo.findIdByRecordId(recordId);
-
-        roomIds.forEach(id -> {
-            if (!ids.contains(id)) {
-                recordExamRoomRepo.save(RecordExamRoom.builder()
-                        .recordId(recordId)
-                        .examRoomId(id)
-                        .build());
-            }
-        });
-
-    }
-
-    @PostMapping("/delByRecord")
-    @ApiOperation("添加考场")
-    public void delByRecord(@RequestParam Long recordId, @RequestParam Long examRoomId) {
-        recordExamRoomRepo.softDeleteByRecord(recordId, examRoomId);
-
-    }
-
-}
-

+ 2 - 2
src/main/vue/src/components/VideoGrid.vue

@@ -7,7 +7,7 @@
             <span class="span-size">联系电话:<br /></span>
             <span class="span-size">检查记录:<br /></span>
         </div>
-        <div class="video" :id="name" style="width:100%;height:400px">
+        <div class="video" :id="name" style="width:100%;height:320px">
             <!-- <div class="bottom"></div> -->
 
             <video
@@ -15,7 +15,7 @@
                 :src="videoUrl"
                 controlsList="nodownload noremote footbar"
                 controls="controls"
-                style="width:100%;height:400px"
+                style="width:100%;height:320px"
                 oncontextmenu="return false;"
                 ref="video"
                 autoplay

+ 9 - 43
src/main/vue/src/router.js

@@ -203,6 +203,15 @@ const router = new Router({
                         title: '监管管理'
                     }
                 },
+                {
+                    path: '/recordRegulationHistory',
+                    name: 'RecordRegulationHistory',
+                    component: () =>
+                        import(/* webpackChunkName: "recordList" */ '@/views/record/RecordRegulationHistory.vue'),
+                    meta: {
+                        title: '监管管理'
+                    }
+                },
                 {
                     path: '/videoList',
                     name: 'videoList',
@@ -296,22 +305,6 @@ const router = new Router({
                         title: '参演人员'
                     }
                 },
-                {
-                    path: '/regulatoryEdit',
-                    name: 'RegulatoryEdit',
-                    component: () => import(/* webpackChunkName: "regulatoryEdit" */ '@/views/RegulatoryEdit.vue'),
-                    meta: {
-                        title: '监管管理编辑'
-                    }
-                },
-                {
-                    path: '/regulatoryList',
-                    name: 'RegulatoryList',
-                    component: () => import(/* webpackChunkName: "regulatoryList" */ '@/views/RegulatoryList.vue'),
-                    meta: {
-                        title: '监管管理'
-                    }
-                },
                 {
                     path: '/rateEdit',
                     name: 'RateEdit',
@@ -544,33 +537,6 @@ const router = new Router({
                     meta: {
                         title: '备案管理'
                     }
-                },
-                {
-                    path: '/recordRoomList',
-                    name: 'RecordRoomList',
-                    component: () =>
-                        import(/* webpackChunkName: "recordRoomList" */ '@/views/record/RecordRoomList.vue'),
-                    meta: {
-                        title: '考场管理'
-                    }
-                },
-                {
-                    path: '/recordSpecialtyEdit',
-                    name: 'RecordSpecialtyEdit',
-                    component: () =>
-                        import(/* webpackChunkName: "recordSpecialtyEdit" */ '@/views/record/RecordSpecialtyEdit.vue'),
-                    meta: {
-                        title: '开考专业编辑'
-                    }
-                },
-                {
-                    path: '/recordSpecialtyList',
-                    name: 'RecordSpecialtyList',
-                    component: () =>
-                        import(/* webpackChunkName: "recordSpecialtyList" */ '@/views/record/RecordSpecialtyList.vue'),
-                    meta: {
-                        title: '开考专业'
-                    }
                 }
                 /**INSERT_LOCATION**/
             ]

+ 10 - 9
src/main/vue/src/views/ExamRoomEdit.vue

@@ -4,23 +4,23 @@
             :model="formData"
             :rules="rules"
             ref="form"
-            label-width="94px"
+            label-width="100px"
             label-position="right"
             size="small"
-            style="max-width: 500px;"
+            style="max-width: 550px;"
         >
             <el-form-item prop="name" label="考场名称">
                 <el-input v-model="formData.name"></el-input>
             </el-form-item>
+            <el-form-item prop="address" label="考场地址">
+                <el-input type="textarea" :rows="2" v-model="formData.address"></el-input>
+            </el-form-item>
             <el-form-item prop="deviceSerial" label="设备序列号">
                 <el-input v-model="formData.deviceSerial"></el-input>
             </el-form-item>
             <el-form-item prop="validateCode" label="设备验证码">
                 <el-input v-model="formData.validateCode"></el-input>
             </el-form-item>
-            <el-form-item prop="address" label="地址">
-                <el-input v-model="formData.address"></el-input>
-            </el-form-item>
             <el-form-item>
                 <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
                 <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
@@ -53,9 +53,6 @@ export default {
             rules: {}
         };
     },
-    computed: {
-        ...mapState(['organization'])
-    },
     methods: {
         onSave() {
             this.$refs.form.validate(valid => {
@@ -68,7 +65,11 @@ export default {
         },
         submit() {
             let data = { ...this.formData };
-            data.organizationId = this.organization.id;
+
+            if (this.$route.query.rid) {
+                data.recordId = this.$route.query.rid;
+            }
+
             this.saving = true;
             this.$http
                 .post('/examRoom/save', data, { body: 'json' })

+ 8 - 7
src/main/vue/src/views/ExamRoomList.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="list-view">
         <div class="filters-container">
-            <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
+            <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
@@ -24,11 +24,12 @@
             :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="id" label="ID" width="100"> </el-table-column> -->
             <el-table-column prop="name" label="考场名称"> </el-table-column>
+            <el-table-column prop="address" label="考场地址"> </el-table-column>
             <el-table-column prop="deviceSerial" label="设备序列号"> </el-table-column>
             <el-table-column prop="validateCode" label="设备验证码"> </el-table-column>
-            <el-table-column prop="address" label="地址"> </el-table-column>
+            <el-table-column prop="status" label="状态"> </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
                     <el-button @click="monitor(row)" type="success" size="mini" plain>监控</el-button>
@@ -87,8 +88,8 @@ export default {
     computed: {
         selection() {
             return this.$refs.table.selection.map(i => i.id);
-        },
-        ...mapState(['organization'])
+        }
+        // ...mapState(['organization'])
     },
     methods: {
         beforeGetData() {
@@ -97,8 +98,8 @@ export default {
             if (this.search) {
                 data.search = this.search;
             }
-            if (this.organization != null) {
-                data.query.organizationId = this.organization.id;
+            if (this.$route.query.rid) {
+                data.query.recordId = this.$route.query.rid;
             }
             return data;
         },

+ 0 - 171
src/main/vue/src/views/RegulatoryEdit.vue

@@ -1,171 +0,0 @@
-<template>
-    <div class="edit-view">
-        <el-form
-            :model="record"
-            ref="record"
-            label-width="120px"
-            label-position="right"
-            size="small"
-            style="max-width: 580px;"
-        >
-            <el-form-item label="承办单位">
-                <el-input v-model="formData.record.organizer" readonly></el-input>
-            </el-form-item>
-            <el-form-item label="所属考级机构">
-                <el-input v-model="formData.record.examinationAgency" readonly></el-input>
-            </el-form-item>
-            <el-form-item label="联系人">
-                <el-input v-model="formData.record.examOwner" readonly></el-input>
-            </el-form-item>
-            <el-form-item label="联系方式">
-                <el-input v-model="formData.record.examOwnerPhone" readonly></el-input>
-            </el-form-item>
-            <el-form-item label="考试时间">
-                <el-input
-                    v-model="formData.record.examinationStartTime"
-                    style="width: 200px;margin-right: 10px"
-                    readonly
-                ></el-input>
-                至
-                <el-input
-                    v-model="formData.record.examinationEndTime"
-                    style="width: 200px;margin-left: 10px "
-                    readonly
-                ></el-input>
-            </el-form-item>
-            <el-form-item label="监管人员">
-                <el-input v-model="formData.supervisorUser.nickname" readonly></el-input>
-            </el-form-item>
-        </el-form>
-        <br />
-        <el-divider direction="horizontal" content-position="left">检查信息</el-divider>
-        <el-form
-            :model="formData"
-            :rules="rules"
-            ref="form"
-            label-width="290px"
-            label-position="right"
-            size="small"
-            style="max-width: 600px;"
-        >
-            <el-form-item prop="time" label="时间">
-                <el-date-picker v-model="formData.time" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
-                </el-date-picker>
-            </el-form-item>
-            <el-form-item prop="isRecord" label="是否考前备案">
-                <el-switch v-model="formData.isRecord"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isPostExamGuide" label="是否明显位置张贴《考试简章》">
-                <el-switch v-model="formData.isPostExamGuide"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isPerfectDeviceServices" label="考场服务设备是否完善">
-                <el-switch v-model="formData.isPerfectDeviceServices"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isHaveTheSameTime" label="考试时间与备案考试时间是否一致">
-                <el-switch v-model="formData.isHaveTheSameTime"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isSameAddress" label="考试地点与备案考试地点是否一致">
-                <el-switch v-model="formData.isSameAddress"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isExaminer" label="是否有无相关专业考官且佩戴考官证">
-                <el-switch v-model="formData.isExaminer"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isRate" label="是否现场对艺术水平做出评定">
-                <el-switch v-model="formData.isRate"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isSureContent" label="是否是所属考级机构教材确定的考级内容">
-                <el-switch v-model="formData.isSureContent"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isPostPoster" label="是否在明显位置张贴《疫情防控指南》海报">
-                <el-switch v-model="formData.isPostPoster"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isHaveThermometer" label="考点是否配备测量体温设备,且专人值守">
-                <el-switch v-model="formData.isHaveThermometer"></el-switch>
-            </el-form-item>
-            <el-form-item prop="isSchedule" label="考场是否实施预约限流措施">
-                <el-switch v-model="formData.isSchedule"></el-switch>
-            </el-form-item>
-            <el-form-item prop="other" label="其他">
-                <el-input type="textarea" v-model="formData.other"></el-input>
-            </el-form-item>
-            <el-form-item><file-upload></file-upload></el-form-item>
-            <el-form-item>
-                <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
-                <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
-                <el-button @click="$router.go(-1)">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </div>
-</template>
-<script>
-export default {
-    name: 'RegulatoryEdit',
-    created() {
-        if (this.$route.query.id) {
-            this.$http
-                .get('regulatory/get/' + this.$route.query.id)
-                .then(res => {
-                    this.formData = res;
-                    this.record = res.record;
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-        }
-    },
-    data() {
-        return {
-            saving: false,
-            formData: {},
-            rules: {},
-            record: {}
-        };
-    },
-    methods: {
-        onSave() {
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let data = { ...this.formData };
-
-            this.saving = true;
-            this.$http
-                .post('/regulatory/save', data, { body: 'json' })
-                .then(res => {
-                    this.saving = false;
-                    this.$message.success('成功');
-                    this.$router.go(-1);
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.saving = false;
-                    this.$message.error(e.error);
-                });
-        },
-        onDelete() {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
-                .then(() => {
-                    return this.$http.post(`/regulatory/del/${this.formData.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.$router.go(-1);
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        console.log(e);
-                        this.$message.error((e || {}).error || '删除失败');
-                    }
-                });
-        }
-    }
-};
-</script>
-<style lang="less" scoped></style>

+ 0 - 368
src/main/vue/src/views/RegulatoryList.vue

@@ -1,368 +0,0 @@
-<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"
-            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="record.organizer" label="承办单位"> </el-table-column>
-            <el-table-column prop="record.district" label="通讯地址"> </el-table-column>
-            <el-table-column prop="supervisorUser.nickname" label="监管人员"> </el-table-column>
-            <el-table-column prop="time" label="时间"> </el-table-column>
-            <el-table-column prop="isRecord" label="考前备案" min-width="65">
-                <template slot-scope="{ row }">
-                    <!-- <el-tag :type="row.isRecord ? '' : 'info'">{{ row.isRecord }}</el-tag> -->
-                    <i class="el-icon-check" v-if="row.isRecord"></i>
-                    <i class="el-icon-close" v-else-if="!row.isRecord"></i>
-                    <i class="el-icon-minus" v-else></i>
-                </template>
-            </el-table-column>
-            <el-table-column prop="isPostExamGuide" label="考试简章" min-width="65">
-                <template slot-scope="{ row }">
-                    <!-- <el-tag :type="row.isPostExamGuide ? '' : 'info'">{{ row.isPostExamGuide }}</el-tag> -->
-                    <i class="el-icon-check" v-if="row.isPostExamGuide"></i>
-                    <i class="el-icon-close" v-else-if="!row.isPostExamGuide"></i>
-                    <i class="el-icon-minus" v-else></i>
-                </template>
-            </el-table-column>
-            <el-table-column prop="isPerfectDeviceServices" label="服务设备" min-width="65">
-                <template slot-scope="{ row }">
-                    <!-- <el-tag :type="row.isPerfectDeviceServices ? '' : 'info'">{{ row.isPerfectDeviceServices }}</el-tag> -->
-                    <i class="el-icon-check" v-if="row.isPerfectDeviceServices"></i>
-                    <i class="el-icon-close" v-else-if="!row.isPerfectDeviceServices"></i>
-                    <i class="el-icon-minus" v-else></i>
-                </template>
-            </el-table-column>
-            <!-- <el-table-column prop="isHaveTheSameTime" label="考试时间">
-                <template slot-scope="{ row }">
-                    <el-tag :type="row.isHaveTheSameTime ? '' : 'info'">{{ row.isHaveTheSameTime }}</el-tag>
-                    <i class="el-icon-check" v-if="row.isRecord"></i>
-                    <i class="el-icon-close" v-else-if="!row.isRecord"></i>
-                </template>
-            </el-table-column> -->
-            <!-- <el-table-column prop="isSameAddress" label="考试地点">
-                <template slot-scope="{ row }">
-                    <i class="el-icon-check" v-if="row.isRecord"></i>
-                    <i class="el-icon-close" v-else-if="!row.isRecord"></i>
-                    <el-tag :type="row.isSameAddress ? '' : 'info'">{{ row.isSameAddress }}</el-tag>
-                </template>
-            </el-table-column> -->
-            <el-table-column prop="isExaminer" label="考官证" min-width="65">
-                <template slot-scope="{ row }">
-                    <i class="el-icon-check" v-if="row.isExaminer"></i>
-                    <i class="el-icon-close" v-else-if="!row.isExaminer"></i>
-                    <i class="el-icon-minus" v-else></i>
-                    <!-- <el-tag :type="row.isExaminer ? '' : 'info'">{{ row.isExaminer }}</el-tag> -->
-                </template>
-            </el-table-column>
-            <!-- <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="考级内容">
-                <template slot-scope="{ row }">
-                    <el-tag :type="row.isSureContent ? '' : 'info'">{{ row.isSureContent }}</el-tag>
-                </template>
-            </el-table-column> -->
-            <el-table-column prop="isPostPoster" label="疫情防控指南" min-width="65">
-                <template slot-scope="{ row }">
-                    <!-- <el-tag :type="row.isPostPoster ? '' : 'info'">{{ row.isPostPoster }}</el-tag> -->
-                    <i class="el-icon-check" v-if="row.isPostPoster"></i>
-                    <i class="el-icon-close" v-else-if="!row.isPostPoster"></i>
-                    <i class="el-icon-minus" v-else></i>
-                </template>
-            </el-table-column>
-            <el-table-column prop="isHaveThermometer" label="体温设备">
-                <template slot-scope="{ row }">
-                    <!-- <el-tag :type="row.isHaveThermometer ? '' : 'info'">{{ row.isHaveThermometer }}</el-tag> -->
-                    <i class="el-icon-check" v-if="row.isHaveThermometer"></i>
-                    <i class="el-icon-close" v-else-if="!row.isHaveThermometer"></i>
-                    <i class="el-icon-minus" v-else></i>
-                </template>
-            </el-table-column>
-            <!-- <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="dialogVisible = true">查看视频</el-button>
-            </el-table-column>
-            <el-table-column label="直播" min-width="100">
-                <el-button type="primary" size="mini" plain @click="showViedo = true">查看直播</el-button>
-            </el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" min-width="85">
-                <template slot-scope="{ row }">
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>详情</el-button>
-                    <!-- <el-button @click="deleteRow(row)" type="danger" 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="600px" center>
-            <el-table :data="vurl">
-                <el-table-column prop="name" label="名称"></el-table-column>
-                <el-table-column prop="url" label="地址" min-width="200px"></el-table-column>
-                <el-table-column label="操作"
-                    ><template slot-scope="{ row }">
-                        <el-button @click="playVideo(row)">播放</el-button>
-                    </template></el-table-column
-                >
-            </el-table>
-        </el-dialog>
-        <el-dialog
-            class="videoDialog"
-            destroy-on-close
-            center
-            append-to-body
-            :visible.sync="showViedo"
-            @close="closeEvent"
-            width="70%"
-        >
-            <video
-                :src="videoUrl"
-                controlsList="nodownload noremote footbar"
-                controls="controls"
-                style="height: 100%; max-width: 100%"
-                oncontextmenu="return false;"
-                onmouseleave="leaveVideo(this)"
-                ref="video"
-                v-if="showViedo"
-                autoplay="autoplay"
-                loop
-            >
-                您的浏览器不支持 video 标签。
-            </video>
-            <div style="text-align: center; margin: 5px auto 0 auto">
-                <el-button size="medium" plain type="warning" icon="el-icon-caret-right">录制</el-button>
-                <el-button size="medium" type="primary" plain>保存</el-button>
-                <el-button size="medium">下放地方执法</el-button>
-            </div>
-            <div class="close" @click="showViedo = false">关闭</div>
-        </el-dialog>
-    </div>
-</template>
-<script>
-import { mapState } from 'vuex';
-import pageableTable from '@/mixins/pageableTable';
-
-export default {
-    name: 'RegulatoryList',
-    mixins: [pageableTable],
-    data() {
-        return {
-            multipleMode: false,
-            search: '',
-            url: '/regulatory/all',
-            downloading: false,
-            showViedo: false,
-            dialogVisible: false,
-            videoUrl: 'https://ticket-exchange.oss-cn-hangzhou.aliyuncs.com/video/2021-03-19-14-33-40dhjGRCso.mp4',
-            vurl: [
-                {
-                    name: '舞蹈艺考',
-                    url: 'https://ticket-exchange.oss-cn-hangzhou.aliyuncs.com/video/2021-03-19-14-33-40dhjGRCso.mp4'
-                },
-                {
-                    name: '表演艺考',
-                    url: 'https://ticket-exchange.oss-cn-hangzhou.aliyuncs.com/video/2021-03-19-14-47-24CxnKwMnv.mp4'
-                },
-                {
-                    name: '舞蹈艺考',
-                    url: 'https://ticket-exchange.oss-cn-hangzhou.aliyuncs.com/video/2021-03-19-14-47-40sDbsFufH.mp4'
-                }
-                // {
-                //     name: '唱歌艺考',
-                //     url: 'https://ticket-exchange.oss-cn-hangzhou.aliyuncs.com/video/2021-03-19-14-48-22BtOKfvcx.mp4'
-                // }
-            ]
-        };
-    },
-    computed: {
-        selection() {
-            return this.$refs.table.selection.map(i => i.id);
-        }
-    },
-    methods: {
-        beforeGetData() {
-            return { search: this.search };
-        },
-        toggleMultipleMode(multipleMode) {
-            this.multipleMode = multipleMode;
-            if (!multipleMode) {
-                this.$refs.table.clearSelection();
-            }
-        },
-        addRow() {
-            this.$router.push({
-                path: '/regulatoryEdit',
-                query: {
-                    ...this.$route.query
-                }
-            });
-        },
-        editRow(row) {
-            this.$router.push({
-                path: '/regulatoryEdit',
-                query: {
-                    id: row.id
-                }
-            });
-        },
-        download() {
-            this.downloading = true;
-            this.$axios
-                .get('/regulatory/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(`/regulatory/del/${row.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.getData();
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        this.$message.error(e.error);
-                    }
-                });
-        },
-        distribute(content) {
-            this.$alert(content, '提示', {
-                confirmButtonText: '确定'
-            });
-        },
-        closeEvent() {
-            document.exitPictureInPicture();
-            this.videoUrl =
-                'https://ticket-exchange.oss-cn-hangzhou.aliyuncs.com/video/2021-03-19-14-33-40dhjGRCso.mp4';
-        },
-        playVideo(row) {
-            this.dialogVisible = false;
-            this.showViedo = true;
-            this.videoUrl = row.url;
-        }
-    }
-};
-</script>
-<style lang="less" scoped>
-.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;
-        }
-    }
-}
-/deep/.el-button--medium {
-    height: 44px;
-    font-size: 16px;
-    margin: 10px 40px 0;
-}
-</style>

+ 1 - 7
src/main/vue/src/views/record/RecordInfo.vue

@@ -2,8 +2,6 @@
     <div class="edit-view">
         <el-tabs v-model="active">
             <el-tab-pane label="基本信息" name="first"><RecordEdit ref="page1" @next="goNext"/></el-tab-pane>
-            <!-- <el-tab-pane label="备考专业" name="second"><RecordSpecialtyList ref="page2"/></el-tab-pane> -->
-            <el-tab-pane label="考场管理" name="third"><RecordRoomList ref="page3"/></el-tab-pane>
         </el-tabs>
 
         <div style="min-height:50px"></div>
@@ -11,8 +9,6 @@
 </template>
 <script>
 import RecordEdit from './RecordEdit.vue';
-// import RecordSpecialtyList from './RecordSpecialtyList.vue';
-import RecordRoomList from './RecordRoomList.vue';
 export default {
     name: 'RecordInfo',
     created() {},
@@ -29,9 +25,7 @@ export default {
         }
     },
     components: {
-        RecordEdit,
-        // RecordSpecialtyList,
-        RecordRoomList
+        RecordEdit
     }
 };
 </script>

+ 1 - 1
src/main/vue/src/views/record/RecordList.vue

@@ -186,7 +186,7 @@ export default {
             return '';
         },
         beforeGetData() {
-            let data = { sort: 'recordTime,desc', query: { del: false } };
+            let data = { sort: 'examinationEndTime,desc', query: { del: false } };
             if (this.search) {
                 data.search = this.search;
             }

+ 12 - 3
src/main/vue/src/views/record/RecordOrganizationList.vue

@@ -54,15 +54,16 @@
                         style="font-size: 13px"
                         :underline="false"
                         type="success"
-                        v-else-if="currentTime > row.examinationStartTime && currentTime < row.examinationEndTime"
+                        v-else-if="currentTime >= row.examinationStartTime && currentTime <= row.examinationEndTime"
                         >考级中
                     </el-link>
                 </template>
             </el-table-column>
             <!-- <el-table-column prop="recordTime" label="备案时间" min-width="90"></el-table-column> -->
-            <el-table-column label="操作" align="center" fixed="right" min-width="75">
+            <el-table-column label="操作" align="center" fixed="right" min-width="140">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
+                    <el-button @click="showVideo(row)" type="success" size="mini" plain>视频设置</el-button>
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
             </el-table-column>
@@ -168,7 +169,15 @@ export default {
         },
         editRow(row) {
             this.$router.push({
-                path: '/recordInfo',
+                path: '/recordEdit',
+                query: {
+                    rid: row.id
+                }
+            });
+        },
+        showVideo(row) {
+            this.$router.push({
+                path: '/examRoomList',
                 query: {
                     rid: row.id
                 }

+ 321 - 0
src/main/vue/src/views/record/RecordRegulationHistory.vue

@@ -0,0 +1,321 @@
+<template>
+    <div class="list-view">
+        <div class="filters-container">
+            <el-col :span="8">
+                <span class="span-size">考级活动名称</span>
+                <el-input placeholder="输入考级活动名称" v-model="search" clearable class="filter-item"></el-input>
+            </el-col>
+            <el-col :span="8">
+                <span class="span-size">考级机构名称</span>
+                <el-input placeholder="输入考级机构名称" v-model="agency" clearable class="filter-item"></el-input>
+            </el-col>
+            <el-col :span="8">
+                <label class="span-size">考级地点</label>
+                <el-select class="filter-item" v-model="district" clearable placeholder="请选择区县">
+                    <el-option
+                        v-for="item in districts"
+                        :key="item.id"
+                        :value="item.name"
+                        :label="item.name"
+                    ></el-option>
+                </el-select>
+            </el-col>
+            <el-col :span="8">
+                <span class="span-size">承办单位名称</span>
+                <el-input placeholder="输入承办单位名称" v-model="organizer" clearable class="filter-item"></el-input>
+            </el-col>
+
+            <el-col :span="14">
+                <label class="span-size">考级活动时间</label>
+                <el-date-picker
+                    v-model="dateRange"
+                    type="daterange"
+                    value-format="yyyy-MM-dd"
+                    start-placeholder="请选择开始时间"
+                    end-placeholder="请选择结束时间"
+                    range-separator="至"
+                    class="filter-item"
+                >
+                </el-date-picker>
+            </el-col>
+            <el-col :span="12">
+                <div style="padding-left: 20px">
+                    <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item"
+                        >查询
+                    </el-button>
+                    <el-button @click="showVideo" type="primary" icon="el-icon-video-camera" class="filter-item"
+                        >监控平台
+                    </el-button>
+                </div>
+            </el-col>
+        </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="examinationName" label="考级活动名称" min-width="150"> </el-table-column>
+            <el-table-column prop="examinationStartTime" label="考级活动时间" show-overflow-tooltip min-width="160">
+                <template slot-scope="{ row }">
+                    <span>{{ row.examinationStartTime }} 至 {{ row.examinationEndTime }}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="examinationAgency" label="考级机构名称" min-width="150" sortable> </el-table-column>
+            <el-table-column prop="organizer" label="承办单位名称" min-width="150" sortable> </el-table-column>
+            <el-table-column prop="district" label="考级地点" min-width="70"> </el-table-column>
+            <el-table-column prop="recordTime" label="备案时间" min-width="90"> </el-table-column>
+            <el-table-column label="操作" align="right" fixed="right" min-width="240">
+                <template slot-scope="{ row }">
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
+                    <el-button @click="checkRow(row)" type="warning" size="mini" plain>检查记录</el-button>
+                    <el-button
+                        @click="openRoom(row)"
+                        type="primary"
+                        size="mini"
+                        plain
+                        v-if="currentTime <= row.examinationEndTime"
+                        >考场监控</el-button
+                    >
+                    <!-- <el-button @click="deleteRow(row)" type="danger" 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>
+    </div>
+</template>
+<script>
+import pageableTable from '@/mixins/pageableTable';
+import format from 'date-fns/format';
+import startOfDay from 'date-fns/startOfDay';
+import endOfDay from 'date-fns/endOfDay';
+import { th } from 'date-fns/locale';
+
+export default {
+    name: 'RecordRegulationHistory',
+    mixins: [pageableTable],
+    created() {
+        this.$http
+            .get('/district/NJ')
+            .then(res => {
+                this.districts = res;
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
+        this.currentTime = format(new Date(), 'yyyy-MM-dd');
+    },
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/record/all',
+            downloading: false,
+            categoryOptions: [{ label: '承办单位', value: 'ORGANIZER' }],
+            districts: [],
+            district: '',
+            city: '南京市',
+            status: '',
+            recordDateRange: '',
+            agency: '',
+            organizer: '',
+            dateRange: '',
+            currentTime: ''
+        };
+    },
+    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 '';
+        },
+        beforeGetData() {
+            let data = {
+                sort: 'examinationEndTime,desc',
+                query: {
+                    del: false,
+                    history: format(new Date(), 'yyyy-MM-dd')
+                }
+            };
+            if (this.search) {
+                data.search = this.search;
+            }
+            if (this.district) {
+                data.query.district = this.district;
+            }
+            if (this.agency) {
+                data.query.examinationAgency = this.agency;
+            }
+            if (this.organizer) {
+                data.query.organizer = this.organizer;
+            }
+            return data;
+        },
+        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: {
+                    rid: row.id
+                }
+            });
+        },
+        checkRow(row) {
+            this.$router.push({
+                path: '/recordCheck',
+                query: {
+                    rid: row.id
+                }
+            });
+        },
+        download() {
+            this.downloading = true;
+            this.$axios
+                .get('/record/excel', {
+                    responseType: 'blob',
+                    params: {
+                        size: 10000,
+                        query: {
+                            del: false
+                        }
+                    }
+                })
+                .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);
+                });
+        },
+        openRoom(row) {
+            this.$router.push({
+                path: '/examRoomList',
+                query: {
+                    rid: row.id
+                }
+            });
+        },
+        showVideo() {
+            this.$router.push({
+                path: '/videoList'
+            });
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.span-size {
+    font-size: 14px;
+    color: #565b66;
+    line-height: 15px;
+    padding: 0 10px 0 10px;
+}
+.span-width {
+    width: 330px;
+    display: inline-block;
+    text-align: right;
+}
+.span-width2 {
+    width: 500px;
+    // float: left;
+    text-align: right;
+    display: inline-block;
+}
+</style>

+ 6 - 6
src/main/vue/src/views/record/RecordRegulationList.vue

@@ -73,16 +73,16 @@
             <el-table-column prop="recordTime" label="备案时间" min-width="90"> </el-table-column>
             <el-table-column label="操作" align="right" fixed="right" min-width="240">
                 <template slot-scope="{ row }">
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
+                    <el-button @click="checkRow(row)" type="warning" size="mini" plain>检查记录</el-button>
                     <el-button
                         @click="openRoom(row)"
-                        type="warning"
+                        type="primary"
                         size="mini"
                         plain
-                        v-if="currentTime < row.examinationEndTime"
+                        v-if="currentTime <= row.examinationEndTime"
                         >考场监控</el-button
                     >
-                    <el-button @click="checkRow(row)" type="warning" size="mini" plain>检查记录</el-button>
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
             </el-table-column>
@@ -168,7 +168,7 @@ export default {
                 sort: 'examinationEndTime,desc',
                 query: {
                     del: false,
-                    today: format(new Date(), 'yyyy-MM-dd')
+                    examinationTime: format(new Date(), 'yyyy-MM-dd')
                 }
             };
             if (this.search) {
@@ -286,7 +286,7 @@ export default {
         },
         openRoom(row) {
             this.$router.push({
-                path: '/recordRoomList',
+                path: '/examRoomList',
                 query: {
                     rid: row.id
                 }

+ 0 - 258
src/main/vue/src/views/record/RecordRoomList.vue

@@ -1,258 +0,0 @@
-<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="openDialog" type="primary" icon="el-icon-plus" class="filter-item" v-if="showAdd"
-                >添加</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="name" label="考场名称"></el-table-column>
-            <el-table-column prop="address" label="地址"></el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" min-width="150">
-                <template slot-scope="{ row }">
-                    <el-button @click="monitor(row)" type="success" size="mini" plain>监控</el-button>
-                    <!-- <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button> -->
-                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain v-if="showAdd">删除</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="600px" center>
-            <EZUIKitJs ref="EZUIKitJs"></EZUIKitJs>
-        </el-dialog>
-        <el-dialog title="添加考场" :visible.sync="dialogRoom" width="600px" center>
-            <el-select
-                v-model="formRoom.addRooms"
-                clearable
-                multiple
-                style="width: 400px; margin-left: 80px"
-                placeholder="请选择考场"
-            >
-                <el-option v-for="item in rooms" :key="item.value" :label="item.label" :value="item.value"></el-option>
-            </el-select>
-            <div style="margin: 20px 0 0 422px">
-                <el-button type="primary" @click="saveRoom">确认</el-button>
-            </div>
-        </el-dialog>
-    </div>
-</template>
-<script>
-import { mapState } from 'vuex';
-import pageableTable from '@/mixins/pageableTable';
-import EZUIKitJs from '../../components/EZUIKitJs.vue';
-
-export default {
-    name: 'RecordRoomList',
-    mixins: [pageableTable],
-    data() {
-        return {
-            multipleMode: false,
-            search: '',
-            url: '/examRoom/byRecord',
-            downloading: false,
-            dialogVisible: false,
-            form: {
-                accessToken: '',
-                deviceSerial: ''
-            },
-            dialogRoom: false,
-            rooms: [],
-            formRoom: {
-                id: '',
-                addRooms: []
-            },
-            showAdd: false
-        };
-    },
-    created() {
-        if (this.$route.query.rid) {
-            this.formRoom.id = Number(this.$route.query.rid);
-        }
-        if (this.organization != null) {
-            this.showAdd = true;
-            this.$http
-                .post('/examRoom/all', { size: 100, query: { organizationId: this.organization.id } }, { body: 'json' })
-                .then(res => {
-                    if (res.content.length > 0) {
-                        res.content.forEach(item => {
-                            this.rooms.push({
-                                label: item.name,
-                                value: item.id
-                            });
-                        });
-                    }
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-        }
-    },
-    computed: {
-        selection() {
-            return this.$refs.table.selection.map(i => i.id);
-        },
-        ...mapState(['organization'])
-    },
-    methods: {
-        beforeGetData() {
-            return {
-                search: this.search,
-                query: {
-                    recordId: this.$route.query.rid
-                }
-            };
-        },
-        toggleMultipleMode(multipleMode) {
-            this.multipleMode = multipleMode;
-            if (!multipleMode) {
-                this.$refs.table.clearSelection();
-            }
-        },
-        addRow() {
-            this.$router.push({
-                path: '/examRoomEdit',
-                query: {
-                    ...this.$route.query
-                }
-            });
-        },
-        editRow(row) {
-            this.$router.push({
-                path: '/examRoomEdit',
-                query: {
-                    id: row.id
-                }
-            });
-        },
-        download() {
-            this.downloading = true;
-            this.$axios
-                .get('/examRoom/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(`/recordExamRoom/delByRecord`, {
-                        recordId: this.formRoom.id,
-                        examRoomId: row.id
-                    });
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.getData();
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        this.$message.error(e.error);
-                    }
-                });
-        },
-        monitor(row) {
-            this.dialogVisible = true;
-            this.form.deviceSerial = row.deviceSerial;
-            this.$http
-                .get('ezvizToken/getToken')
-                .then(res => {
-                    this.form.accessToken = res;
-                    this.$refs.EZUIKitJs.init(this.form);
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-        },
-        openDialog() {
-            this.dialogRoom = true;
-        },
-        saveRoom() {
-            console.log(this.formRoom);
-
-            this.$http
-                .post('/recordExamRoom/add', {
-                    recordId: this.formRoom.id,
-                    addRooms: this.formRoom.addRooms.toString()
-                })
-                .then(res => {
-                    this.$message.success('添加成功');
-                    this.getData();
-                    this.dialogRoom = false;
-                    this.formRoom.id = '';
-                    this.formRoom.addRooms = [];
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-        }
-    },
-    components: {
-        EZUIKitJs
-    }
-};
-</script>
-<style lang="less" scoped>
-.list-view {
-    height: 700px;
-}
-</style>

+ 0 - 160
src/main/vue/src/views/record/RecordSpecialtyEdit.vue

@@ -1,160 +0,0 @@
-<template>
-    <div class="edit-view">
-        <el-form
-            :model="formData"
-            :rules="rules"
-            ref="form"
-            label-width="80px"
-            label-position="right"
-            size="small"
-            style="max-width: 500px;"
-        >
-            <el-form-item prop="code" label="专业名称">
-                <!-- <el-input v-model="formData.name"></el-input> -->
-                <el-cascader
-                    ref="artCascader"
-                    style="width: 100%"
-                    v-model="formData.code"
-                    :props="optionProps"
-                    :options="artTypes"
-                    :show-all-levels="false"
-                    placeholder="请选择专业"
-                    @change="showArt"
-                >
-                </el-cascader>
-            </el-form-item>
-            <el-form-item prop="code" label="专业代码">
-                <el-input v-model="formData.code"></el-input>
-            </el-form-item>
-            <el-form-item prop="level" label="总级数">
-                <el-input v-model="formData.level"></el-input>
-            </el-form-item>
-            <el-form-item prop="numOfExam" label="考场数量">
-                <el-input-number type="number" v-model="formData.numOfExam" style="width: 100%"></el-input-number>
-            </el-form-item>
-            <el-form-item prop="examinerQuantity" label="考官人数">
-                <el-input-number
-                    type="number"
-                    v-model="formData.examinerQuantity"
-                    style="width: 100%"
-                ></el-input-number>
-            </el-form-item>
-            <el-form-item prop="numOfCandidates" label="考试人数">
-                <el-input-number type="number" v-model="formData.numOfCandidates" style="width: 100%"></el-input-number>
-            </el-form-item>
-            <!-- <el-form-item prop="numOfQualified" label="合格人数">
-                <el-input-number type="number" v-model="formData.numOfQualified"></el-input-number>
-            </el-form-item> -->
-            <el-form-item>
-                <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
-                <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
-                <el-button @click="$router.go(-1)">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </div>
-</template>
-<script>
-export default {
-    name: 'RecordSpecialtyEdit',
-    created() {
-        if (this.$route.query.id) {
-            this.$http
-                .get('recordSpecialty/get/' + this.$route.query.id)
-                .then(res => {
-                    this.formData = res;
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-        }
-        if (this.$route.query.rid) {
-            this.formData.recordId = Number(this.$route.query.rid);
-        }
-        this.$http
-            .post('/artType/allList')
-            .then(res => {
-                this.artTypes = this.delChild(res);
-            })
-            .catch(e => {
-                console.log(e);
-            });
-    },
-    data() {
-        return {
-            saving: false,
-            formData: {},
-            rules: {},
-            optionProps: {
-                value: 'code',
-                label: 'name',
-                children: 'children',
-                multiple: false,
-                emitPath: false,
-                checkStrictly: true,
-                expandTrigger: 'hover'
-            },
-            artTypes: []
-        };
-    },
-    methods: {
-        onSave() {
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let data = { ...this.formData };
-
-            this.saving = true;
-            this.$http
-                .post('/recordSpecialty/save', data, { body: 'json' })
-                .then(res => {
-                    this.saving = false;
-                    this.$message.success('成功');
-                    this.$router.go(-1);
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.saving = false;
-                    this.$message.error(e.error);
-                });
-        },
-        onDelete() {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
-                .then(() => {
-                    return this.$http.post(`/recordSpecialty/del/${this.formData.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.$router.go(-1);
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        console.log(e);
-                        this.$message.error((e || {}).error || '删除失败');
-                    }
-                });
-        },
-        delChild(list) {
-            return list.map(item => {
-                const info = {
-                    ...item,
-                    ['children']:
-                        item['children'] && item['children'].length > 0 ? this.delChild(item['children']) : null
-                };
-                return info;
-            });
-        },
-        showArt() {
-            let data = this.$refs['artCascader'].getCheckedNodes()[0].pathLabels;
-            this.formData.name = data[data.length - 1];
-        }
-    }
-};
-</script>
-<style lang="less" scoped></style>

+ 0 - 169
src/main/vue/src/views/record/RecordSpecialtyList.vue

@@ -1,169 +0,0 @@
-<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"
-            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="name" label="专业名称" width="100"> </el-table-column>
-            <el-table-column prop="code" label="专业代码"> </el-table-column>
-            <el-table-column prop="level" label="总级数"> </el-table-column>
-            <el-table-column prop="numOfExam" label="考场数量"> </el-table-column>
-            <el-table-column prop="examinerQuantity" label="考官人数"> </el-table-column>
-            <!-- <el-table-column prop="numOfCandidates" label="考试人数"> </el-table-column> -->
-            <!-- <el-table-column prop="numOfQualified" label="合格人数"> </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>
-                    <el-button @click="deleteRow(row)" type="danger" 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>
-    </div>
-</template>
-<script>
-import { mapState } from 'vuex';
-import pageableTable from '@/mixins/pageableTable';
-
-export default {
-    name: 'RecordSpecialtyList',
-    mixins: [pageableTable],
-    data() {
-        return {
-            multipleMode: false,
-            search: '',
-            url: '/recordSpecialty/all',
-            downloading: false,
-            dialogSpecoalty: false
-        };
-    },
-    computed: {
-        selection() {
-            return this.$refs.table.selection.map(i => i.id);
-        }
-    },
-    methods: {
-        beforeGetData() {
-            return {
-                search: this.search,
-                query: { recordId: Number(this.$route.query.rid) }
-            };
-        },
-        toggleMultipleMode(multipleMode) {
-            this.multipleMode = multipleMode;
-            if (!multipleMode) {
-                this.$refs.table.clearSelection();
-            }
-        },
-        addRow() {
-            this.$router.push({
-                path: '/recordSpecialtyEdit',
-                query: {
-                    ...this.$route.query
-                }
-            });
-        },
-        editRow(row) {
-            this.$router.push({
-                path: '/recordSpecialtyEdit',
-                query: {
-                    id: row.id
-                }
-            });
-        },
-        download() {
-            this.downloading = true;
-            this.$axios
-                .get('/recordSpecialty/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(`/recordSpecialty/del/${row.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.getData();
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        this.$message.error(e.error);
-                    }
-                });
-        }
-    }
-};
-</script>
-<style lang="less" scoped>
-.list-view {
-    height: 700px;
-}
-</style>

+ 12 - 3
src/main/vue/src/views/record/VideoList.vue

@@ -33,7 +33,15 @@
                     ></el-input>
                 </el-form-item>
             </el-col>
-            <el-col :span="14">
+            <el-col :span="8">
+                <el-form-item label="监控视频状态">
+                    <el-select v-model="status" clearable placeholder="请选择监控视频状态">
+                        <el-option label="在线"></el-option>
+                        <el-option label="离线"></el-option>
+                    </el-select>
+                </el-form-item>
+            </el-col>
+            <!-- <el-col :span="14">
                 <el-form-item label="考级活动时间">
                     <el-date-picker
                         v-model="dateRange"
@@ -46,7 +54,7 @@
                     >
                     </el-date-picker>
                 </el-form-item>
-            </el-col>
+            </el-col> -->
         </el-form>
 
         <el-col :span="24">
@@ -83,7 +91,8 @@ export default {
             search: '',
             agency: '',
             organizer: '',
-            dateRange: ''
+            dateRange: '',
+            status: ''
         };
     },
     created() {