licailing 4 tahun lalu
induk
melakukan
1e0d8d3f30

+ 2 - 2
src/main/java/com/izouma/wenlvju/utils/JpaUtils.java

@@ -161,9 +161,9 @@ public class JpaUtils {
                             list.add(Convert.convert(Long.class, s));
                         }
                         and.add(root.get(property).in(list));
-                    } else {
-                        and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value)));
                     }
+                } else {
+                    and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value)));
                 }
             } else {
                 and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value)));

+ 150 - 0
src/main/vue/src/components/MultiUploadRegu.vue

@@ -0,0 +1,150 @@
+<template>
+    <section>
+        <el-upload
+            list-type="picture-card"
+            :action="uploadUrl"
+            :headers="headers"
+            :on-preview="handlePictureCardPreview"
+            :on-remove="handleRemove"
+            :on-success="handleSuccess"
+            :file-list="fileList"
+            multiple
+        >
+            <i class="el-icon-plus"></i>
+            <div slot="tip" class="el-upload__tip">
+                <slot></slot>
+            </div>
+        </el-upload>
+        <el-dialog :visible.sync="dialogVisible">
+            <img width="100%" :src="dialogImageUrl" alt />
+        </el-dialog>
+        <el-image
+            style="width: 0; height: 0; position: absolute;"
+            ref="preview"
+            :src="previewUrl"
+            :preview-src-list="previewList"
+        >
+        </el-image>
+    </section>
+</template>
+<script>
+import resolveUrl from 'resolve-url';
+export default {
+    created() {
+        this.uploadUrl = resolveUrl(this.$baseUrl, 'upload/file');
+        this.updateFileList(this.value);
+    },
+    props: {
+        value: Array,
+        usePrefix: {
+            type: Boolean,
+            default: true
+        },
+        url: {
+            type: String
+        }
+    },
+    data() {
+        return {
+            dialogImageUrl: '',
+            dialogVisible: false,
+            fileList: [],
+            uploadUrl: '',
+            realFileList: [],
+            previewUrl: '',
+            previewList: []
+        };
+    },
+    computed: {
+        headers() {
+            return {
+                Authorization: 'Bearer ' + sessionStorage.getItem('token')
+            };
+        }
+    },
+    methods: {
+        handleRemove(file, fileList) {
+            console.log(file);
+            console.log(fileList);
+            this.realFileList = fileList;
+            this.$emit(
+                'input',
+                fileList.map(i => i.value)
+            );
+        },
+        handlePictureCardPreview(file) {
+            console.log(file);
+            this.previewUrl = file.value;
+            this.previewList = this.fileList.map(i => i.value);
+            console.log(this.$refs.preview.$el);
+            this.$refs.preview.showViewer = true;
+        },
+        handleSuccess(res, file, fileList) {
+            console.log(file);
+            console.log(res);
+            console.log(fileList);
+            if (res instanceof Array) {
+                file.value = res[0];
+            } else {
+                file.value = res;
+            }
+            this.realFileList = fileList;
+            this.$emit(
+                'input',
+                fileList.map(i => i.value)
+            );
+        },
+        updateFileList(list) {
+            console.log(list);
+            if (!list) {
+                list = [];
+            } else if (typeof list == 'string') {
+                list = list.split(',');
+            }
+            for (let i = 0; i < list.length; i++) {
+                if (!this.fileList[i]) {
+                    this.fileList[i] = {
+                        value: list[i],
+                        url: list[i]
+                    };
+                } else if (this.fileList[i].value !== list[i]) {
+                    this.fileList[i] = {
+                        value: list[i],
+                        url: list[i]
+                    };
+                }
+            }
+            this.fileList.splice(list.length);
+            // this.fileList = list.map(i => {
+            //     return {
+            //         value: i,
+            //         url: i,
+            //     };
+            // });
+        }
+    },
+    watch: {
+        value(val, oldVal) {
+            if (JSON.stringify(val) == JSON.stringify(this.realFileList.map(i => i.value))) {
+                return;
+            }
+            this.updateFileList(val);
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.el-upload-list__item-actions {
+    width: 100px !important;
+    height: 100px !important;
+}
+/deep/.el-upload--picture-card {
+    width: 90px;
+    height: 90px;
+    line-height: 98px;
+}
+/deep/.el-upload-list--picture-card .el-upload-list__item {
+    width: 90px;
+    height: 90px;
+}
+</style>

+ 270 - 0
src/main/vue/src/components/RegulationDrawer.vue

@@ -0,0 +1,270 @@
+<template>
+    <el-drawer
+        title="检查记录"
+        :visible.sync="drawerVisible"
+        size="50%"
+        :with-header="false"
+        @close="closeDrawer"
+        destroy-on-close
+    >
+        <div v-if="lists.length == 0 && checkMap.get(recordId).length == 0">
+            <div style="text-align:center;padding:100px 0; font-size: 14px; color: #4a4646" v-if="!edit">暂无数据</div>
+        </div>
+        <div style="margin: 30px">
+            <el-timeline v-if="lists.length > 0">
+                <el-timeline-item :timestamp="item.createdAt" placement="top" v-for="item in lists" :key="item.id">
+                    <div style="font-size: 14px; color: #4a4646">
+                        {{ tipsType[item.type] }}
+                    </div>
+                    <div style="margin-top:5px">
+                        <el-radio-group v-model="item.value" :disabled="!edit">
+                            <el-radio :label="true">是</el-radio>
+                            <el-radio :label="false">否</el-radio>
+                        </el-radio-group>
+                    </div>
+
+                    <div style="margin-top:5px">
+                        <div v-if="!edit">
+                            <el-image
+                                v-for="(img, index) in item.img"
+                                :key="index"
+                                :src="img"
+                                style="width:60px;height:60px;margin-right:3px"
+                                :preview-src-list="item.img"
+                            >
+                            </el-image>
+                        </div>
+                        <multi-upload-regu v-model="item.img" v-else></multi-upload-regu>
+                    </div>
+                </el-timeline-item>
+            </el-timeline>
+            <el-timeline v-else-if="edit">
+                <el-timeline-item
+                    :timestamp="tipsType[index]"
+                    placement="top"
+                    v-for="(item, index) in tipsType"
+                    :key="item.id"
+                >
+                    <div style="margin-top:5px">
+                        <el-radio-group v-model="item.value">
+                            <el-radio :label="true">是</el-radio>
+                            <el-radio :label="false">否</el-radio>
+                        </el-radio-group>
+                    </div>
+
+                    <div style="margin-top:5px">
+                        <multi-upload-regu v-model="item.img"></multi-upload-regu>
+                    </div>
+                </el-timeline-item>
+            </el-timeline>
+
+            <el-timeline reverse v-if="checkMap.get(recordId).length > 0">
+                <el-timeline-item
+                    :timestamp="item.createdAt"
+                    placement="top"
+                    v-for="item in checkMap.get(recordId)"
+                    :key="item.id"
+                >
+                    <div style="font-size: 14px; color: #4a4646" v-if="!edit">
+                        {{ item.content }}
+                    </div>
+                    <el-input v-else type="textarea" :rows="2" v-model="item.content"></el-input>
+                    <div style="margin-top:5px">
+                        <div v-if="!edit">
+                            <el-image
+                                v-for="(img, index) in item.file"
+                                :key="index"
+                                :src="img"
+                                fit="fill"
+                                :lazy="true"
+                                style="width:60px;height:60px;margin-right:3px"
+                                :preview-src-list="item.file"
+                            >
+                            </el-image>
+                        </div>
+                        <multi-upload-regu v-model="item.img" v-else></multi-upload-regu>
+                    </div>
+                </el-timeline-item>
+            </el-timeline>
+
+            <div>
+                <el-button @click="edit = true" size="mini" plain v-if="!edit">编辑</el-button>
+                <el-button @click="saveRow(recordId)" type="success" size="mini" plain v-if="edit" :saving="saving"
+                    >保存</el-button
+                >
+                <el-button @click="edit = false" size="mini" plain v-if="edit">取消</el-button>
+            </div>
+        </div>
+    </el-drawer>
+</template>
+<script>
+import MultiUploadRegu from './MultiUploadRegu.vue';
+export default {
+    components: { MultiUploadRegu },
+    props: ['drawerVisible'],
+    data() {
+        return {
+            lists: [],
+            checkMap: new Map(),
+            tipsType: {
+                examOrganization: '是否履行考前备案手续(此项为否,不再检查下面内容)',
+                examSite: '是否在考场明显位置张贴《考级简章》',
+                examRoom: '考场服务设施是否完善(候考室、指示标记、安全设施等)',
+                environment: '考级时间与网上平台考前备案的考级时间是否一致',
+                safetyq: '考场内有无相关专业考官且佩戴考官证',
+                safetyw: '是否现场对考生艺术水平作出评定(美术专业除外)',
+                safetye: '考级内容是否是所属考级机构教材确定的考级内容',
+                safetyr: '是否在考场明显位置张贴《恢复开展社会艺术水平考级现场考级活动疫情防控措施指南》海报',
+                safetyt: '考点是否配备测量体温设施设备,并有专人值守',
+                safetys: '考级现场是否实施预约限流措施'
+            },
+            recordId: '',
+            edit: false,
+            saving: false
+        };
+    },
+    computed: {
+        saveOtherJson() {
+            const checks = [...this.checks]
+                .filter(item => {
+                    return !!item.content || !!item.files;
+                })
+                .map(item => {
+                    return {
+                        ...item,
+                        recordId: this.recordId
+                    };
+                });
+            return JSON.stringify(checks);
+        },
+        dataCon() {
+            return this.lists.map(item => {
+                return {
+                    recordId: this.recordId,
+                    type: item.type,
+                    value: item.value,
+                    img: item.img
+                };
+            });
+        }
+    },
+    methods: {
+        closeDialog() {
+            this.$emit('closeDrawer');
+        },
+        init(row) {
+            this.recordId = row;
+            this.expand(row);
+        },
+        expand(row) {
+            let checks = new Map([...this.checkMap]);
+            // if (checks.has(row)) {
+            //     return;
+            // }
+            this.$http
+                .post(
+                    'recordCheck/all',
+                    {
+                        size: 20,
+                        sort: 'createdAt,asc',
+                        query: { recordId: row }
+                    },
+                    { body: 'json' }
+                )
+                .then(res => {
+                    if (!res.empty) {
+                        checks.set(row, res.content);
+                    } else {
+                        return Promise.reject();
+                    }
+                })
+                .catch(e => {
+                    checks.set(row, []);
+                })
+                .then(() => {
+                    this.checkMap = new Map(checks);
+                });
+            this.$http
+                .post(
+                    'recordExpertAudit/all',
+                    {
+                        size: 100,
+                        query: {
+                            recordId: row
+                        }
+                    },
+                    { body: 'json' }
+                )
+                .then(res => {
+                    this.lists = res.content;
+                });
+        },
+        closeDrawer() {
+            this.lists = [];
+            this.edit = false;
+            this.$parent.drawer = false;
+        },
+        onSave() {
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            this.saving = true;
+            this.$http
+                .post('/recordCheck/batchSave', { checks: this.saveOtherJson })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+            this.$http
+                .post('/recordExpertAudit/batchSave', this.dataCon, { body: 'json' })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                    this.edit = false;
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.width {
+    width: 350px;
+}
+/deep/.el-input.is-disabled .el-input__inner {
+    background-color: #ffffff;
+    color: #606266;
+}
+/deep/.el-timeline-item__timestamp {
+    // color: #0561d9;
+    color: #201e1e;
+    line-height: 1;
+    font-size: 14px;
+}
+/deep/.el-timeline-item__node {
+    background-color: #5b9bed;
+    // background-color: #9d9a9a;
+}
+/deep/.el-timeline-item__tail {
+    // border-left: 2px solid #7cace9;
+    border-left: 2px solid #9d9a9a;
+}
+/deep/.el-radio__input.is-disabled + span.el-radio__label {
+    color: #606266; // #409EFF;
+}
+</style>

+ 2 - 0
src/main/vue/src/main.js

@@ -7,6 +7,7 @@ import http from './plugins/http';
 import dataExport from '@/plugins/dataExport';
 import SortableHeader from '@/components/SortableHeader';
 import MultiUpload from '@/components/MultiUpload';
+import MultiUploadRegu from '@/components/MultiUploadRegu';
 import SingleUpload from '@/components/SingleUpload';
 import SingleUpload2 from '@/components/SingleUpload2';
 import FileUpload from '@/components/FileUpload';
@@ -50,6 +51,7 @@ Vue.use(dataExport);
 Vue.use(VueClipboard);
 Vue.component('sortable-header', SortableHeader);
 Vue.component('multi-upload', MultiUpload);
+Vue.component('multi-upload-regu', MultiUploadRegu);
 Vue.component('single-upload', SingleUpload);
 Vue.component('single-upload2', SingleUpload2);
 Vue.component('file-upload', FileUpload);

+ 12 - 3
src/main/vue/src/views/performance/ProgScoreAdminList.vue

@@ -2,8 +2,6 @@
     <div class="list-view">
         <div class="filters-container">
             <el-form :model="form" size="mini" inline>
-                <!-- <el-row> -->
-                <!-- <el-col :span="24"> -->
                 <el-row>
                     <el-col :span="8">
                         <el-form-item label="活动名称">
@@ -11,7 +9,6 @@
                                 v-model="performanceId"
                                 filterable
                                 placeholder="展演活动名称"
-                                style="width: 300px"
                                 @change="changeAddress"
                             >
                                 <el-option
@@ -106,6 +103,13 @@
                         size="mini"
                         >{{ showMore ? '隐藏查询区域' : '显示查询区域' }}</el-button
                     >
+                    <!-- <el-link
+                        @click="showMore = !showMore"
+                        :icon="showMore ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"
+                        :underline="false"
+                        class="show"
+                        >{{ showMore ? '隐藏查询区域' : '显示查询区域' }}</el-link
+                    > -->
                 </div>
                 <el-form-item>
                     <el-button @click="getData" type="primary" icon="el-icon-search" size="mini">查询 </el-button>
@@ -659,4 +663,9 @@ export default {
         }
     }
 }
+.show {
+    // background-color: #f9fafc;
+    width: 96%;
+    padding: 10px;
+}
 </style>

+ 62 - 151
src/main/vue/src/views/record/RecordRegulationHistory.vue

@@ -1,50 +1,60 @@
 <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-form size="mini" inline>
+                <el-row>
+                    <el-col :span="8">
+                        <el-form-item label="考级活动名称">
+                            <el-input placeholder="输入考级活动名称" v-model="search" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="8">
+                        <el-form-item label="考级机构名称"
+                            ><el-input placeholder="输入考级机构名称" v-model="agency" clearable></el-input
+                        ></el-form-item>
+                    </el-col>
+                    <el-col :span="8">
+                        <el-form-item label="考级地点">
+                            <el-select 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-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="8">
+                        <el-form-item label="承办单位名称">
+                            <el-input placeholder="输入承办单位名称" v-model="organizer" clearable></el-input>
+                        </el-form-item>
+                    </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>
-                </div>
-            </el-col>
+                    <el-col :span="14">
+                        <el-form-item label="考级活动时间">
+                            <el-date-picker
+                                v-model="dateRange"
+                                type="daterange"
+                                value-format="yyyy-MM-dd"
+                                start-placeholder="请选择开始时间"
+                                end-placeholder="请选择结束时间"
+                                range-separator="至"
+                            >
+                            </el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item>
+                            <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
         </div>
         <el-table
             :data="tableData"
@@ -110,7 +120,7 @@
             <el-table-column label="操作" align="right" fixed="right" min-width="260">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" size="mini" plain>查看</el-button>
-                    <el-button @click="openDrawer(row)" type="warning" size="mini" plain>检查记录</el-button>
+                    <el-button @click="openDrawer(row.id)" type="warning" size="mini" plain>检查记录</el-button>
                     <el-button size="mini" type="primary" plain>考场监控</el-button>
                 </template>
             </el-table-column>
@@ -138,63 +148,7 @@
         </div>
         <record-log ref="dataRefs" :dialogVisible="isShow" @close="isShow = false"></record-log>
         <record-logs ref="dataRef" :dialogVisibles="isShows" @close="isShows = false"></record-logs>
-        <el-drawer title="检查记录" :visible.sync="drawer" size="40%" :with-header="false">
-            <div v-if="lists.length <= 0" style="padding:100px 0; font-size: 14px; color: #4a4646">
-                <div style="text-align:center">暂无数据</div>
-            </div>
-            <div style="margin: 30px" v-else>
-                <el-timeline-item :timestamp="item.createdAt" placement="top" v-for="item in lists" :key="item.id">
-                    <div style="font-size: 14px; color: #4a4646">
-                        {{ tipsType[item.type] }}
-                    </div>
-                    <div style="margin-top:5px">
-                        <!-- {{ item.value ? '是' : '否' }} -->
-                        <el-radio-group v-model="item.value" disabled>
-                            <el-radio :label="true">是</el-radio>
-                            <el-radio :label="false">否</el-radio>
-                        </el-radio-group>
-                    </div>
-
-                    <div style="margin-top:5px">
-                        <el-image
-                            v-for="(img, index) in item.img"
-                            :key="index"
-                            :src="img"
-                            style="width:60px;height:60px;margin-right:3px"
-                            :preview-src-list="item.img"
-                        >
-                        </el-image>
-                    </div>
-                </el-timeline-item>
-                <el-timeline reverse>
-                    <el-timeline-item
-                        :timestamp="item.createdAt"
-                        placement="top"
-                        v-for="item in checkMap.get(row.id)"
-                        :key="item.id"
-                    >
-                        <div style="font-size: 14px; color: #4a4646">
-                            {{ item.content }}
-                        </div>
-                        <div style="margin-top:5px">
-                            <el-image
-                                v-for="(img, index) in item.file"
-                                :key="index"
-                                :src="img"
-                                fit="fill"
-                                :lazy="true"
-                                style="width:60px;height:60px;margin-right:3px"
-                                :preview-src-list="item.file"
-                            >
-                            </el-image>
-                        </div>
-                    </el-timeline-item>
-                </el-timeline>
-                <div>
-                    <el-button @click="saveRow(row)" size="mini" plain>编辑</el-button>
-                </div>
-            </div>
-        </el-drawer>
+        <regulation-drawer ref="drawerRefs" :drawerVisible="drawer"></regulation-drawer>
     </div>
 </template>
 <script>
@@ -205,11 +159,12 @@ import format from 'date-fns/format';
 import startOfDay from 'date-fns/startOfDay';
 import endOfDay from 'date-fns/endOfDay';
 import { th } from 'date-fns/locale';
+import RegulationDrawer from '../../components/RegulationDrawer.vue';
 
 export default {
     name: 'RecordRegulationHistory',
     mixins: [pageableTable],
-    components: { RecordLogs, RecordLog },
+    components: { RecordLogs, RecordLog, RegulationDrawer },
     created() {
         this.$http
             .post('/setting/byFlag', { flag: 2 })
@@ -232,8 +187,6 @@ export default {
             categoryOptions: [{ label: '承办单位', value: 'ORGANIZER' }],
             districts: [],
             district: '',
-            city: '南京市',
-            status: '',
             recordDateRange: '',
             agency: '',
             organizer: '',
@@ -242,7 +195,6 @@ export default {
             checkMap: new Map(),
             drawer: false,
             row: {},
-            lists: [],
             isShows: false
         };
     },
@@ -383,54 +335,9 @@ export default {
                 path: '/videoList'
             });
         },
-        expand(row) {
-            let checks = new Map([...this.checkMap]);
-            if (checks.has(row.id)) {
-                return;
-            }
-            this.$http
-                .post(
-                    'recordCheck/all',
-                    {
-                        size: 20,
-                        sort: 'createdAt,asc',
-                        query: { recordId: row.id }
-                    },
-                    { body: 'json' }
-                )
-                .then(res => {
-                    if (!res.empty) {
-                        checks.set(row.id, res.content);
-                    } else {
-                        return Promise.reject();
-                    }
-                })
-                .catch(e => {
-                    checks.set(row.id, []);
-                })
-                .then(() => {
-                    this.checkMap = new Map(checks);
-                });
-            this.$http
-                .post(
-                    'recordExpertAudit/all',
-                    {
-                        size: 20,
-                        query: {
-                            recordId: row.id
-                        }
-                    },
-                    { body: 'json' }
-                )
-                .then(res => {
-                    this.lists = res.content;
-                    // this.empty = res.empty;
-                });
-        },
         openDrawer(row) {
             this.drawer = true;
-            this.row = row;
-            this.expand(row);
+            this.$refs.drawerRefs.init(row);
         }
     }
 };
@@ -470,4 +377,8 @@ export default {
 /deep/.el-radio__input.is-disabled + span.el-radio__label {
     color: #606266; // #409EFF;
 }
+/deep/.el-form-item--mini.el-form-item,
+.el-form-item--small.el-form-item {
+    margin-bottom: 10px;
+}
 </style>

+ 64 - 216
src/main/vue/src/views/record/RecordRegulationList.vue

@@ -1,53 +1,63 @@
 <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-form size="mini" inline>
+                <el-row>
+                    <el-col :span="8">
+                        <el-form-item label="考级活动名称">
+                            <el-input placeholder="输入考级活动名称" v-model="search" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="8">
+                        <el-form-item label="考级机构名称"
+                            ><el-input placeholder="输入考级机构名称" v-model="agency" clearable></el-input
+                        ></el-form-item>
+                    </el-col>
+                    <el-col :span="8">
+                        <el-form-item label="考级地点">
+                            <el-select 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-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="8">
+                        <el-form-item label="承办单位名称">
+                            <el-input placeholder="输入承办单位名称" v-model="organizer" clearable></el-input>
+                        </el-form-item>
+                    </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>
+                    <el-col :span="14">
+                        <el-form-item label="考级活动时间">
+                            <el-date-picker
+                                v-model="dateRange"
+                                type="daterange"
+                                value-format="yyyy-MM-dd"
+                                start-placeholder="请选择开始时间"
+                                end-placeholder="请选择结束时间"
+                                range-separator="至"
+                            >
+                            </el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item>
+                            <el-button @click="getData" type="primary" icon="el-icon-search">查询 </el-button>
+                            <el-button @click="showVideo" type="primary" icon="el-icon-video-camera"
+                                >监控平台
+                            </el-button>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
         </div>
         <el-table
             :data="tableData"
@@ -102,63 +112,7 @@
         </div>
         <record-log ref="dataRefs" :dialogVisible="isShow" @close="isShow = false"></record-log>
         <record-logs ref="dataRef" :dialogVisibles="isShows" @close="isShows = false"></record-logs>
-        <el-drawer title="检查记录" :visible.sync="drawer" size="40%" :with-header="false" @close="lists = []">
-            <div v-if="lists.length <= 0" style="padding:100px 0; font-size: 14px; color: #4a4646">
-                <div style="text-align:center">暂无数据</div>
-            </div>
-            <div style="margin: 30px" v-else>
-                <el-timeline-item :timestamp="item.createdAt" placement="top" v-for="item in lists" :key="item.id">
-                    <div style="font-size: 14px; color: #4a4646">
-                        {{ tipsType[item.type] }}
-                    </div>
-                    <div style="margin-top:5px">
-                        <!-- {{ item.value ? '是' : '否' }} -->
-                        <el-radio-group v-model="item.value" disabled>
-                            <el-radio :label="true">是</el-radio>
-                            <el-radio :label="false">否</el-radio>
-                        </el-radio-group>
-                    </div>
-
-                    <div style="margin-top:5px">
-                        <el-image
-                            v-for="(img, index) in item.img"
-                            :key="index"
-                            :src="img"
-                            style="width:60px;height:60px;margin-right:3px"
-                            :preview-src-list="item.img"
-                        >
-                        </el-image>
-                    </div>
-                </el-timeline-item>
-                <el-timeline reverse>
-                    <el-timeline-item
-                        :timestamp="item.createdAt"
-                        placement="top"
-                        v-for="item in checkMap.get(recordId)"
-                        :key="item.id"
-                    >
-                        <div style="font-size: 14px; color: #4a4646">
-                            {{ item.content }}
-                        </div>
-                        <div style="margin-top:5px">
-                            <el-image
-                                v-for="(img, index) in item.file"
-                                :key="index"
-                                :src="img"
-                                fit="fill"
-                                :lazy="true"
-                                style="width:60px;height:60px;margin-right:3px"
-                                :preview-src-list="item.file"
-                            >
-                            </el-image>
-                        </div>
-                    </el-timeline-item>
-                </el-timeline>
-                <div>
-                    <el-button @click="saveRow(recordId)" size="mini" plain>编辑</el-button>
-                </div>
-            </div>
-        </el-drawer>
+        <regulation-drawer ref="drawerRefs" :drawerVisible="drawer"></regulation-drawer>
     </div>
 </template>
 <script>
@@ -169,11 +123,12 @@ import format from 'date-fns/format';
 import startOfDay from 'date-fns/startOfDay';
 import endOfDay from 'date-fns/endOfDay';
 import { th } from 'date-fns/locale';
+import RegulationDrawer from '../../components/RegulationDrawer.vue';
 
 export default {
     name: 'RecordRegulationList',
     mixins: [pageableTable],
-    components: { RecordLog, RecordLogs },
+    components: { RecordLog, RecordLogs, RegulationDrawer },
     created() {
         this.$http
             .post('/setting/byFlag', { flag: 2 })
@@ -191,16 +146,13 @@ export default {
             multipleMode: false,
             isShow: false,
             isShows: false,
-            lists: [],
             search: '',
             url: '/record/all',
             downloading: false,
             categoryOptions: [{ label: '承办单位', value: 'ORGANIZER' }],
             districts: [],
             district: '',
-            city: '南京市',
             status: '',
-            recordDateRange: '',
             agency: '',
             organizer: '',
             dateRange: '',
@@ -217,9 +169,7 @@ export default {
                 safetyt: '考点是否配备测量体温设施设备,并有专人值守',
                 safetys: '考级现场是否实施预约限流措施'
             },
-            checkMap: new Map(),
-            drawer: false,
-            recordId: {}
+            drawer: false
         };
     },
     computed: {
@@ -263,25 +213,10 @@ export default {
                 this.$refs.table.clearSelection();
             }
         },
-        addRow() {
-            this.$router.push({
-                path: '/recordEdit',
-                query: {
-                    ...this.$route.query
-                }
-            });
-        },
         editRow(row) {
             this.isShows = true;
             this.$refs.dataRef.init(row.id);
         },
-        checkRow(row) {
-            this.$refs.table.toggleRowExpansion(row, true);
-        },
-        saveRow(row) {
-            this.isShow = true;
-            this.$refs.dataRefs.init(row);
-        },
         download() {
             this.downloading = true;
             this.$axios
@@ -335,17 +270,6 @@ export default {
                     }
                 });
         },
-        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: '/showRoomList',
@@ -359,92 +283,16 @@ export default {
                 path: '/videoList'
             });
         },
-        expand(row) {
-            let checks = new Map([...this.checkMap]);
-            // if (checks.has(row)) {
-            //     return;
-            // }
-            this.$http
-                .post(
-                    'recordCheck/all',
-                    {
-                        size: 20,
-                        sort: 'createdAt,asc',
-                        query: { recordId: row }
-                    },
-                    { body: 'json' }
-                )
-                .then(res => {
-                    if (!res.empty) {
-                        checks.set(row, res.content);
-                    } else {
-                        return Promise.reject();
-                    }
-                })
-                .catch(e => {
-                    checks.set(row, []);
-                })
-                .then(() => {
-                    this.checkMap = new Map(checks);
-                });
-            this.$http
-                .post(
-                    'recordExpertAudit/all',
-                    {
-                        size: 20,
-                        query: {
-                            recordId: row
-                        }
-                    },
-                    { body: 'json' }
-                )
-                .then(res => {
-                    console.log(res);
-                    this.lists = res.content;
-                    // this.empty = res.empty;
-                });
-        },
         openDrawer(row) {
             this.drawer = true;
-            this.recordId = row;
-            this.expand(row);
+            this.$refs.drawerRefs.init(row);
         }
     }
 };
 </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;
-}
-/deep/.el-timeline-item__timestamp {
-    // color: #0561d9;
-    color: #201e1e;
-    line-height: 1;
-    font-size: 14px;
-}
-/deep/.el-timeline-item__node {
-    // background-color: #5b9bed;
-    background-color: #9d9a9a;
-}
-/deep/.el-timeline-item__tail {
-    // border-left: 2px solid #7cace9;
-    border-left: 2px solid #9d9a9a;
-}
-/deep/.el-radio__input.is-disabled + span.el-radio__label {
-    color: #606266; // #409EFF;
+/deep/.el-form-item--mini.el-form-item,
+.el-form-item--small.el-form-item {
+    margin-bottom: 10px;
 }
 </style>