From 8f03059619b5a5e9574b71d2ada27b76db2ffd7a Mon Sep 17 00:00:00 2001
From: Admin <978517621@qq.com>
Date: 星期五, 18 十一月 2022 16:48:28 +0800
Subject: [PATCH] 新增

---
 src/views/supervision/index.vue                         |  141 ++
 src/api/selfCheck.js                                    |  110 ++
 src/views/selfCheck/components/repair.vue               |  152 +-
 src/views/specialCheck/components/sumSheet.vue          |  361 ++++++
 src/views/specialCheck/components/feedbackDetails.vue   |  761 ++++++++++---
 /dev/null                                               |  240 ----
 src/api/specialCheck.js                                 |   98 +
 src/views/specialCheck/components/wholesaleForm.vue     |  260 ++-
 src/views/selfCheck/components/selfReport.vue           |  114 +
 src/views/specialCheck/index.vue                        |   96 +
 src/views/specialCheck/components/reportDetails.vue     |   63 
 src/views/specialCheck/components/sendWork.vue          |  177 +-
 src/views/selfCheck/index.vue                           |  115 -
 src/views/supervision/components/supervisionDetails.vue |  318 +++++
 src/views/selfCheck/components/checkDetails.vue         |  253 ++++
 15 files changed, 2,439 insertions(+), 820 deletions(-)

diff --git a/src/api/selfCheck.js b/src/api/selfCheck.js
new file mode 100644
index 0000000..b368b96
--- /dev/null
+++ b/src/api/selfCheck.js
@@ -0,0 +1,110 @@
+import request from '@/utils/request'
+import { getToken } from '@/utils/auth'
+
+// 查询未完成专项任务
+export function getUnDoneCheckTask(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/checkTask/select/selectUnDoneCheckTaskByPage',
+        method:'post',
+        data
+    })
+}
+
+// 上报自查情况
+export function saveSelfCheckReport(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/enterpriseTaskReport/insert/saveSelfCheckReport',
+        method:'post',
+        data
+    })
+}
+
+// 根据上传任务id查询任务基础信息
+export function getSelfBaseInfo(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/enterpriseTaskReport/select/getSelfCheckReportBaseInfo',
+        method:'post',
+        data
+    })
+}
+
+// 根据上传任务id查询关联的隐患基本信息
+export function getSelfRectifyInfo(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/enterpriseTaskReport/select/getSelfCheckRectifyBaseInfo',
+        method:'post',
+        data
+    })
+}
+
+// 根据隐患id反馈隐患报告
+export function saveSelfRectifyInfo(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/enterpriseTaskReport/insert/saveSelfCheckRectifyReport',
+        method:'post',
+        data
+    })
+}
+
+// 根据记录上传id查询所有的报送信息
+export function getEnterpriseInfo(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/enterpriseTaskReport/select/getEnterpriseSubmitInfo',
+        method:'post',
+        data
+    })
+}
+
+// 获取所有被监管机构抽查记录
+export function getSpotCheckTask(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/enterpriseTaskReport/select/listCompletedSpotCheckTaskByPage',
+        method:'post',
+        data
+    })
+}
+
+// 根据抽查记录和监管层级查询抽查报告
+export function getSpotCheckRecorder(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/enterpriseTaskReport/select/getSpotCheckRecorderByUnitType',
+        method:'post',
+        data
+    })
+}
+
+// 根据监管机构的抽查记录进行整改反馈
+export function updateSpotCheckRectifyInfo(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/enterpriseTaskReport/update/updateSpotCheckRectifyInfo',
+        method:'post',
+        data
+    })
+}
diff --git a/src/api/specialCheck.js b/src/api/specialCheck.js
new file mode 100644
index 0000000..822313e
--- /dev/null
+++ b/src/api/specialCheck.js
@@ -0,0 +1,98 @@
+import request from '@/utils/request'
+import { getToken } from '@/utils/auth'
+
+// 监管机构所属层级
+export function getCheckUnitType(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/checkUnit/select/getCheckUnitType',
+        method:'post',
+        data
+    })
+}
+
+// 查询需要执行的专项任务
+export function getSpecialCheckTask(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/checkTask/select/listSpecialCheckTask',
+        method:'post',
+        data
+    })
+}
+
+// 监管机构下发任务(省级)
+export function sendCheckTask(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/checkTask/insert/saveCheckTask',
+        method:'post',
+        data
+    })
+}
+
+// 查询所辖企业专项任务完成情况
+export function getEnterpriseCompleteInfoList(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/checkTask/select/listEnterpriseCompletionInfo',
+        method:'post',
+        data
+    })
+}
+
+// 抽查企业自查记录并反馈
+export function saveSpotCheckReport(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/taskSpotCheck/insert/saveSpotCheckReport',
+        method:'post',
+        data
+    })
+}
+
+// 查询所有层级的抽查报告
+export function getSpotCheckReportInfo(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/taskSpotCheck/select/getSpotCheckReportInfo',
+        method:'post',
+        data
+    })
+}
+
+// 对抽查报告进行修改
+export function updateSpotCheckReport(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/taskSpotCheck/update/updateSpotCheckReport',
+        method:'post',
+        data
+    })
+}
+
+// 数据统计接口
+export function getDataStatistics(data){
+    return request({
+        headers:{
+            'Authorization':getToken()
+        },
+        url:process.env.BASE_API+ '/checkDataStatistics/select/getDataStatistics',
+        method:'post',
+        data
+    })
+}
diff --git a/src/views/selfCheck/components/checkDetails.vue b/src/views/selfCheck/components/checkDetails.vue
new file mode 100644
index 0000000..6d073fe
--- /dev/null
+++ b/src/views/selfCheck/components/checkDetails.vue
@@ -0,0 +1,253 @@
+<template>
+    <el-dialog
+        :visible.sync="dialogVisible"
+        append-to-body
+        :close-on-click-modal="false"
+        width="75%"
+        center
+    >
+         <div slot="title" class="dialog-title">
+            烟花爆竹批发企业自查情况信息报送表
+         </div>
+        <div class="table-tit">
+            <div>企业名称: <span class="m-color">{{corpInfo.enterpriseName}}</span></div>
+            <div>所属省市县: <span class="m-color">{{corpInfo.enterpriseProvince + corpInfo.enterpriseCity + corpInfo.enterpriseArea}}</span></div>
+        </div>
+        <div class="corp-list" v-if="corpInfo.selfcheckStatus==1">
+            <table class="corp-table">
+                <th class="m-color b-font">企业基本情况</th>
+                <tr>
+                    <td class="m-color w-33">批发许可证状态</td>
+                    <td class="m-color w-33">库存(万箱)</td>
+                    <td class="m-color w-33">库容(万箱)</td>
+                </tr>
+                <tr>
+                    <td class="w-33">{{corpInfo.licenceValidStatus==0 ? '有效期内' : '失效'}}</td>
+                    <td class="w-33">{{corpInfo.stockNum}}</td>
+                    <td class="w-33">{{corpInfo.storageCapacity}}</td>
+                </tr>
+                <tr class="m-color b-font" style="text-align: center" v-if="corpInfo.hiddendangerStatus == 1">自查与整改情况</tr>
+                <tr v-if="corpInfo.hiddendangerStatus == 1">
+                    <td class="m-color w-5">序号</td>
+                    <td class="m-color w-15">自查隐患问题描述</td>
+                    <td class="m-color w-12">检查时间</td>
+                    <td class="m-color w-10">隐患等级</td>
+                    <td class="m-color w-23">整改措施</td>
+                    <td class="m-color w-10">整改资金(元)</td>
+                    <td class="m-color w-5">责任人</td>
+                    <td class="m-color w-20">隐患状态</td>
+                </tr>
+                <tr v-for="(item,index) in corpInfo.hiddendangerInfos" :key="index" v-if="corpInfo.hiddendangerStatus == 1">
+                    <td class="w-5">{{index}}</td>
+                    <td class="w-15 overText">{{item.hiddendangerRemark}}</td>
+                    <td class="w-12 overText">{{item.checkTime}}</td>
+                    <td class="w-10">{{item.hiddendangerLevel == 1 ? '一般隐患' : '重大隐患'}}</td>
+                    <td class="w-23 overText">{{item.rectifyMeasure}}</td>
+                    <td class="w-10">{{item.rectifyPrice}}</td>
+                    <td class="w-5 overText">{{item.chargePerson}}</td>
+                    <td class="w-20 overText">{{item.rectifyStatus == 0 ? '整改完成期限:' + item.rectifyDeadlineTime : item.completeRectifyTime + '整改完成'}}</td>
+                </tr>
+                <tr>
+                    <td class="m-color w-50">隐患问题情况</td>
+                    <td class="m-color w-50">整改情况</td>
+                </tr>
+                <tr>
+                    <td class="m-color w-25">隐患总数</td>
+                    <td class="m-color w-25">重大隐患数量</td>
+                    <td class="m-color w-25">已整改隐患总数</td>
+                    <td class="m-color w-25">已整改重大隐患数量</td>
+                </tr>
+                <tr>
+                    <td class="w-25">{{corpInfo.hiddendangerSum?corpInfo.hiddendangerSum:0}}</td>
+                    <td class="w-25">{{corpInfo.majorHiddendangerNum?corpInfo.majorHiddendangerNum:0}}</td>
+                    <td class="w-25">{{corpInfo.completedRectifyHiddendangerSum?corpInfo.completedRectifyHiddendangerSum:0}}</td>
+                    <td class="w-25">{{corpInfo.completedRectifyMajorHiddendangerNum?corpInfo.completedRectifyMajorHiddendangerNum:0}}</td>
+                </tr>
+            </table>
+            <div class="table-bottom">
+                <div v-if="corpInfo.selfcheckReportUserName">填报人: <span class="m-color">{{corpInfo.selfcheckReportUserName}}</span></div>
+            </div>
+            <div class="table-bottom">
+                <div v-if="corpInfo.selfcheckReportUserMobile">填报人联系电话: <span class="m-color">{{corpInfo.selfcheckReportUserMobile}}</span></div>
+                <div v-if="corpInfo.reportModifyTime">填报时间: <span class="m-color">{{corpInfo.reportModifyTime}}</span></div>
+            </div>
+        </div>
+        <div v-else style="font-size: 18px;margin-top: 20px;color: #034EA2;font-weight: bolder">
+            该企业未上报自查信息
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="confirmBack()">返回</el-button>
+        </span>
+    </el-dialog>
+</template>
+
+<script>
+    import {computePageCount} from "@/utils";
+    import { getEnterpriseInfo } from "@/api/selfCheck";
+
+    export default {
+        name: "reportDetails",
+        data(){
+            return{
+                dialogVisible:false,
+                id: null,
+                corpInfo:{
+                    enterpriseName: '',
+                    enterpriseProvince: '',
+                    enterpriseCity: '',
+                    enterpriseArea: '',
+                    licenceValidStatus: 0,
+                    stockNum: 0,
+                    store: 0,
+                    hiddendangerInfos: [],
+                    hiddendangerSum: 0,
+                    majorHiddendangerNum: 0,
+                    completedRectifyHiddendangerSum: 0,
+                    completedRectifyMajorHiddendangerNum: 0,
+                    selfcheckReportUserName: '',
+                    selfcheckReportUserMobile: '',
+                    reportModifyTime: ''
+                }
+            }
+        },
+        watch: {
+        },
+        methods:{
+            async getEnterpriseInfo(){
+                const t = this
+                let res = await getEnterpriseInfo({id: t.id})
+                if(res.data.code === "200"){
+                    t.corpInfo = res.data.result
+                    console.log(t.corpInfo,'t.corpInfo')
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+            },
+
+            confirmBack(){
+                this.dialogVisible = false
+            }
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+    .input-with-select .el-select {
+        width: 120px;
+    }
+
+    .el-date-editor.el-input{
+        width: 100%;
+    }
+    .dialog-title{
+        font-size: 22px;
+        font-weight: bolder;
+    }
+    .table-tit{
+        display: flex;
+        align-items: center;
+        margin-bottom: 10px;
+        div:first-of-type{
+            margin-right: 100px;
+        }
+    }
+    .corp-list{
+        .corp-table{
+            width: 100%;
+            border-collapse: collapse;
+            border: 1px solid #79bbff;
+            margin: 10px 0;
+            th{
+                padding: 10px 0;
+                border: 1px solid #79bbff;
+                border-bottom: 1px solid #ccc;
+            }
+            tr{
+                width: 100%;
+                height: 44px;
+                line-height: 42px;
+                border-bottom: 1px solid #ccc;
+
+                &:last-of-type{
+                    border-bottom: none;
+                }
+                td{
+                    border-right: 1px solid #ccc;
+                    display: inline-block;
+                    height: 44px;
+                    vertical-align: middle;
+                    text-align: center;
+                    line-height: 42px;
+
+                    &:last-of-type{
+                        border-right: none;
+                    }
+                    ::v-deep.el-textarea{
+                        .el-textarea__inner{
+                            min-height: 40px !important;
+                            background-color:  #ecf5ff;
+                            border: 1px solid #d9ecff;
+                        }
+                    }
+
+                    &.w-5{
+                        width: 5%;
+                    }
+                    &.w-10{
+                        width: 10%;
+                    }
+                    &.w-12{
+                        width: 12%;
+                    }
+                    &.w-15{
+                        width: 15%;
+                    }
+                    &.w-20{
+                        width: 20%;
+                    }
+                    &.w-23{
+                        width: 23%;
+                    }
+                    &.w-50{
+                        width: 50%;
+                    }
+                    &.w-25{
+                        width: 25%;
+                    }
+                    &.w-75{
+                        width: 75%;
+                    }
+                    &.w-33{
+                        width: 33.33%;
+                    }
+                    &.overText{
+                        overflow: auto;
+                        line-height: 1.5;
+                        text-align: left;
+                        padding: 10px;
+                    }
+                }
+            }
+            .b-font{
+                font-size: 16px;
+                font-weight: bolder;
+            }
+            ::v-deep.mid{
+                .el-input__inner{
+                    text-align: center;
+                    background-color:  #ecf5ff;
+                    border: 1px solid #d9ecff;
+                }
+            }
+        }
+        .table-bottom{
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin-bottom: 10px;
+        }
+    }
+</style>
diff --git a/src/views/selfCheck/components/repair.vue b/src/views/selfCheck/components/repair.vue
index deafa3f..8f1e622 100644
--- a/src/views/selfCheck/components/repair.vue
+++ b/src/views/selfCheck/components/repair.vue
@@ -19,64 +19,26 @@
             >
 
                 <el-table-column type="index" label="序号" align="center" width="80"/>
-
-                <el-table-column label="检查出的隐患问题" prop="info" align="center" width="180">
+                <el-table-column label="检查出的隐患问题" prop="hiddendangerRemark" align="center" width="180"></el-table-column>
+                <el-table-column label="检查时间" prop="checkTime" align="center"></el-table-column>
+                <el-table-column label="最后整改期限" prop="rectifyDeadlineTime" align="center"></el-table-column>
+                <el-table-column label="整改资金(元)" prop="rectifyPrice" align="center"></el-table-column>
+                <el-table-column label="整改措施" prop="rectifyMeasure" width="130" align="center" sortable></el-table-column>
+                <el-table-column label="负责人" prop="chargePerson" align="center"></el-table-column>
+                <el-table-column label="整改状态" prop="rectifyStatus" align="center">
                     <template slot-scope="scope">
-                        <span>{{ scope.row.info }}</span>
+                        <span>{{ scope.row.rectifyStatus ==0?'未整改':'已整改' }}</span>
                     </template>
                 </el-table-column>
-
-                <el-table-column label="检查时间" prop="checkTime" align="center">
+                <el-table-column label="完成整改时间" prop="completeRectifyTime	" align="center"></el-table-column>
+                <el-table-column label="隐患等级" prop="hiddendangerLevel" align="center">
                     <template slot-scope="scope">
-                        <span>{{scope.row.checkTime}}</span>
+                        <span>{{ scope.row.hiddendangerLevel==1 ? '一般隐患' : '重大隐患' }}</span>
                     </template>
                 </el-table-column>
-
-                <el-table-column label="最后整改期限" prop="deadline" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.deadline }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="整改资金(元)" prop="money" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.money }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="整改措施" prop="action" width="130" align="center" sortable>
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.action }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="负责人" prop="principal" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.principal }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="整改状态" prop="fixStatus" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.fixStatus ==0?'未整改':'已整改' }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="完成整改时间" prop="finishTime" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.finishTime }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="隐患等级" prop="level" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.level==0 ? '一般隐患' : '重大隐患' }}</span>
-                    </template>
-                </el-table-column>
-
                 <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
                     <template slot-scope="scope">
-                        <el-button v-if="scope.row.fixStatus==0" type="text" @click="toFix(scope.row)">整改填报</el-button>
+                        <el-button v-if="scope.row.rectifyStatus==0" type="text" @click="toFix(scope.row)">整改填报</el-button>
                         <el-button v-else type="text">--</el-button>
                     </template>
                 </el-table-column>
@@ -114,19 +76,19 @@
 
                 <el-form-item label="当前完成整改日期:">
                     <el-date-picker
-                        v-model="fixForm.finishDate"
+                        v-model="fixForm.completeRectifyTime"
                         type="date"
                         placeholder="请选择整改日期">
                     </el-date-picker>
                 </el-form-item>
                 <el-form-item label="整改资金:">
-                    <el-input v-model="fixForm.money"></el-input>
+                    <el-input v-model="fixForm.rectifyPrice"></el-input>
                 </el-form-item>
                 <el-form-item label="整改措施:">
-                    <el-input type="textarea" autosize v-model="fixForm.actions"></el-input>
+                    <el-input type="textarea" autosize v-model="fixForm.rectifyMeasure"></el-input>
                 </el-form-item>
                 <el-form-item label="负责人:">
-                    <el-input v-model="fixForm.name"></el-input>
+                    <el-input v-model="fixForm.chargePerson"></el-input>
                 </el-form-item>
             </el-form>
             <span slot="footer" class="dialog-footer">
@@ -140,11 +102,13 @@
 
 <script>
     import {computePageCount} from "@/utils";
+    import { getSelfRectifyInfo, saveSelfRectifyInfo } from "@/api/selfCheck";
 
     export default {
         name: "repair",
         data(){
             return{
+                id: null,
                 listLoading: false,
                 dialogFix: false,
                 recordTotal: 0,
@@ -153,38 +117,20 @@
                 currentPage: 1,
                 tableKey: 0,
                 dialogVisible:false,
-                checkList:[
-                    {
-                        info: '虫吃鼠咬',
-                        checkTime: '2022-10-31',
-                        deadline: '2022-11-01',
-                        money: '30',
-                        action: '补充灭虫药',
-                        principal: '叼毛',
-                        fixStatus: 1,
-                        finishTime: '2022-11-01',
-                        level: 1
-                    },
-                    {
-                        info: '虫吃鼠咬',
-                        checkTime: '2022-10-31',
-                        deadline: '2022-11-01',
-                        money: '3000',
-                        action: '补充灭虫药',
-                        principal: '叼毛',
-                        fixStatus: 0,
-                        finishTime: '2022-11-01',
-                        level: 0
-                    }
-                ],
+                checkList:[],
                 fixForm:{
+                    id: null,
+                    enterpriseSubmitId: null,
                     info: '',
-                    finishDate: '',
-                    money: '',
-                    actions: '',
-                    name: ''
+                    completeRectifyTime: '',
+                    rectifyPrice: 0,
+                    rectifyMeasure: '',
+                    chargePerson: ''
                 }
             }
+        },
+        created() {
+            this.getSelfRectifyInfo()
         },
         watch: {
         },
@@ -199,17 +145,51 @@
                 // this.getDataList()
             },
 
+            async getSelfRectifyInfo(){
+                const t = this
+                t.listLoading = true
+                let res = await getSelfRectifyInfo(t.id)
+                if(res.data.code === "200"){
+                    t.checkList = res.data.result.hiddendangerBaseInfos
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                t.listLoading = false
+            },
 
             confirm(){
                 this.dialogVisible = false
             },
 
-            confirmFix(){
-                this.dialogFix = false
+            toFix(row){
+                const t= this
+                t.fixForm.info = row.hiddendangerRemark
+                t.fixForm.id = row.id
+                t.dialogFix = true
             },
 
-            toFix(){
-                this.dialogFix = true
+            async confirmFix(){
+                const t = this
+                t.listLoading = true
+                t.fixForm.enterpriseSubmitId = t.id
+                let {info,...data} = t.fixForm
+                let res = await saveSelfRectifyInfo(data)
+                if(res.data.code === "200"){
+                    t.$message({
+                        type:'success',
+                        message:res.data.message
+                    })
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                t.listLoading = false
+                t.dialogFix = false
             }
         },
     }
diff --git a/src/views/selfCheck/components/selfReport.vue b/src/views/selfCheck/components/selfReport.vue
index 6f9f9c6..19a4b0a 100644
--- a/src/views/selfCheck/components/selfReport.vue
+++ b/src/views/selfCheck/components/selfReport.vue
@@ -8,12 +8,16 @@
     >
         <div class="company-info">
             <div>企业基本信息</div>
-            <div><span>企业名称:</span><span>XXXXXXXXXX有限公司</span></div>
-            <div><span>许可证:</span><span>在有效期(有效期至:XXXXX)</span></div>
-            <div><span>库存:</span><span>100(万箱)</span></div>
+            <div><span>企业名称:</span><span>{{enterpriseName}}</span></div>
+            <div>
+                <span>许可证:</span>
+                <span v-if="licenceValidStatus == 0">在有效期(有效期至:{{licenceValidDeadline}})</span>
+                <span v-else>已过期</span>
+            </div>
+            <div><span>库存:</span><span>{{stockNum}}</span></div>
             <div><span>库容:</span>
                 <span>
-                    <el-input placeholder="请输入库容量" v-model="checkForm.store"></el-input>
+                    <el-input placeholder="请输入库容量" v-model="checkForm.storageCapacity"></el-input>
                 </span>
             </div>
         </div>
@@ -22,22 +26,22 @@
             <div>自查自改填报</div>
             <div>
                 <span>自查是否有隐患:</span>
-                <el-radio-group v-model="checkForm.isRisky">
+                <el-radio-group v-model="checkForm.hiddendangerStatus">
                     <el-radio :label="1">是</el-radio>
-                    <el-radio :label="2">否</el-radio>
+                    <el-radio :label="0">否</el-radio>
                 </el-radio-group>
             </div>
         </div>
-        <div class="risk-list" v-if="checkForm.isRisky==1">
+        <div class="risk-list" v-if="checkForm.hiddendangerStatus==1">
             <table class="risk-table">
                 <th><span>序号</span><span>检查出的隐患问题</span><span>检查时间</span><span>最后整改期限</span><span>隐患等级</span><span>操作</span></th>
-                <tr v-for="(item,index) in checkForm.riskList">
+                <tr v-for="(item,index) in checkForm.submitHiddendangers">
                     <td class="num">{{index + 1}}</td>
-                    <td class="info"><el-input type="textarea" :rows="1" placeholder="请输入内容" v-model="item.info"></el-input></td>
-                    <td class="date"><el-date-picker v-model="item.time" type="datetime" placeholder="选择检查时间"></el-date-picker></td>
-                    <td class="deadline"><el-date-picker v-model="item.deadline" type="datetime" placeholder="选择整改期限"></el-date-picker></td>
+                    <td class="info"><el-input type="textarea" :rows="1" placeholder="请输入内容" v-model="item.hiddendangerRemark"></el-input></td>
+                    <td class="date"><el-date-picker v-model="item.checkTime" type="datetime" placeholder="选择检查时间"></el-date-picker></td>
+                    <td class="deadline"><el-date-picker v-model="item.rectifyDeadlineTime" type="datetime" placeholder="选择整改期限"></el-date-picker></td>
                     <td class="level">
-                        <el-radio-group v-model="item.level">
+                        <el-radio-group v-model="item.hiddendangerLevel">
                             <el-radio :label="1">一般隐患</el-radio>
                             <el-radio :label="2">重大隐患</el-radio>
                         </el-radio-group>
@@ -55,11 +59,11 @@
         <div style="display: flex;align-items: center;margin-top: 20px">
             <span>填报人:</span>
             <span style="margin-right: 40px">
-                <el-input v-model="checkForm.reporter"></el-input>
+                <el-input v-model="checkForm.selfcheckReportUserName"></el-input>
             </span>
             <span>电话号码:</span>
             <span>
-                <el-input v-model="checkForm.reportPhone"></el-input>
+                <el-input v-model="checkForm.selfcheckReportUserMobile"></el-input>
             </span>
         </div>
         <span slot="footer" class="dialog-footer">
@@ -71,25 +75,31 @@
 
 <script>
     import {computePageCount} from "@/utils";
-
+    import { saveSelfCheckReport, getSelfBaseInfo } from '@/api/selfCheck'
     export default {
         name: "selfReport",
         data(){
             return{
-                dialogVisible:false,
+                dialogVisible: false,
+                id: null,
+                enterpriseName: '',
+                licenceValidStatus: 0,
+                licenceValidDeadline: '',
+                stockNum: 0,
                 checkForm:{
-                    store: '',
-                    isRisky: 2,
-                    riskList: [
+                    storageCapacity: 0,
+                    hiddendangerStatus: 0,
+                    submitHiddendangers: [
                         {
-                            info: '',
-                            time: '',
-                            deadline: '',
-                            level: ''
+                            id: null,
+                            hiddendangerRemark: '',
+                            checkTime: '',
+                            rectifyDeadlineTime: '',
+                            hiddendangerLevel: 1
                         }
                     ],
-                    reporter: '',
-                    reportPhone: ''
+                    selfcheckReportUserName: '',
+                    selfcheckReportUserMobile: ''
                 },
             }
         },
@@ -98,18 +108,58 @@
         methods:{
             addItem(){
                 const newItem = {
-                    info: '',
-                    time: '',
-                    level: ''
+                    hiddendangerRemark: '',
+                    checkTime: '',
+                    rectifyDeadlineTime: '',
+                    hiddendangerLevel: 1
                 }
-                this.checkForm.riskList.push(newItem)
+                this.checkForm.submitHiddendangers.push(newItem)
             },
             deleteItem(i){
                 console.log(i)
-                this.checkForm.riskList.splice(i,1)
+                this.checkForm.submitHiddendangers.splice(i,1)
             },
-            confirmSend(){
-                this.dialogVisible = false
+
+            async getUncheckList(){
+                const t = this
+                let res = await getSelfBaseInfo(t.id)
+                if(res.data.code === "200"){
+                    t.recordTotal = res.data.result.enterpriseName
+                    t.licenceValidStatus = res.data.result.licenceValidStatus
+                    t.licenceValidDeadline = res.data.result.licenceValidDeadline
+                    t.stockNum = res.data.result.stockNum
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+            },
+
+            async confirmSend(){
+                const t = this
+                let data = t.checkForm
+                data.id = t.id
+                if(data.storageCapacity.toString()=='' || data.submitHiddendangers.hiddendangerRemark == '' || data.submitHiddendangers.checkTime == '' || data.submitHiddendangers.rectifyDeadlineTime==''||data.submitHiddendangers.hiddendangerLevel.toString()==''){
+                    t.$message({
+                        type:'warning',
+                        message:'请完善表单信息'
+                    })
+                    return
+                }
+                let res = await saveSelfCheckReport(data)
+                if(res.data.code === "200"){
+                    t.$message({
+                        type:'success',
+                        message:res.data.message
+                    })
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                t.dialogVisible = false
             }
         },
     }
diff --git a/src/views/selfCheck/index.vue b/src/views/selfCheck/index.vue
index 2fc585c..516e47f 100644
--- a/src/views/selfCheck/index.vue
+++ b/src/views/selfCheck/index.vue
@@ -11,59 +11,37 @@
                 style="width: 100%;"
             >
 
-                <el-table-column label="下发日期" prop="sendDate" align="center" width="180">
+                <el-table-column label="下发日期" prop="gmtCreate" align="center" width="180"></el-table-column>
+                <el-table-column label="任务名称" prop="taskName" align="center"></el-table-column>
+                <el-table-column label="下发部门" prop="createUnit" align="center"></el-table-column>
+                <el-table-column label="自查期限(之前)" prop="enterpriseSelfCheckDeadline" align="center"></el-table-column>
+                <el-table-column label="是否自查" prop="selfcheckStatus" width="130" align="center" sortable>
                     <template slot-scope="scope">
-                        <span>{{ scope.row.sendDate }}</span>
+                        <span>{{ scope.row.selfcheckStatus == 0 ? '未自查' : '已自查' }}</span>
                     </template>
                 </el-table-column>
-                <el-table-column label="任务名称" prop="name" align="center">
+                <el-table-column label="自查时间" prop="selfcheckTime" align="center"></el-table-column>
+                <el-table-column label="是否隐患" prop="hiddendangerStatus" align="center">
                     <template slot-scope="scope">
-                        <span>{{scope.row.name}}</span>
+                        <span>{{ scope.row.hiddendangerStatus == 0 ? '否' : '是' }}</span>
                     </template>
                 </el-table-column>
-
-                <el-table-column label="下发部门" prop="department" align="center">
+                <el-table-column label="整改情况" prop="rectifyStatus" align="center" class-name="small-padding fixed-width">
                     <template slot-scope="scope">
-                        <span>{{ scope.row.department }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="自查期限(之前)" prop="deadline" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.deadline }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="是否自查" prop="isCheck" width="130" align="center" sortable>
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.isCheck }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="自查时间" prop="selfCheckTime" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.selfCheckTime }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="是否隐患" prop="isRisky" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.isRisky }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="整改情况" align="center" class-name="small-padding fixed-width">
-                    <template slot-scope="scope">
-                        <el-button type="text" @click="toRepair(scope.row)">去整改</el-button>
+                        <el-button v-if="scope.row.rectifyStatus == 1" type="text" @click="toRepair(scope.row)">去整改</el-button>
+                        <span v-else>已完成</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="详情" align="center" class-name="small-padding fixed-width">
                     <template slot-scope="scope">
-                        <el-button v-if="scope.row.isCheck == 1" type="text">查看详情</el-button>
-                        <el-button v-else type="text" @click="toReport(scope.row)">自查填报</el-button>
+                        <el-button v-if="scope.row.selfcheckStatus == 0" type="text" @click="toReport(scope.row)">自查填报</el-button>
+                        <el-button v-else type="text" @click="toDetail(scope.row)">查看详情</el-button>
                     </template>
                 </el-table-column>
             </el-table>
             <el-pagination
-                v-show="recordTotal>0"
                 :current-page="currentPage"
-                :page-sizes="[10, 20, 30, 50]"
+                :page-sizes="[10, 15]"
                 :page-size="pageSize"
                 :total="recordTotal"
                 layout="total, sizes, prev, pager, next, jumper"
@@ -75,6 +53,7 @@
         </div>
         <self-report ref="report"></self-report>
         <repair ref="repair"></repair>
+        <check-details ref="details"></check-details>
     </div>
 </template>
 
@@ -84,14 +63,17 @@
     import {mapGetters} from "vuex";
     import {MessageBox} from 'element-ui'
     import { getToken } from '@/utils/auth'
-    import selfReport from "./components/selfReport";
-    import repair from "./components/repair";
+    import selfReport from "./components/selfReport"
+    import repair from "./components/repair"
+    import checkDetails from "./components/repair"
+    import { getUnDoneCheckTask } from '@/api/selfCheck'
 
     export default {
         name: "selfCheck",
         components:{
             selfReport,
-            repair
+            repair,
+            checkDetails
         },
         data() {
             return {
@@ -101,30 +83,12 @@
                 pageTotal: 0,
                 currentPage: 1,
                 tableKey: 0,
-                checkData: [
-                    {
-                        sendDate: '2022-10-29',
-                        name: '2023年上半年……',
-                        department: '新疆维吾尔应急管理厅',
-                        deadline: '2022-10-30',
-                        isCheck: 1,
-                        selfCheckTime: '2022-10-31',
-                        isRisky: 1
-                    },
-                    {
-                        sendDate: '2022-10-29',
-                        name: '2023年上半年……',
-                        department: '新疆维吾尔应急管理厅',
-                        deadline: '2022-10-30',
-                        isCheck: 0,
-                        selfCheckTime: '2022-10-31',
-                        isRisky: 0
-                    }
-                ]
+                checkData: []
             }
         },
         created() {
-
+            const t = this
+            t.getUncheckList()
         },
         mounted() {
 
@@ -139,21 +103,46 @@
             handleSizeChange: function (val) {
                 this.pageSize = val
                 this.currentPage = 1
-                // this.getDataList()
+                this.getUncheckList()
             },
             handleCurrentChange: function (val) {
                 this.currentPage = val
-                // this.getDataList()
+                this.getUncheckList()
             },
 
             toReport(row){
                 const t = this
                 t.$refs.report.dialogVisible = true
+                t.$refs.report.id = row.id
+            },
+
+            toDetail(row){
+                const t = this
+                t.$refs.details.dialogVisible = true
+                t.$refs.details.id = row.id
             },
 
             toRepair(row){
                 const t = this
                 t.$refs.repair.dialogVisible = true
+                t.$refs.repair.id = row.id
+            },
+
+            async getUncheckList(){
+                const t = this
+                t.listLoading = true
+                let data = {pageIndex: t.currentPage,pageSize: t.pageSize}
+                let res = await getUnDoneCheckTask(data)
+                if(res.data.code === "200"){
+                    t.recordTotal = res.data.result.total
+                    t.checkData = res.data.result.records
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                t.listLoading = false
             },
         }
     }
diff --git a/src/views/specialCheck/components/feedbackDetails.vue b/src/views/specialCheck/components/feedbackDetails.vue
index 46bfba4..bd6ee74 100644
--- a/src/views/specialCheck/components/feedbackDetails.vue
+++ b/src/views/specialCheck/components/feedbackDetails.vue
@@ -10,42 +10,51 @@
             <span></span>
             <div class="">烟花爆竹批发企业检查情况反馈表</div>
             <span>
-                <el-button type="primary">查看企业自查表</el-button>
+                <el-button type="primary" @click="openSelfCheck()">查看企业自查表</el-button>
             </span>
          </div>
         <div class="feed-report">
             <div class="feed-tit">
-                <div>企业名称: <span class="m-color">沙湾市国华商贸有限公司</span></div>
-                <div>所属省市县: <span class="m-color">新疆维吾尔自治区塔城地区沙湾县</span></div>
-                <div>检查层级: <span class="m-color">省级</span></div>
-                <div>检查单位: <span class="m-color">新疆维吾尔自治区应急管理厅</span></div>
+                <div>企业名称: <span class="m-color">{{ corpInfo.enterpriseName }}</span></div>
+                <div>所属省市县: <span class="m-color">{{ corpInfo.enterpriseProvince + corpInfo.enterpriseCity + corpInfo.enterpriseArea }}</span></div>
+                <div>检查层级: <span class="m-color">{{ corpInfo.checkUnitType == 1 ? '省级':(corpInfo.checkUnitType == 2 ? '市级' : '区县级') }}</span></div>
+                <div>检查单位: <span class="m-color">{{ corpInfo.checkUnit }}</span></div>
             </div>
+            <div v-if="(unitType==1 && checkData.provinceCheckStatus==0)||(unitType==2 && checkData.cityCheckStatus==0)||(unitType==3 && checkData.areaCheckStatus==0)">
+            <el-form :model="feedbackForm" :rules="rules" ref="feedbackForm" class="demo-ruleForm">
             <el-row :gutter="40" type="flex" align="middle" style="margin: 20px 0">
-                <el-col :span="8" style="display: flex;align-items: center">
-                    <span style="white-space: nowrap">检查时间:</span>
+                <el-col :span="8">
+                    <el-form-item label="检查时间:" prop="checkTime" style="display: flex;align-items: center">
+<!--                    <span style="white-space: nowrap">检查时间:</span>-->
                     <el-date-picker
                         v-model="feedbackForm.checkTime"
                         type="datetime"
+                        value-format="yyyy-MM-dd HH:mm:ss"
                         placeholder="选择日期时间">
                     </el-date-picker>
+                    </el-form-item>
                 </el-col>
                 <el-col :span="12" style="display: flex;align-items: center">
-                    <span style="white-space: nowrap">是否检查出隐患:</span>
-                    <el-radio-group v-model="feedbackForm.isRisky">
+                    <el-form-item label="是否检查出隐患:" prop="hiddendangerStatus" style="display: flex;align-items: center">
+<!--                    <span style="white-space: nowrap">是否检查出隐患:</span>-->
+                    <el-radio-group v-model="feedbackForm.hiddendangerStatus">
                         <el-radio :label="1">是</el-radio>
                         <el-radio :label="0">否</el-radio>
                     </el-radio-group>
+                    </el-form-item>
                 </el-col>
             </el-row>
-            <div class="report-list" v-show="feedbackForm.isRisky == 1">
+            <div class="report-list" v-if="feedbackForm.hiddendangerStatus == 1">
                 <table class="report-table">
                     <th class="m-color b-font" style="background: #337ecc;color: #fff">检查情况</th>
                     <tr><td class="m-color">序号</td><td class="m-color">检查出的隐患问题</td><td class="m-color">隐患等级</td><td class="m-color">操作</td></tr>
-                    <tr v-for="(item,index) in feedbackForm.riskList">
+                    <tr v-for="(item,index) in feedbackForm.hiddendangerInfos">
                         <td>{{index + 1}}</td>
-                        <td><el-input type="textarea" :rows="1" placeholder="请输入内容" v-model="item.info"></el-input></td>
                         <td>
-                            <el-radio-group v-model="item.level">
+                            <el-input type="textarea" :rows="1" placeholder="请输入内容" v-model="item.spotCheckHiddendanger"></el-input>
+                        </td>
+                        <td>
+                            <el-radio-group v-model="item.hiddendangerLevel">
                                 <el-radio :label="1">一般隐患</el-radio>
                                 <el-radio :label="2">重大隐患</el-radio>
                             </el-radio-group>
@@ -55,73 +64,72 @@
                         </td>
                     </tr>
                     <tr style="text-align: center"><el-button icon="el-icon-plus" type="primary" plain round @click="addItem()">添加行</el-button></tr>
-                    <tr class="m-color b-font" style="text-align: center">合计</tr>
-                    <tr>
-                        <td class="m-color w-50">隐患总数</td>
-                        <td class="m-color w-50">重大隐患数量</td>
-                    </tr>
-                    <tr>
-                        <td class="w-50 mid"><el-input v-model="feedbackForm.totalRisk"></el-input></td>
-                        <td class="w-50 mid"><el-input v-model="feedbackForm.majorNum"></el-input></td>
-                    </tr>
                     <tr class="m-color b-font" style="text-align: center">执法处罚情况</tr>
                     <tr>
                         <td class="m-color w-25 mid">罚款金额(万元)</td>
-                        <td class="w-25 mid"><el-input v-model="feedbackForm.fine"></el-input></td>
+                        <td class="w-25 mid">
+                            <el-form-item prop="amerceMoney">
+                                <el-input v-model="feedbackForm.amerceMoney" type="number" placeholder="请输入罚款金额,未罚款则填“0”"></el-input>
+                            </el-form-item>
+                        </td>
                         <td class="m-color w-25 mid">是否责令停产整顿</td>
                         <td class="w-25 mid">
-                            <el-radio-group v-model="feedbackForm.isRectify">
-                                <el-radio :label="1">是</el-radio>
-                                <el-radio :label="0">否</el-radio>
-                            </el-radio-group>
+                            <el-form-item prop="stopProductionStatus">
+                                <el-radio-group v-model="feedbackForm.stopProductionStatus">
+                                    <el-radio :label="1">是</el-radio>
+                                    <el-radio :label="0">否</el-radio>
+                                </el-radio-group>
+                            </el-form-item>
                         </td>
                     </tr>
                     <tr>
                         <td class="m-color w-25 mid">是否吊销许可证</td>
                         <td class="w-25 mid">
-                            <el-radio-group v-model="feedbackForm.isRevoke">
+                            <el-form-item prop="revokeLicenseStatus">
+                            <el-radio-group v-model="feedbackForm.revokeLicenseStatus">
                                 <el-radio :label="1">是</el-radio>
                                 <el-radio :label="0">否</el-radio>
                             </el-radio-group>
+                            </el-form-item>
                         </td>
                         <td class="m-color w-25 mid">是否暂扣许可证</td>
                         <td class="w-25 mid">
-                            <el-radio-group v-model="feedbackForm.isSuspended">
+                            <el-form-item prop="detainLicenseStatus">
+                            <el-radio-group v-model="feedbackForm.detainLicenseStatus">
                                 <el-radio :label="1">是</el-radio>
                                 <el-radio :label="0">否</el-radio>
                             </el-radio-group>
+                            </el-form-item>
                         </td>
                     </tr>
                 </table>
             </div>
-            <div>
-                注:重大隐患判定标准:<el-link href="https://www.mem.gov.cn/gk/zcjd/201802/t20180202233295.shtml" target="_blank" type="primary">https://www.mem.gov.cn/gk/zcjd/201802/t20180202 233295.shtml</el-link>
-            </div>
+            </el-form>
             <div style="display: flex;justify-content: center;margin: 20px 0">
                 <el-button @click="confirmBack()">返回列表</el-button>
-                <el-button type="primary">提交</el-button>
+                <el-button type="primary" @click="confirmSubmit('feedbackForm')">提交</el-button>
+            </div>
             </div>
         </div>
+<!--        <div style="margin-top: 20px;text-align: center">-->
+<!--            重大隐患判定标准:<el-link href="https://www.mem.gov.cn/gk/zcjd/201802/t20180202233295.shtml" target="_blank" type="primary">https://www.mem.gov.cn/gk/zcjd/201802/t20180202 233295.shtml</el-link>-->
+<!--        </div>-->
+        <el-divider/>
         <div class="feed-data">
-            <div class="m-color data-time">2022年04月07日</div>
+            <div class="m-color data-time">{{tabCheckTime}}</div>
             <el-tabs v-model="activeTab" type="border-card" @tab-click="handleSwitch">
-                <el-tab-pane label="本级" name="1">
-                    <div class="record-list">
-                        <div class="record-item" v-for="(item,index) in recordList" :key="index">
+                <el-tab-pane :label="unitType==1 ? '本级': '省级'" name="1">
+                    <div v-if="checkData.provinceCheckStatus == 1" class="record-list">
+                        <div class="record-item">
                             <table class="record-table">
-                                <tr>
-                                    <td class="w-75 m-color b-font dark-bg">烟花爆竹批发企业检查情况反馈表</td>
-                                    <td class="w-25">
-                                        <el-button type="primary" icon="el-icon-edit" plain @click="editRecord(index)">编辑</el-button>
-                                    </td>
-                                </tr>
+                                <tr class="m-color b-font" style="background: #409EFF;color: #fff;text-align: center">烟花爆竹批发企业检查情况反馈表</tr>
                                 <tr>
                                     <td class="m-color w-50">被检查企业名称</td>
                                     <td class="m-color w-50">所属省市县</td>
                                 </tr>
                                 <tr>
-                                    <td class="w-50">沙湾市国华商贸有限公司</td>
-                                    <td class="w-50">新疆维吾尔自治区乌鲁木齐市米东区</td>
+                                    <td class="w-50">{{ checkData.enterpriseName }}</td>
+                                    <td class="w-50">{{ checkData.enterpriseProvince + checkData.enterpriseCity + checkData.enterpriseArea }}</td>
                                 </tr>
                                 <tr>
                                     <td class="m-color w-25">检查层级</td>
@@ -131,15 +139,28 @@
                                 </tr>
                                 <tr>
                                     <td class="w-25">省级</td>
-                                    <td class="w-25">新疆维吾尔自治区应急管理厅</td>
-                                    <td class="w-25">{{ item.checkTime }}</td>
-                                    <td class="w-25">{{ item.isRisky }}</td>
+                                    <td class="w-25">{{ checkData.provinceCheckName }}</td>
+                                    <td class="w-25">{{ checkData.provinceCheckTime }}</td>
+                                    <td class="w-25">{{ checkData.provinceHiddendangerStatus == 1 ? '是' : '否' }}</td>
                                 </tr>
-                                <tr v-if="item.isRisky=='1'"><td class="m-color">序号</td><td class="m-color">检查出的隐患问题</td><td class="m-color">隐患等级</td></tr>
-                                <tr v-if="item.isRisky=='1'" v-for="(x,i) in item.riskList">
-                                    <td>{{ i + 1 }}</td>
-                                    <td class="overText">{{ x.info }}</td>
-                                    <td>{{ x.level }}</td>
+                                <tr class="m-color b-font" style="text-align: center" v-if="checkData.areaHiddendangerStatus == 1">检查情况</tr>
+                                <tr v-if="checkData.provinceHiddendangerStatus == 1">
+                                    <td class="m-color w-5">序号</td>
+                                    <td class="m-color w-25">检查出的隐患问题</td>
+                                    <td class="m-color w-10">隐患等级</td>
+                                    <td class="m-color w-25">整改措施</td>
+                                    <td class="m-color w-10">整改资金(元)</td>
+                                    <td class="m-color w-10">责任人</td>
+                                    <td class="m-color w-15">隐患状态</td>
+                                </tr>
+                                <tr v-if="checkData.provinceHiddendangerStatus == 1" v-for="(x,i) in checkData.provinceHiddendangerInfos">
+                                    <td class="w-5">{{ i + 1 }}</td>
+                                    <td class="overText w-25">{{ x.spotCheckHiddendanger }}</td>
+                                    <td class="w-10">{{ x.hiddendangerLevel==1?'一般隐患':'重大隐患' }}</td>
+                                    <td class="overText w-25">{{ x.rectifyMeasure }}</td>
+                                    <td class="w-10">{{ x.rectifyPrice }}</td>
+                                    <td class="overText w-10">{{ x.chargePerson }}</td>
+                                    <td class="w-15">{{ x.rectifyStatus==1?'已整改完成':'未整改完成' }}</td>
                                 </tr>
                                 <tr class="m-color b-font" style="text-align: center">合计</tr>
                                 <tr>
@@ -147,35 +168,202 @@
                                     <td class="m-color w-50">重大隐患数量</td>
                                 </tr>
                                 <tr>
-                                    <td class="w-50">{{ item.totalRisk }}</td>
-                                    <td class="w-50">{{ item.majorNum }}</td>
+                                    <td class="w-50">{{ checkData.provinceHiddendangerSum ? checkData.provinceHiddendangerSum : 0}}</td>
+                                    <td class="w-50">{{ checkData.provinceMajorHiddendangerNum ? checkData.provinceMajorHiddendangerNum : 0}}</td>
                                 </tr>
-                                <tr v-if="item.isRisky=='1'" class="m-color b-font" style="text-align: center">执法处罚情况</tr>
-                                <tr v-if="item.isRisky=='1'">
+                                <tr v-if="checkData.provinceHiddendangerStatus== 1" class="m-color b-font" style="text-align: center">执法处罚情况</tr>
+                                <tr v-if="checkData.provinceHiddendangerStatus== 1">
                                     <td class="m-color w-25">罚款金额(万元)</td>
-                                    <td class="w-25">{{ item.fine }}</td>
+                                    <td class="w-25">{{ checkData.provinceAmerceMoney }}</td>
                                     <td class="m-color w-25">是否责令停产整顿</td>
                                     <td class="w-25">
-                                        {{ item.isRectify }}
+                                        {{ checkData.provinceStopProductionStatus == 1 ? '是': '否' }}
                                     </td>
                                 </tr>
-                                <tr v-if="item.isRisky=='1'">
+                                <tr v-if="checkData.provinceHiddendangerStatus== 1">
                                     <td class="m-color w-25">是否吊销许可证</td>
                                     <td class="w-25">
-                                        {{ item.isRevoke }}
+                                        {{ checkData.provinceRevokeLicenseStatus == 1 ? '是': '否' }}
                                     </td>
                                     <td class="m-color w-25">是否暂扣许可证</td>
                                     <td class="w-25">
-                                        {{ item.isSuspended }}
+                                        {{ checkData.provinceDetainLicenseStatus == 1 ? '是': '否' }}
                                     </td>
                                 </tr>
+                                <tr style="text-align: center" v-if="unitType == 1">
+                                    <el-button type="primary" icon="el-icon-edit" plain @click="editRecord(1)">修改</el-button>
+                                </tr>
                             </table>
-                            <el-divider/>
                         </div>
                     </div>
+                    <div v-else style="font-size: 20px;font-weight: bolder;text-align: center">
+                        暂无本级检查反馈
+                    </div>
                 </el-tab-pane>
-                <el-tab-pane label="市级" name="2">市级</el-tab-pane>
-                <el-tab-pane label="县级" name="3">县级</el-tab-pane>
+                <el-tab-pane :label="unitType==2 ? '本级': '市级'" name="2">
+                    <div v-if="checkData.cityCheckStatus == 1" class="record-list">
+                        <div class="record-item">
+                            <table class="record-table">
+                                <tr class="m-color b-font" style="background: #409EFF;color: #fff;text-align: center">烟花爆竹批发企业检查情况反馈表</tr>
+                                <tr>
+                                    <td class="m-color w-50">被检查企业名称</td>
+                                    <td class="m-color w-50">所属省市县</td>
+                                </tr>
+                                <tr>
+                                    <td class="w-50">{{ checkData.enterpriseName }}</td>
+                                    <td class="w-50">{{ checkData.enterpriseProvince + checkData.enterpriseCity + checkData.enterpriseArea }}</td>
+                                </tr>
+                                <tr>
+                                    <td class="m-color w-25">检查层级</td>
+                                    <td class="m-color w-25">检查单位</td>
+                                    <td class="m-color w-25">检查时间</td>
+                                    <td class="m-color w-25">是否检查出隐患问题</td>
+                                </tr>
+                                <tr>
+                                    <td class="w-25">市级</td>
+                                    <td class="w-25">{{ checkData.cityCheckName }}</td>
+                                    <td class="w-25">{{ checkData.cityCheckTime }}</td>
+                                    <td class="w-25">{{ checkData.cityHiddendangerStatus == 1 ? '是' : '否' }}</td>
+                                </tr>
+                                <tr class="m-color b-font" style="text-align: center" v-if="checkData.areaHiddendangerStatus == 1">检查情况</tr>
+                                <tr v-if="checkData.cityHiddendangerStatus == 1">
+                                    <td class="m-color w-5">序号</td>
+                                    <td class="m-color w-25">检查出的隐患问题</td>
+                                    <td class="m-color w-10">隐患等级</td>
+                                    <td class="m-color w-25">整改措施</td>
+                                    <td class="m-color w-10">整改资金(元)</td>
+                                    <td class="m-color w-10">责任人</td>
+                                    <td class="m-color w-15">隐患状态</td>
+                                </tr>
+                                <tr v-if="checkData.cityHiddendangerStatus == 1" v-for="(x,i) in checkData.cityHiddendangerInfos">
+                                    <td class="w-5">{{ i + 1 }}</td>
+                                    <td class="overText w-25">{{ x.spotCheckHiddendanger }}</td>
+                                    <td class="w-10">{{ x.hiddendangerLevel==1?'一般隐患':'重大隐患' }}</td>
+                                    <td class="overText w-25">{{ x.rectifyMeasure }}</td>
+                                    <td class="w-10">{{ x.rectifyPrice }}</td>
+                                    <td class="overText w-10">{{ x.chargePerson }}</td>
+                                    <td class="w-15">{{ x.rectifyStatus==1?'已整改完成':'未整改完成' }}</td>
+                                </tr>
+                                <tr class="m-color b-font" style="text-align: center">合计</tr>
+                                <tr>
+                                    <td class="m-color w-50">隐患总数</td>
+                                    <td class="m-color w-50">重大隐患数量</td>
+                                </tr>
+                                <tr>
+                                    <td class="w-50">{{ checkData.cityHiddendangerSum ? checkData.cityHiddendangerSum : 0}}</td>
+                                    <td class="w-50">{{ checkData.cityMajorHiddendangerNum ? checkData.cityMajorHiddendangerNum : 0}}</td>
+                                </tr>
+                                <tr v-if="checkData.cityHiddendangerStatus== 1" class="m-color b-font" style="text-align: center">执法处罚情况</tr>
+                                <tr v-if="checkData.cityHiddendangerStatus== 1">
+                                    <td class="m-color w-25">罚款金额(万元)</td>
+                                    <td class="w-25">{{ checkData.cityAmerceMoney }}</td>
+                                    <td class="m-color w-25">是否责令停产整顿</td>
+                                    <td class="w-25">
+                                        {{ checkData.cityStopProductionStatus == 1 ? '是': '否' }}
+                                    </td>
+                                </tr>
+                                <tr v-if="checkData.cityHiddendangerStatus== 1">
+                                    <td class="m-color w-25">是否吊销许可证</td>
+                                    <td class="w-25">
+                                        {{ checkData.cityRevokeLicenseStatus == 1 ? '是': '否' }}
+                                    </td>
+                                    <td class="m-color w-25">是否暂扣许可证</td>
+                                    <td class="w-25">
+                                        {{ checkData.cityDetainLicenseStatus == 1 ? '是': '否' }}
+                                    </td>
+                                </tr>
+                                <tr style="text-align: center" v-if="unitType == 2">
+                                    <el-button type="primary" icon="el-icon-edit" plain @click="editRecord(2)">修改</el-button>
+                                </tr>
+                            </table>
+                        </div>
+                    </div>
+                    <div v-else style="font-size: 20px;font-weight: bolder;text-align: center">
+                        暂无本级检查反馈
+                    </div>
+                </el-tab-pane>
+                <el-tab-pane :label="unitType==3 ? '本级': '区县级'" name="3">
+                    <div v-if="checkData.areaCheckStatus == 1" class="record-list">
+                        <div class="record-item">
+                            <table class="record-table">
+                                <tr class="m-color b-font" style="background: #409EFF;color: #fff;text-align: center">烟花爆竹批发企业检查情况反馈表</tr>
+                                <tr>
+                                    <td class="m-color w-50">被检查企业名称</td>
+                                    <td class="m-color w-50">所属省市县</td>
+                                </tr>
+                                <tr>
+                                    <td class="w-50">{{ checkData.enterpriseName }}</td>
+                                    <td class="w-50">{{ checkData.enterpriseProvince + checkData.enterpriseCity + checkData.enterpriseArea }}</td>
+                                </tr>
+                                <tr>
+                                    <td class="m-color w-25">检查层级</td>
+                                    <td class="m-color w-25">检查单位</td>
+                                    <td class="m-color w-25">检查时间</td>
+                                    <td class="m-color w-25">是否检查出隐患问题</td>
+                                </tr>
+                                <tr>
+                                    <td class="w-25">区县级</td>
+                                    <td class="w-25">{{ checkData.areaCheckName }}</td>
+                                    <td class="w-25">{{ checkData.areaCheckTime }}</td>
+                                    <td class="w-25">{{ checkData.areaHiddendangerStatus == 1 ? '是' : '否' }}</td>
+                                </tr>
+                                <tr class="m-color b-font" style="text-align: center" v-if="checkData.areaHiddendangerStatus == 1">检查情况</tr>
+                                <tr v-if="checkData.areaHiddendangerStatus == 1">
+                                    <td class="m-color w-5">序号</td>
+                                    <td class="m-color w-25">检查出的隐患问题</td>
+                                    <td class="m-color w-10">隐患等级</td>
+                                    <td class="m-color w-25">整改措施</td>
+                                    <td class="m-color w-10">整改资金(元)</td>
+                                    <td class="m-color w-10">责任人</td>
+                                    <td class="m-color w-15">隐患状态</td>
+                                </tr>
+                                <tr v-if="checkData.areaHiddendangerStatus == 1" v-for="(x,i) in checkData.areaHiddendangerInfos">
+                                    <td class="w-5">{{ i + 1 }}</td>
+                                    <td class="overText w-25">{{ x.spotCheckHiddendanger }}</td>
+                                    <td class="w-10">{{ x.hiddendangerLevel==1?'一般隐患':'重大隐患' }}</td>
+                                    <td class="overText w-25">{{ x.rectifyMeasure }}</td>
+                                    <td class="w-10">{{ x.rectifyPrice }}</td>
+                                    <td class="overText w-10">{{ x.chargePerson }}</td>
+                                    <td class="w-15">{{ x.rectifyStatus==1?'已整改完成':'未整改完成' }}</td>
+                                </tr>
+                                <tr class="m-color b-font" style="text-align: center">合计</tr>
+                                <tr>
+                                    <td class="m-color w-50">隐患总数</td>
+                                    <td class="m-color w-50">重大隐患数量</td>
+                                </tr>
+                                <tr>
+                                    <td class="w-50">{{ checkData.areaHiddendangerSum ? checkData.areaHiddendangerSum : 0}}</td>
+                                    <td class="w-50">{{ checkData.areaMajorHiddendangerNum ? checkData.areaMajorHiddendangerNum : 0 }}</td>
+                                </tr>
+                                <tr v-if="checkData.areaHiddendangerStatus== 1" class="m-color b-font" style="text-align: center">执法处罚情况</tr>
+                                <tr v-if="checkData.areaHiddendangerStatus== 1">
+                                    <td class="m-color w-25">罚款金额(万元)</td>
+                                    <td class="w-25">{{ checkData.areaAmerceMoney }}</td>
+                                    <td class="m-color w-25">是否责令停产整顿</td>
+                                    <td class="w-25">
+                                        {{ checkData.areaStopProductionStatus == 1 ? '是': '否' }}
+                                    </td>
+                                </tr>
+                                <tr v-if="checkData.areaHiddendangerStatus== 1">
+                                    <td class="m-color w-25">是否吊销许可证</td>
+                                    <td class="w-25">
+                                        {{ checkData.areaRevokeLicenseStatus == 1 ? '是': '否' }}
+                                    </td>
+                                    <td class="m-color w-25">是否暂扣许可证</td>
+                                    <td class="w-25">
+                                        {{ checkData.areaDetainLicenseStatus == 1 ? '是': '否' }}
+                                    </td>
+                                </tr>
+                                <tr style="text-align: center" v-if="unitType == 3">
+                                    <el-button type="primary" icon="el-icon-edit" plain @click="editRecord(3)">修改</el-button>
+                                </tr>
+                            </table>
+                        </div>
+                    </div>
+                    <div v-else style="font-size: 20px;font-weight: bolder;text-align: center">
+                        暂无本级检查反馈
+                    </div>
+                </el-tab-pane>
             </el-tabs>
         </div>
 
@@ -186,21 +374,23 @@
             :close-on-click-modal="false"
             width="50%"
             center
+            @close="resetEdit()"
         >
-            <el-form ref="editFormRef" :model="editForm" label-width="160px" class="edit-form">
-                <el-row gutter="80">
+            <el-form ref="editForm" :rule="rules" :model="editForm" label-width="160px" class="edit-form">
+                <el-row :gutter="80">
                     <el-col :span="12">
-                        <el-form-item label="检查时间:">
+                        <el-form-item label="检查时间:" prop="checkTime">
                             <el-date-picker
                                 v-model="editForm.checkTime"
                                 type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
                                 placeholder="选择日期时间">
                             </el-date-picker>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="是否检查出隐患问题:">
-                            <el-radio-group v-model="editForm.isRisky">
+                        <el-form-item label="是否检查出隐患问题:" prop="hiddendangerStatus">
+                            <el-radio-group v-model="editForm.hiddendangerStatus">
                                 <el-radio :label="1">是</el-radio>
                                 <el-radio :label="0">否</el-radio>
                             </el-radio-group>
@@ -208,14 +398,16 @@
                     </el-col>
                 </el-row>
 
-                <div class="form-list" v-if="editForm.isRisky==1">
+                <div class="form-list" v-if="editForm.hiddendangerStatus==1">
                     <table class="form-table">
                         <th><span>序号</span><span>检查出的隐患问题</span><span>隐患等级</span><span>操作</span></th>
-                        <tr v-for="(item,index) in editForm.riskList">
+                        <tr v-for="(item,index) in editForm.hiddendangerInfos">
                             <td class="num">{{index + 1}}</td>
-                            <td class="info"><el-input type="textarea" :rows="1" placeholder="请输入内容" v-model="item.info"></el-input></td>
+                            <td class="info">
+                                <el-input type="textarea" :rows="1" placeholder="请输入内容" v-model="item.spotCheckHiddendanger"></el-input>
+                            </td>
                             <td class="level">
-                                <el-radio-group v-model="item.level">
+                                <el-radio-group v-model="item.hiddendangerLevel">
                                     <el-radio :label="1">一般隐患</el-radio>
                                     <el-radio :label="2">重大隐患</el-radio>
                                 </el-radio-group>
@@ -227,45 +419,33 @@
                         <tr style="text-align: center"><el-button type="primary" plain icon="el-icon-plus" @click="addEditItem()">添加行</el-button></tr>
                     </table>
                 </div>
-                <el-row gutter="80" v-if="editForm.isRisky==1">
+                <el-row :gutter="80" v-if="editForm.hiddendangerStatus==1">
                     <el-col :span="12">
-                        <el-form-item label="隐患总数:">
-                            <el-input v-model="editForm.totalRisk"></el-input>
+                        <el-form-item label="罚款金额(万元):" prop="amerceMoney">
+                            <el-input v-model="editForm.amerceMoney" type="number" placeholder="请输入罚款金额,未罚款则填“0”"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="是否责令停产整顿:">
-                            <el-radio-group v-model="editForm.isRectify">
+                        <el-form-item label="是否责令停产整顿:" prop="stopProductionStatus">
+                            <el-radio-group v-model="editForm.stopProductionStatus">
                                 <el-radio :label="1">是</el-radio>
                                 <el-radio :label="0">否</el-radio>
                             </el-radio-group>
                         </el-form-item>
                     </el-col>
                 </el-row>
-                <el-row gutter="80" v-if="editForm.isRisky==1">
+                <el-row :gutter="80" v-if="editForm.hiddendangerStatus==1">
                     <el-col :span="12">
-                        <el-form-item label="重大隐患数量:">
-                            <el-input v-model="editForm.majorNum"></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                        <el-form-item label="是否吊销许可证:">
-                            <el-radio-group v-model="editForm.isRevoke">
+                        <el-form-item label="是否吊销许可证:" prop="revokeLicenseStatus">
+                            <el-radio-group v-model="editForm.revokeLicenseStatus">
                                 <el-radio :label="1">是</el-radio>
                                 <el-radio :label="0">否</el-radio>
                             </el-radio-group>
                         </el-form-item>
                     </el-col>
-                </el-row>
-                <el-row gutter="80" v-if="editForm.isRisky==1">
                     <el-col :span="12">
-                        <el-form-item label="罚款金额(万元):">
-                            <el-input v-model="editForm.fine"></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                        <el-form-item label="是否暂扣许可证:">
-                            <el-radio-group v-model="editForm.isSuspended">
+                        <el-form-item label="是否暂扣许可证:" prop="detainLicenseStatus">
+                            <el-radio-group v-model="editForm.detainLicenseStatus">
                                 <el-radio :label="1">是</el-radio>
                                 <el-radio :label="0">否</el-radio>
                             </el-radio-group>
@@ -274,82 +454,70 @@
                 </el-row>
             </el-form>
             <span slot="footer" class="dialog-footer">
-              <el-button>取消</el-button>
-              <el-button type="primary">提交</el-button>
+              <el-button @click="editDialog = false">取消</el-button>
+              <el-button type="primary" @click="postEdit('editForm')">提交</el-button>
             </span>
         </el-dialog>
+        <check-details ref="report"></check-details>
     </el-dialog>
 </template>
 
 <script>
     import {computePageCount} from "@/utils";
-
+    import { saveSpotCheckReport, getSpotCheckReportInfo, updateSpotCheckReport } from "@/api/specialCheck"
+    import checkDetails from "../../selfCheck/components/checkDetails"
     export default {
-        name: "reportDetails",
+        name: "feedbackDetails",
+        components: {checkDetails},
         data(){
             return{
+                id: null,
+                unitType: null,
                 dialogVisible:false,
                 editDialog: false,
                 activeTab: '1',
+                corpInfo: {},
                 feedbackForm:{
+                    id: null,
                     checkTime: '',
-                    isRisky: '',
-                    riskList: [
+                    hiddendangerStatus: null,
+                    hiddendangerInfos: [
                         {
-                            info: '',
-                            level: ''
+                            spotCheckHiddendanger: '',
+                            hiddendangerLevel: null
                         }
                     ],
-                    totalRisk: '',
-                    majorNum: '',
-                    fine: '',
-                    isRectify: '',
-                    isRevoke: '',
-                    isSuspended: ''
+                    amerceStatus: null,
+                    amerceMoney: null,
+                    stopProductionStatus: null,
+                    revokeLicenseStatus: null,
+                    detainLicenseStatus: null
                 },
-                recordList:[
-                    {
-                        checkTime: '2022-11-02',
-                        isRisky: 1,
-                        riskList: [
-                            {
-                                info: '测试数据一',
-                                level: 1
-                            },
-                            {
-                                info: '测试数据二',
-                                level: 0
-                            }
-                        ],
-                        totalRisk: 1,
-                        majorNum: 0,
-                        fine: '2500',
-                        isRectify: 0,
-                        isRevoke: 0,
-                        isSuspended: 1
-                    },
-                    {
-                        checkTime: '2022-11-02',
-                        isRisky: 0,
-                        riskList: [],
-                        totalRisk: 0,
-                        majorNum: 0,
-                        fine: '',
-                        isRectify: 0,
-                        isRevoke: 0,
-                        isSuspended: 0
-                    }
-                ],
+                rules: {
+                    checkTime: [{ required: true, message: '请选择检查时间', trigger: 'blur' }],
+                    hiddendangerStatus: [{ required: true, message: '请选择是否查出隐患', trigger: 'blur' }],
+                    amerceMoney: [{ required: true, message: '请输入罚款金额(未罚款则填0)', trigger: 'blur' }],
+                    stopProductionStatus: [{ required: true, message: '请选择是否责令停产整顿', trigger: 'blur' }],
+                    revokeLicenseStatus: [{ required: true, message: '请选择是否吊销许可证', trigger: 'blur' }],
+                    detainLicenseStatus: [{ required: true, message: '请选择是否查出暂扣许可证', trigger: 'blur' }]
+                },
+                checkData:{},
+                tabCheckTime: '',
                 editForm:{
+                    id: null,
                     checkTime: '',
-                    isRisky: '',
-                    riskList: [],
-                    totalRisk: '',
-                    majorNum: '',
-                    fine: '',
-                    isRectify: '',
-                    isRevoke: '',
-                    isSuspended: ''
+                    hiddendangerStatus: null,
+                    hiddendangerInfos: [
+                        {
+                            spotCheckHiddendanger: '',
+                            hiddendangerLevel: null
+                        }
+                    ],
+                    amerceStatus: null,
+                    amerceMoney: null,
+                    stopProductionStatus: null,
+                    revokeLicenseStatus: null,
+                    detainLicenseStatus: null
                 }
             }
         },
@@ -359,35 +527,276 @@
             confirmBack(){
                 this.dialogVisible = false
             },
+            openSelfCheck(){
+                const t = this
+                t.$refs.report.id = t.id
+                t.$refs.report.getEnterpriseInfo()
+                t.$refs.report.dialogVisible = true
+            },
             handleSwitch(tab, event) {
-                console.log(tab, event);
+                const t = this
+                if(tab.index == 0){
+                    t.tabCheckTime = t.checkData.provinceCheckTime
+                }else if(tab.index == 1){
+                    t.tabCheckTime = t.checkData.cityCheckTime
+                }else{
+                    t.tabCheckTime = t.checkData.areaCheckTime
+                }
+            },
+
+            async getSpotCheckReportInfo(){
+                const t = this
+                let res = await getSpotCheckReportInfo({id: t.id})
+                if(res.data.code === "200"){
+                    if(res.data.result == null){
+                        t.checkData.provinceCheckStatus = 0
+                        t.checkData.cityCheckStatus = 0
+                        t.checkData.areaCheckStatus = 0
+                        t.checkData.provinceCheckTime = ''
+                        t.checkData.cityCheckTime = ''
+                        t.checkData.areaCheckTime = ''
+                    }else{
+                        t.checkData = res.data.result
+                        t.tabCheckTime = res.data.result.provinceCheckTime
+                    }
+
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
             },
 
             addItem(){
                 const newItem = {
-                    info: '',
-                    level: ''
+                    spotCheckHiddendanger: '',
+                    hiddendangerLevel: null
                 }
-                this.feedbackForm.riskList.push(newItem)
+                this.feedbackForm.hiddendangerInfos.push(newItem)
             },
             deleteItem(i){
-                console.log(i)
-                this.feedbackForm.riskList.splice(i,1)
-            },
-            editRecord(index){
                 const t = this
+                if(t.feedbackForm.hiddendangerInfos.length == 1){
+                    t.$message({
+                        type:'warning',
+                        message: '检查的隐患信息不可为空'
+                    })
+                }else{
+                    t.feedbackForm.hiddendangerInfos.splice(i,1)
+                }
+            },
+
+            confirmSubmit(formName){
+                const t = this
+                t.$refs[formName].validate(async (valid) => {
+                    if(t.feedbackForm.hiddendangerStatus == 0){
+                        t.feedbackForm.hiddendangerInfos = []
+                        t.feedbackForm.amerceStatus = null
+                        t.feedbackForm.amerceMoney = null
+                        t.feedbackForm.stopProductionStatus = null
+                        t.feedbackForm.revokeLicenseStatus = null
+                        t.feedbackForm.detainLicenseStatus = null
+                    }
+                    if(t.feedbackForm.hiddendangerStatus == 1){
+                        if(t.feedbackForm.hiddendangerInfos.find((e) => e.spotCheckHiddendanger == '') || t.feedbackForm.hiddendangerInfos.find((e) => e.hiddendangerLevel == null)){
+                            t.$message({
+                                type:'warning',
+                                message: '请完善检查的隐患信息'
+                            })
+                            return
+                        }
+                    }
+                    if (valid) {
+                        if(t.feedbackForm.amerceMoney>0){t.feedbackForm.amerceStatus = 1}
+                        else{t.feedbackForm.amerceStatus = 0}
+                        let res = await saveSpotCheckReport(t.feedbackForm)
+                        if(res.data.code === "200"){
+                            t.$message({
+                                type:'success',
+                                message:'提交成功'
+                            })
+                        }else{
+                            t.$message({
+                                type:'warning',
+                                message:res.data.message
+                            })
+                        }
+                        t.feedbackForm = {
+                            id: null,
+                            checkTime: '',
+                            hiddendangerStatus: null,
+                            hiddendangerInfos: [
+                                {
+                                    spotCheckHiddendanger: '',
+                                    hiddendangerLevel: null
+                                }
+                            ],
+                            amerceStatus: null,
+                            amerceMoney: null,
+                            stopProductionStatus: null,
+                            revokeLicenseStatus: null,
+                            detainLicenseStatus: null
+                        },
+                        t.dialogVisible = false
+                    } else {
+                        console.log('error submit!!');
+                        return false;
+                    }
+                });
+            },
+
+            editRecord(type){
+                const t = this
+                t.editForm.id = t.checkData.id
+                if(type == 1){
+                    t.editForm.checkTime = t.checkData.provinceCheckTime
+                    t.editForm.hiddendangerStatus = t.checkData.provinceHiddendangerStatus
+                    if(t.checkData.provinceHiddendangerInfos == null || t.checkData.provinceHiddendangerInfos.length==0){
+                        t.editForm.hiddendangerInfos = [
+                            {
+                                spotCheckHiddendanger: '',
+                                hiddendangerLevel: null
+                            }
+                        ]
+                    }else{t.editForm.hiddendangerInfos = t.checkData.provinceHiddendangerInfos}
+                    t.editForm.amerceMoney = t.checkData.provinceAmerceMoney
+                    t.editForm.stopProductionStatus = t.checkData.provinceStopProductionStatus
+                    t.editForm.revokeLicenseStatus = t.checkData.provinceRevokeLicenseStatus
+                    t.editForm.detainLicenseStatus = t.checkData.provinceDetainLicenseStatus
+                } else if(type == 2){
+                    t.editForm.checkTime = t.checkData.cityCheckTime
+                    t.editForm.hiddendangerStatus = t.checkData.cityHiddendangerStatus
+                    if(t.checkData.cityHiddendangerInfos == null || t.checkData.cityHiddendangerInfos.length==0){
+                        t.editForm.hiddendangerInfos = [
+                            {
+                                spotCheckHiddendanger: '',
+                                hiddendangerLevel: null
+                            }
+                        ]
+                    }else{t.editForm.hiddendangerInfos = t.checkData.cityHiddendangerInfos}
+                    t.editForm.amerceMoney = t.checkData.cityAmerceMoney
+                    t.editForm.stopProductionStatus = t.checkData.cityStopProductionStatus
+                    t.editForm.revokeLicenseStatus = t.checkData.cityRevokeLicenseStatus
+                    t.editForm.detainLicenseStatus = t.checkData.cityDetainLicenseStatus
+                } else{
+                    t.editForm.checkTime = t.checkData.areaCheckTime
+                    t.editForm.hiddendangerStatus = t.checkData.areaHiddendangerStatus
+                    if(t.checkData.areaHiddendangerInfos == null || t.checkData.areaHiddendangerInfos.length==0){
+                        t.editForm.hiddendangerInfos = [
+                            {
+                                spotCheckHiddendanger: '',
+                                hiddendangerLevel: null
+                            }
+                        ]
+                    }else{t.editForm.hiddendangerInfos = t.checkData.areaHiddendangerInfos}
+                    t.editForm.amerceMoney = t.checkData.areaAmerceMoney
+                    t.editForm.stopProductionStatus = t.checkData.areaStopProductionStatus
+                    t.editForm.revokeLicenseStatus = t.checkData.areaRevokeLicenseStatus
+                    t.editForm.detainLicenseStatus = t.checkData.areaDetainLicenseStatus
+                }
                 t.editDialog = true
             },
-            addEditItem(){
-                const newItem = {
-                    info: '',
-                    level: ''
+
+            postEdit(formName){
+                const t = this
+                t.$refs[formName].validate(async (valid) => {
+                    if(t.editForm.hiddendangerStatus == 0){
+                        t.editForm.hiddendangerInfos = []
+                        t.editForm.amerceStatus = null
+                        t.editForm.amerceMoney = null
+                        t.editForm.stopProductionStatus = null
+                        t.editForm.revokeLicenseStatus = null
+                        t.editForm.detainLicenseStatus = null
+                    }
+                    if(t.editForm.hiddendangerStatus == 1){
+                        if(t.editForm.hiddendangerInfos.find((e) => e.spotCheckHiddendanger == '') || t.editForm.hiddendangerInfos.find((e) => e.hiddendangerLevel == null)){
+                            t.$message({
+                                type:'warning',
+                                message: '请完善检查的隐患信息'
+                            })
+                            return
+                        }
+                    }
+                    t.editForm.hiddendangerInfos = Array.from(t.editForm.hiddendangerInfos,item=>{
+                        return {spotCheckHiddendanger: item.spotCheckHiddendanger, hiddendangerLevel: item.hiddendangerLevel, spotCheckUnitType: t.unitType, spotCheckId: t.checkData.id}
+                    })
+                    if (valid) {
+                        if(t.editForm.amerceMoney>0){t.editForm.amerceStatus = 1}
+                        else{t.editForm.amerceStatus = 0}
+                        t.editForm.amerceMoney = Number(t.editForm.amerceMoney)
+                        let res = await updateSpotCheckReport(t.editForm)
+                        if(res.data.code === "200"){
+                            t.$message({
+                                type:'success',
+                                message:'提交成功'
+                            })
+                            t.getSpotCheckReportInfo()
+                        }else{
+                            t.$message({
+                                type:'warning',
+                                message:res.data.message
+                            })
+                        }
+                        t.editForm = {
+                            id: null,
+                            checkTime: '',
+                            hiddendangerStatus: null,
+                            hiddendangerInfos: [
+                                {
+                                    spotCheckHiddendanger: '',
+                                    hiddendangerLevel: null
+                                }
+                            ],
+                            amerceStatus: null,
+                            amerceMoney: null,
+                            stopProductionStatus: null,
+                            revokeLicenseStatus: null,
+                            detainLicenseStatus: null
+                        },
+                        t.editDialog = false
+                    } else {
+                        console.log('error submit!!');
+                        return false;
+                    }
+                });
+            },
+            resetEdit(){
+                this.editForm = {
+                    id: null,
+                    checkTime: '',
+                    hiddendangerStatus: null,
+                    hiddendangerInfos: [
+                    {
+                        spotCheckHiddendanger: '',
+                        hiddendangerLevel: null
+                    }
+                    ],
+                    amerceStatus: null,
+                    amerceMoney: null,
+                    stopProductionStatus: null,
+                    revokeLicenseStatus: null,
+                    detainLicenseStatus: null
                 }
-                this.editForm.riskList.push(newItem)
+            },
+            addEditItem(){
+                const t = this
+                const newItem = {
+                    spotCheckHiddendanger: '',
+                    hiddendangerLevel: null
+                }
+                t.editForm.hiddendangerInfos.push(newItem)
             },
             deleteEditItem(i){
-                console.log(i)
-                this.editForm.riskList.splice(i,1)
+                const t = this
+                if(t.editForm.hiddendangerInfos.length == 1){
+                    t.$message({
+                        type:'warning',
+                        message: '检查的隐患信息不可为空'
+                    })
+                }else{
+                    t.editForm.hiddendangerInfos.splice(i,1)
+                }
             },
         },
     }
@@ -440,8 +849,9 @@
             position: absolute;
             height: 40px;
             line-height: 40px;
-            right: 10px;
+            right: 20px;
             top: 0;
+            z-index: 99999;
         }
     }
 
@@ -569,21 +979,24 @@
                         }
                     }
 
-                    &:nth-of-type(1){
+                    &.w-5{
                         width: 5%;
                     }
-                    &:nth-of-type(2){
-                        width: 60%
+                    &.w-10{
+                        width: 10%;
                     }
-                    &:nth-of-type(3){
-                        width: 35%;
+                    &.w-15{
+                        width: 15%;
                     }
-                    &.w-50{
-                        width: 50%;
+                    &.w-20{
+                        width: 20%;
                     }
                     &.w-25{
                         width: 25%;
                     }
+                    &.w-50{
+                        width: 50%;
+                    }
                     &.w-75{
                         width: 75%;
                     }
diff --git a/src/views/specialCheck/components/reportDetails.vue b/src/views/specialCheck/components/reportDetails.vue
index 92df9d2..ff1f72e 100644
--- a/src/views/specialCheck/components/reportDetails.vue
+++ b/src/views/specialCheck/components/reportDetails.vue
@@ -81,51 +81,48 @@
 
 <script>
     import {computePageCount} from "@/utils";
-
+    import { getEnterpriseInfo } from "@/api/selfCheck";
     export default {
         name: "reportDetails",
         data(){
             return{
                 dialogVisible:false,
+                id: null,
                 corpInfo:{
-                    name: '沙湾市国华商贸有限公司',
-                    location: '新疆维吾尔自治区塔城地区沙湾县',
-                    isInDate: true,
-                    stock: '0.7321',
-                    store: '3',
-                    measures: [
-                        {
-                            desc: '未及时设防未及时设防未及时设防未及时设防未及时设防未及时设防未及时设防未及时设防未及时设防未及时设防未及时设防',
-                            checkTime: '2022年12月13日',
-                            level: '一般隐患',
-                            action: '及时设防',
-                            money: '30',
-                            name: '田维云',
-                            status: '整改完成期限:2022年10月13日'
-                        },
-                        {
-                            desc: '未及时设防',
-                            checkTime: '2022年12月13日',
-                            level: '一般隐患',
-                            action: '及时设防',
-                            money: '0',
-                            name: '刘海亮',
-                            status: '整改完成期限:2022年10月13日'
-                        }
-                    ],
-                    totalRisks: 2,
-                    majorRisk: 0,
-                    fixRisks: 2,
-                    fixMajorRisk: 0,
-                    reporter: '张建路',
-                    reportPhone: '15699336111',
-                    reportTime: '2022-10-13'
+                    enterpriseName: '',
+                    enterpriseProvince: '',
+                    enterpriseCity: '',
+                    enterpriseArea: '',
+                    licenceValidStatus: 0,
+                    stockNum: 0,
+                    store: 0,
+                    hiddendangerInfos: [],
+                    hiddendangerSum: 0,
+                    majorHiddendangerNum: 0,
+                    completedRectifyHiddendangerSum: 0,
+                    completedRectifyMajorHiddendangerNum: 0,
+                    selfcheckReportUserName: '',
+                    selfcheckReportUserMobile: '',
+                    reportModifyTime: ''
                 }
             }
         },
         watch: {
         },
         methods:{
+            async getEnterpriseInfo(){
+                const t = this
+                let res = await getEnterpriseInfo({id: t.id})
+                if(res.data.code === "200"){
+                    t.corpInfo = res.data.result
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+            },
+
             confirmBack(){
                 this.dialogVisible = false
             }
diff --git a/src/views/specialCheck/components/retailForm.vue b/src/views/specialCheck/components/retailForm.vue
deleted file mode 100644
index 85939a2..0000000
--- a/src/views/specialCheck/components/retailForm.vue
+++ /dev/null
@@ -1,240 +0,0 @@
-<template>
-    <div class="table">
-        <div class="filter-container">
-            <div class="table-tit">
-                <h2>2023年上半年烟花爆竹生产经营安全检查(零售)</h2>
-                <span>(检查一家反馈一家,没有检查出隐患问题的也要登记反馈)</span>
-            </div>
-            <div class="control-bar">
-                <div>
-                    批发企业共计<span>416</span>家,其中:已自查<span>115</span>家,未自查<span class="undone">301</span>家;本级已经抽查<span>51</span>家,未检查<span class="undone">365</span>家,完成率<span>100%</span>。
-                </div>
-                <el-button class="filter-item" style="margin-left: 10px;" type="primary"
-                           icon="el-icon-search">自定义查询
-                </el-button>
-            </div>
-        </div>
-        <div class="table_content">
-            <el-table
-                v-loading="listLoading"
-                :key="tableKey"
-                :data="checkData"
-                border
-                fit
-                highlight-current-row
-                style="width: 100%;"
-            >
-
-                <el-table-column type="index" label="序号" align="center" width="80"/>
-                <el-table-column label="单位名称" prop="owner" align="center" width="180">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.owner }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="联系电话" prop="phone" align="center">
-                    <template slot-scope="scope">
-                        <span>{{scope.row.phone}}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="库存数量/万箱" prop="stock" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.stock }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="是否查出隐患" prop="isRisk" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.isRisk == 0 ? '否' : '是' }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="自查填报时间" prop="selfCheckTime" width="130" align="center" sortable>
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.selfCheckTime }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="填报状态" prop="fillStatus" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.fillStatus == 0 ? '未填报' : '已填报' }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="详情" align="center" class-name="small-padding fixed-width">
-                    <template slot-scope="scope">
-                        <el-button type="text" @click="viewDetails(scope.row)">查看</el-button>
-                    </template>
-                </el-table-column>
-                <el-table-column label="反馈状态" prop="feedback" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.feedback == 0 ? '未反馈' : '已反馈' }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="执法抽查" align="center" class-name="small-padding fixed-width">
-                    <template slot-scope="scope">
-                        <el-button type="text" @click="toFeedback(scope.row)">情况反馈</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-
-
-            <el-pagination
-                v-show="recordTotal>0"
-                :current-page="currentPage"
-                :page-sizes="[10, 20, 30, 50]"
-                :page-size="pageSize"
-                :total="recordTotal"
-                layout="total, sizes, prev, pager, next, jumper"
-                background
-                style="float:right;margin:3px"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-            />
-        </div>
-    </div>
-</template>
-
-<script>
-import {mapGetters} from "vuex";
-import Cookies from "_js-cookie@2.2.0@js-cookie";
-import {paramList} from "../../../api/contract";
-import {computePageCount} from "../../../utils";
-import {parseError} from "../../../utils/messageDialog";
-
-export default {
-name: "retailForm",
-    data(){
-        return{
-            recordTotal: 0,
-            pageSize: 10,
-            pageTotal: 0,
-            currentPage: 1,
-            listLoading: false,
-            tableKey: 0,
-            checkData: [
-                {
-                    owner: '单位一',
-                    phone: '88888888',
-                    stock: 266,
-                    isRisk: 0,
-                    selfCheckTime: '2022-10-27 15:16:00',
-                    fillStatus: 1,
-                    feedback: 0,
-                },
-                {
-                    owner: '单位二',
-                    phone: '66666666',
-                    stock: 288,
-                    isRisk: 1,
-                    selfCheckTime: '2022-10-27 15:16:00',
-                    fillStatus: 0,
-                    feedback: 1,
-                }
-            ],
-        }
-    },
-    created() {
-        // this.getDataList();
-    },
-    computed: {
-        ...mapGetters([
-            'userType',
-            'name'
-        ])
-    },
-    methods:{
-        // getDataList() {
-            // const t = this;
-            // const params = {};
-            // params['pageIndex'] = t.currentPage;
-            // params['pageSize'] = t.pageSize;
-            // params['sort'] = t.sort;
-            // params['order'] = t.order;
-            // const userName = Cookies.get('userName');
-            // const name = Cookies.get('name');
-            // params['operator'] = name + '(' + userName + ')';
-            // for (const i in t.queryForm) {
-            //     if (t.queryForm[i] != undefined && t.queryForm[i].toString() != '') {
-            //         params[i] = t.queryForm[i]
-            //     }
-            // }
-            // t.listLoading = true
-            // paramList(params).then(response => {
-            //     const res = response.data;
-            //     if (res.code === "200") {
-            //         const result = res.result;
-            //         t.recordTotal = result.totalCount;
-            //         t.pageSize = result.pageSize;
-            //         t.pageTotal = computePageCount(result.totalCount, result.pageSize);
-            //         t.currentPage = result.pageIndex;
-            //         t.checkData = result.result
-            //     } else {
-            //         parseError({error: res.message, vm: t})
-            //     }
-            //     t.listLoading = false
-            // }).catch(error => {
-            //     t.listLoading = false
-            //     parseError({error: error, vm: t})
-            // })
-        // },
-
-        handleSizeChange: function (val) {
-            this.pageSize = val
-            this.currentPage = 1
-            // this.getDataList()
-        },
-        handleCurrentChange: function (val) {
-            this.currentPage = val
-            // this.getDataList()
-        },
-
-        viewDetails(row){
-            console.log(row)
-        },
-
-        toFeedback(row){
-            console.log(row)
-        }
-    }
-}
-</script>
-
-<style lang="scss" scoped>
-    .table{
-        width: 100%;
-        height: 100%;
-        .filter-container{
-            .table-tit{
-                text-align: center;
-                margin-bottom: 10px;
-                h2{
-                    margin: 0;
-                }
-                span{
-                    display: block;
-                    margin-top: 6px;
-                    color: #ff0000;
-                }
-            }
-            .control-bar{
-                display: flex;
-                justify-content: space-between;
-                align-items: center;
-
-                div{
-                    span{
-                        font-size: 22px;
-                        margin: 0 6px;
-                        color: #034EA2;
-                        font-weight: bolder;
-                    }
-
-                    .undone{
-                        color: #ff0000;
-                    }
-                }
-            }
-        }
-        .filter-item{
-            margin-bottom: 0;
-        }
-    }
-</style>
diff --git a/src/views/specialCheck/components/sendWork.vue b/src/views/specialCheck/components/sendWork.vue
index 5812319..211bb81 100644
--- a/src/views/specialCheck/components/sendWork.vue
+++ b/src/views/specialCheck/components/sendWork.vue
@@ -7,9 +7,9 @@
         width="60%"
         center
     >
-        <el-form ref="form" :model="workForm" label-width="80px">
-            <el-form-item label="专项检查任务名称:" label-width="140px">
-                <el-input type="textarea" v-model="workForm.name"></el-input>
+        <el-form :model="workForm" :rules="rules" ref="ruleForm" label-width="80px">
+            <el-form-item label="专项检查任务名称:" label-width="180px" prop="taskName">
+                <el-input type="textarea" v-model="workForm.taskName"></el-input>
             </el-form-item>
             <div class="form-part">
                 <h3>省级检查指标</h3>
@@ -17,20 +17,21 @@
                 <el-divider content-position="left">批发企业</el-divider>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="完成检查不低于:" label-width="140px">
-                            <el-input v-model="workForm.pro.whole" class="input-with-select">
-                                <el-select v-model="workForm.pro.wholeUnit" slot="append">
-                                    <el-option label="家" value="1"></el-option>
-                                    <el-option label="%" value="2"></el-option>
+                        <el-form-item label="完成检查不低于:" label-width="140px" prop="provinceWholesaleCheckTarget">
+                            <el-input v-model="workForm.provinceWholesaleCheckTarget" class="input-with-select">
+                                <el-select v-model="workForm.provinceWholesaleCheckTargetUnit" slot="append">
+                                    <el-option label="家" :value="1"></el-option>
+                                    <el-option label="%" :value="2"></el-option>
                                 </el-select>
                             </el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="完成期限:" label-width="140px">
+                        <el-form-item label="完成期限:" label-width="140px" prop="provinceWholesaleCheckDeadline">
                             <el-date-picker
-                                v-model="workForm.pro.wholeDate"
-                                type="date"
+                                v-model="workForm.provinceWholesaleCheckDeadline"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
                                 placeholder="请选择截止日期">
                             </el-date-picker>
                         </el-form-item>
@@ -40,20 +41,21 @@
                 <el-divider content-position="left">零售企业</el-divider>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="完成检查不低于:" label-width="140px">
-                            <el-input v-model="workForm.pro.retail" class="input-with-select">
-                                <el-select v-model="workForm.pro.retailUnit" slot="append">
-                                    <el-option label="家" value="1"></el-option>
-                                    <el-option label="%" value="2"></el-option>
+                        <el-form-item label="完成检查不低于:" label-width="140px" prop="provinceRetailCheckTarget">
+                            <el-input v-model="workForm.provinceRetailCheckTarget" class="input-with-select">
+                                <el-select v-model="workForm.provinceRetailCheckTargetUnit" slot="append">
+                                    <el-option label="家" :value="1"></el-option>
+                                    <el-option label="%" :value="2"></el-option>
                                 </el-select>
                             </el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="完成期限:" label-width="140px">
+                        <el-form-item label="完成期限:" label-width="140px" prop="provinceRetailCheckDeadline">
                             <el-date-picker
-                                v-model="workForm.pro.retailDate"
-                                type="date"
+                                v-model="workForm.provinceRetailCheckDeadline"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
                                 placeholder="请选择截止日期">
                             </el-date-picker>
                         </el-form-item>
@@ -66,17 +68,18 @@
                 <el-divider content-position="left">批发企业</el-divider>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="完成检查不低于:" label-width="140px">
-                            <el-input v-model="workForm.city.whole" class="input-with-select">
+                        <el-form-item label="完成检查不低于:" label-width="140px" prop="cityWholesaleCheckTarget">
+                            <el-input v-model="workForm.cityWholesaleCheckTarget" class="input-with-select">
                                 <template slot="append">%</template>
                             </el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="完成期限:" label-width="140px">
+                        <el-form-item label="完成期限:" label-width="140px" prop="cityWholesaleCheckDeadline">
                             <el-date-picker
-                                v-model="workForm.city.wholeDate"
-                                type="date"
+                                v-model="workForm.cityWholesaleCheckDeadline"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
                                 placeholder="请选择截止日期">
                             </el-date-picker>
                         </el-form-item>
@@ -86,17 +89,18 @@
                 <el-divider content-position="left">零售企业</el-divider>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="完成检查不低于:" label-width="140px">
-                            <el-input v-model="workForm.city.retail" class="input-with-select">
+                        <el-form-item label="完成检查不低于:" label-width="140px" prop="cityRetailCheckTarget">
+                            <el-input v-model="workForm.cityRetailCheckTarget" class="input-with-select">
                                 <template slot="append">%</template>
                             </el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="完成期限:" label-width="140px">
+                        <el-form-item label="完成期限:" label-width="140px" prop="cityRetailCheckDeadline">
                             <el-date-picker
-                                v-model="workForm.city.retailDate"
-                                type="date"
+                                v-model="workForm.cityRetailCheckDeadline"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
                                 placeholder="请选择截止日期">
                             </el-date-picker>
                         </el-form-item>
@@ -109,17 +113,18 @@
                 <el-divider content-position="left">批发企业</el-divider>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="完成检查不低于:" label-width="140px">
-                            <el-input v-model="workForm.county.whole" class="input-with-select">
+                        <el-form-item label="完成检查不低于:" label-width="140px" prop="areaWholesaleCheckTarget">
+                            <el-input v-model="workForm.areaWholesaleCheckTarget" class="input-with-select">
                                 <template slot="append">%</template>
                             </el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="完成期限:" label-width="140px">
+                        <el-form-item label="完成期限:" label-width="140px" prop="areaWholesaleCheckDeadline">
                             <el-date-picker
-                                v-model="workForm.county.wholeDate"
-                                type="date"
+                                v-model="workForm.areaWholesaleCheckDeadline"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
                                 placeholder="请选择截止日期">
                             </el-date-picker>
                         </el-form-item>
@@ -129,76 +134,112 @@
                 <el-divider content-position="left">零售企业</el-divider>
                 <el-row>
                     <el-col :span="12">
-                        <el-form-item label="完成检查不低于:" label-width="140px">
-                            <el-input v-model="workForm.county.retail" class="input-with-select">
+                        <el-form-item label="完成检查不低于:" label-width="140px" prop="areaRetailCheckTarget">
+                            <el-input v-model="workForm.areaRetailCheckTarget" class="input-with-select">
                                 <template slot="append">%</template>
                             </el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="完成期限:" label-width="140px">
+                        <el-form-item label="完成期限:" label-width="140px" prop="areaRetailCheckDeadline">
                             <el-date-picker
-                                v-model="workForm.county.retailDate"
-                                type="date"
+                                v-model="workForm.areaRetailCheckDeadline"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
                                 placeholder="请选择截止日期">
                             </el-date-picker>
                         </el-form-item>
                     </el-col>
                 </el-row>
             </div>
-            <el-form-item label="企业自查期限:" label-width="140px">
+            <el-form-item label="企业自查期限:" label-width="140px" prop="enterpriseSelfCheckDeadline">
                 <el-date-picker
-                    v-model="workForm.corpDate"
-                    type="date"
+                    v-model="workForm.enterpriseSelfCheckDeadline"
+                    type="datetime"
+                    value-format="yyyy-MM-dd HH:mm:ss"
                     placeholder="选择日期">
                 </el-date-picker>
             </el-form-item>
         </el-form>
         <span slot="footer" class="dialog-footer">
-          <el-button @click="dialogVisible = false">重置</el-button>
-          <el-button type="primary" @click="confirmSend()">确认下发</el-button>
+          <el-button @click="resetForm('ruleForm')">重置</el-button>
+          <el-button type="primary" @click="confirmSend('ruleForm')">确认下发</el-button>
         </span>
     </el-dialog>
 </template>
 
 <script>
     import {computePageCount} from "@/utils";
-
+    import{sendCheckTask} from "@/api/specialCheck"
     export default {
         name: "sendWork",
         data(){
             return{
                 dialogVisible:false,
                 workForm: {
-                    name: '',
-                    pro:{
-                        whole: '',
-                        wholeUnit: '1',
-                        wholeDate: '',
-                        retail: '',
-                        retailUnit: '1',
-                        retailDate: ''
-                    },
-                    city:{
-                        whole: '',
-                        wholeDate: '',
-                        retail: '',
-                        retailDate: ''
-                    },
-                    county:{
-                        whole: '',
-                        wholeDate: '',
-                        retail: '',
-                        retailDate: ''
-                    }
+                    taskName: '',
+                    provinceWholesaleCheckTarget: null,
+                    provinceWholesaleCheckTargetUnit: 1,
+                    provinceWholesaleCheckDeadline: '',
+                    provinceRetailCheckTarget: null,
+                    provinceRetailCheckTargetUnit: 1,
+                    provinceRetailCheckDeadline: '',
+                    cityWholesaleCheckTarget: null,
+                    cityWholesaleCheckDeadline: '',
+                    cityRetailCheckTarget: null,
+                    cityRetailCheckDeadline: '',
+                    areaWholesaleCheckTarget: null,
+                    areaWholesaleCheckDeadline: '',
+                    areaRetailCheckTarget: null,
+                    areaRetailCheckDeadline: '',
+                    enterpriseSelfCheckDeadline: ''
+                },
+                rules: {
+                    taskName: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
+                    provinceWholesaleCheckTarget: [{ required: true, message: '请输入指标', trigger: 'blur' }],
+                    provinceWholesaleCheckDeadline: [{ required: true, message: '请选择日期', trigger: 'blur' }],
+                    provinceRetailCheckTarget: [{ required: true, message: '请输入指标', trigger: 'blur' }],
+                    provinceRetailCheckDeadline: [{ required: true, message: '请选择日期', trigger: 'blur' }],
+                    cityWholesaleCheckTarget: [{ required: true, message: '请输入指标', trigger: 'blur' }],
+                    cityWholesaleCheckDeadline: [{ required: true, message: '请选择日期', trigger: 'blur' }],
+                    cityRetailCheckTarget: [{ required: true, message: '请输入指标', trigger: 'blur' }],
+                    cityRetailCheckDeadline: [{ required: true, message: '请选择日期', trigger: 'blur' }],
+                    areaWholesaleCheckTarget: [{ required: true, message: '请输入指标', trigger: 'blur' }],
+                    areaWholesaleCheckDeadline: [{ required: true, message: '请选择日期', trigger: 'blur' }],
+                    areaRetailCheckTarget: [{ required: true, message: '请输入指标', trigger: 'blur' }],
+                    areaRetailCheckDeadline: [{ required: true, message: '请选择日期', trigger: 'blur' }],
+                    enterpriseSelfCheckDeadline: [{ required: true, message: '请选择日期', trigger: 'blur' }]
                 }
             }
         },
         watch: {
         },
         methods:{
-            confirmSend(){
-                this.dialogVisible = false
+            confirmSend(formName){
+                const t = this
+                t.$refs[formName].validate(async (valid) => {
+                    if (valid) {
+                        let res = await sendCheckTask(t.workForm)
+                        if(res.data.code === "200"){
+                            t.$message({
+                                type:'success',
+                                message:res.data.message
+                            })
+                        }else{
+                            t.$message({
+                                type:'warning',
+                                message:res.data.message
+                            })
+                        }
+                        t.dialogVisible = false
+                        t.resetForm(formName)
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            resetForm(formName) {
+                this.$refs[formName].resetFields();
             }
         },
     }
diff --git a/src/views/specialCheck/components/sumSheet.vue b/src/views/specialCheck/components/sumSheet.vue
new file mode 100644
index 0000000..76bdd82
--- /dev/null
+++ b/src/views/specialCheck/components/sumSheet.vue
@@ -0,0 +1,361 @@
+<template>
+    <div class="table">
+        <div class="table_content">
+            <el-tabs type="border-card" v-model="activeTab" @tab-click="switchSheet">
+                <el-tab-pane label="批发" name="1" style="display: flex;flex-direction: column;align-items: flex-start">
+                    <h2 style="text-align: center">2023年上半年烟花爆竹生产经营安全检查批发环节信息报送汇总表(省级层面)</h2>
+                    <table class="data-table">
+                        <tr>
+                            <th rowspan="3">序号</th>
+                            <th rowspan="3">地市</th>
+                            <th colspan="2">企业基本情况</th>
+                            <th colspan="11">企业自查及整改</th>
+                            <th colspan="9">检查及整改情况</th>
+                            <th colspan="4">执法处罚情况</th>
+                        </tr>
+                        <tr>
+                            <th rowspan="2">企业总数</th>
+                            <th rowspan="2">任务下发时有效期内企业总数</th>
+                            <th rowspan="2">自查企业数量</th>
+                            <th rowspan="2">自查覆盖率要求</th>
+                            <th rowspan="2">已完成覆盖率</th>
+                            <th rowspan="2">当前有效期内企业数量</th>
+                            <th rowspan="2">企业库存数量/万箱</th>
+                            <th rowspan="2">企业库容量/万箱</th>
+                            <th colspan="2">隐患问题情况</th>
+                            <th colspan="3">整改情况</th>
+                            <th rowspan="2">检查层级</th>
+                            <th rowspan="2">检查企业数量</th>
+                            <th rowspan="2">检查覆盖率要求</th>
+                            <th rowspan="2">已完成覆盖率</th>
+                            <th colspan="2">隐患问题情况</th>
+                            <th colspan="3">整改情况</th>
+                            <th rowspan="2">吊销许可证数量</th>
+                            <th rowspan="2">暂扣许可证数量</th>
+                            <th rowspan="2">罚款企业数量</th>
+                            <th rowspan="2">罚款金额</th>
+                        </tr>
+                        <tr>
+                            <th>隐患总数</th>
+                            <th>重大隐患数量</th>
+                            <th>整改总数</th>
+                            <th>重大隐患整改数量</th>
+                            <th>隐患整改率</th>
+                            <th>隐患总数</th>
+                            <th>重大隐患数量</th>
+                            <th>整改隐患总数</th>
+                            <th>整改重大隐患数量</th>
+                            <th>隐患整改率</th>
+                        </tr>
+                        <tr>
+                            <td colspan="2">合计</td>
+                            <td>{{sum.enterpriseSum}}</td>
+                            <td>{{sum.validEnterpriseNum}}</td>
+                            <td>{{sum.selfCheckEnterpriseNum}}</td>
+                            <td>{{sum.selfCheckRateRequire + '%'}}</td>
+                            <td :class="(sum.selfCheckEnterpriseNum / sum.validEnterpriseNum) * 100<sum.selfCheckRateRequire?'warning':''">
+                                {{(sum.selfCheckEnterpriseNum / sum.validEnterpriseNum) * 100 + '%'}}
+                            </td>
+                            <td>{{sum.validSelfCheckEnterpriseNum}}</td>
+                            <td>{{sum.stockNum}}</td>
+                            <td>{{sum.storageCapacity}}</td>
+                            <td>{{sum.selfhiddendangerSum}}</td>
+                            <td>{{sum.selfmajorHiddendangerNum}}</td>
+                            <td>{{sum.selfcompletedRectifyHiddendangerSum}}</td>
+                            <td>{{sum.selfcompletedRectifyMajorHiddendangerNum}}</td>
+                            <td>{{(sum.selfcompletedRectifyHiddendangerSum / sum.selfhiddendangerSum) * 100 + '%'}}</td>
+                            <td>--</td>
+                            <td>{{sum.spotCheckEnterpriseNum}}</td>
+                            <td>{{sum.spotCheckRateRequire + '%'}}</td>
+                            <td :class="(sum.spotCheckEnterpriseNum / sum.validEnterpriseNum) * 100<sum.spotCheckRateRequire?'warning':''">
+                                {{(sum.spotCheckEnterpriseNum / sum.validEnterpriseNum) * 100 + '%'}}
+                            </td>
+                            <td>{{sum.spotCheckHiddendangerSum}}</td>
+                            <td>{{sum.spotCheckMajorHiddendangerNum}}</td>
+                            <td>{{sum.spotCheckCompletedRectifyHiddendangerSum}}</td>
+                            <td>{{sum.spotCheckCompletedRectifyMajorHiddendangerNum}}</td>
+                            <td>{{(sum.spotCheckCompletedRectifyHiddendangerSum / sum.spotCheckHiddendangerSum) * 100 + '%'}}</td>
+                            <td>{{sum.revokeLicenseEnterpriseSum}}</td>
+                            <td>{{sum.detainLicenseSum}}</td>
+                            <td>{{sum.amerceEnterpriseNum}}</td>
+                            <td>{{sum.amerceMoneySum}}</td>
+                        </tr>
+                        <tr>
+                            <td colspan="2">{{ unitType==1?'省本级':(unitType==2?'市本级':'县本级') }}</td>
+                            <td>{{thisLevelStatistic.enterpriseSum?thisLevelStatistic.enterpriseSum: '--'}}</td>
+                            <td>{{thisLevelStatistic.validEnterpriseNum?thisLevelStatistic.validEnterpriseNum: '--'}}</td>
+                            <td>{{thisLevelStatistic.selfCheckEnterpriseNum?thisLevelStatistic.selfCheckEnterpriseNum: '--'}}</td>
+                            <td>{{thisLevelStatistic.selfCheckRateRequire?thisLevelStatistic.selfCheckRateRequire: '--'}}</td>
+                            <td>{{thisLevelStatistic.selfCheckCompleteRate?thisLevelStatistic.selfCheckCompleteRate: '--'}}</td>
+                            <td>{{thisLevelStatistic.validSelfCheckEnterpriseNum?thisLevelStatistic.validSelfCheckEnterpriseNum: '--'}}</td>
+                            <td>{{thisLevelStatistic.stockNum?thisLevelStatistic.stockNum:'--'}}</td>
+                            <td>{{thisLevelStatistic.storageCapacity?thisLevelStatistic.storageCapacity: '--'}}</td>
+                            <td>{{thisLevelStatistic.hiddendangerSum?thisLevelStatistic.hiddendangerSum:'--'}}</td>
+                            <td>{{thisLevelStatistic.majorHiddendangerNum?thisLevelStatistic.majorHiddendangerNum:'--'}}</td>
+                            <td>{{thisLevelStatistic.completedRectifyHiddendangerSum?thisLevelStatistic.completedRectifyHiddendangerSum:'--'}}</td>
+                            <td>{{thisLevelStatistic.completedRectifyMajorHiddendangerNum?thisLevelStatistic.completedRectifyMajorHiddendangerNum:'--'}}</td>
+                            <td>{{thisLevelStatistic.hiddendangerRectifyRate?thisLevelStatistic.hiddendangerRectifyRate:'--'}}</td>
+                            <td>省级</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckinfo.spotCheckEnterpriseNum}}</td>
+                            <td>{{typeof thisLevelStatistic.thisLevelSpotCheckinfo.spotCheckRateRequire=="string"?thisLevelStatistic.thisLevelSpotCheckinfo.spotCheckRateRequire:thisLevelStatistic.thisLevelSpotCheckinfo.spotCheckRateRequire + '%'}}</td>
+                            <td>{{typeof thisLevelStatistic.thisLevelSpotCheckinfo.spotCheckCompleteRate=="string"?thisLevelStatistic.thisLevelSpotCheckinfo.spotCheckCompleteRate:thisLevelStatistic.thisLevelSpotCheckinfo.spotCheckCompleteRate + '%'}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckHiddendangerinfo.spotCheckHiddendangerSum}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckHiddendangerinfo.spotCheckMajorHiddendangerNum}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckHiddendangerinfo.spotCheckCompletedRectifyHiddendangerSum}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckHiddendangerinfo.spotCheckCompletedRectifyMajorHiddendangerNum}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckHiddendangerinfo.spotCheckHiddendangerRectifyRate + '%'}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckinfo.revokeLicenseEnterpriseSum}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckinfo.detainLicenseSum}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckinfo.amerceEnterpriseNum}}</td>
+                            <td>{{thisLevelStatistic.thisLevelSpotCheckinfo.amerceMoneySum}}</td>
+                        </tr>
+                        <template v-for="(item,index) in institutionalData">
+                        <tr>
+                            <td rowspan="2">{{ index + 1}}</td>
+                            <td rowspan="2" @click="toDownSide()">{{item.enterpriseProvince?item.enterpriseProvince:'' + item.enterpriseCity?item.enterpriseCity:'' + item.enterpriseArea?item.enterpriseArea:''}}</td>
+                            <td rowspan="2">{{item.enterpriseSum}}</td>
+                            <td rowspan="2">{{item.validEnterpriseNum}}</td>
+                            <td rowspan="2">{{item.selfCheckEnterpriseNum}}</td>
+                            <td rowspan="2">{{item.selfCheckRateRequire + '%'}}</td>
+                            <td rowspan="2" :class="item.selfCheckCompleteRate<item.selfCheckRateRequire?'warning':''">{{item.selfCheckCompleteRate + '%'}}</td>
+                            <td rowspan="2">{{ item.validSelfCheckEnterpriseNum }}</td>
+                            <td rowspan="2">{{ item.stockNum }}</td>
+                            <td rowspan="2">{{ item.storageCapacity }}</td>
+                            <td rowspan="2">{{ item.hiddendangerSum }}</td>
+                            <td rowspan="2">{{ item.majorHiddendangerNum }}</td>
+                            <td rowspan="2">{{ item.completedRectifyHiddendangerSum }}</td>
+                            <td rowspan="2">{{ item.completedRectifyMajorHiddendangerNum }}</td>
+                            <td rowspan="2">{{ item.hiddendangerRectifyRate }}</td>
+                            <td>设区市级</td>
+                            <td>{{item.citySpotCheckinfo.spotCheckEnterpriseNum}}</td>
+                            <td>{{item.citySpotCheckinfo.spotCheckRateRequire + '%'}}</td>
+                            <td :class="item.citySpotCheckinfo.spotCheckCompleteRate<item.citySpotCheckinfo.spotCheckRateRequire?'warning':''">{{item.citySpotCheckinfo.spotCheckCompleteRate + '%'}}</td>
+                            <td>{{item.citySpotCheckHiddendangerinfo.spotCheckHiddendangerSum}}</td>
+                            <td>{{item.citySpotCheckHiddendangerinfo.spotCheckMajorHiddendangerNum}}</td>
+                            <td>{{item.citySpotCheckHiddendangerinfo.spotCheckCompletedRectifyHiddendangerSum}}</td>
+                            <td>{{item.citySpotCheckHiddendangerinfo.spotCheckCompletedRectifyMajorHiddendangerNum}}</td>
+                            <td>{{item.citySpotCheckHiddendangerinfo.spotCheckHiddendangerRectifyRate + '%'}}</td>
+                            <td>{{item.citySpotCheckinfo.revokeLicenseEnterpriseSum}}</td>
+                            <td>{{item.citySpotCheckinfo.detainLicenseSum}}</td>
+                            <td>{{item.citySpotCheckinfo.amerceEnterpriseNum}}</td>
+                            <td>{{item.citySpotCheckinfo.amerceMoneySum}}</td>
+                        </tr>
+                        <tr>
+                            <td>县级</td>
+                            <td>{{item.areaSpotCheckinfo.spotCheckEnterpriseNum}}</td>
+                            <td>{{item.areaSpotCheckinfo.spotCheckRateRequire + '%'}}</td>
+                            <td :class="item.areaSpotCheckinfo.spotCheckCompleteRate<item.areaSpotCheckinfo.spotCheckRateRequire?'warning':''">{{item.areaSpotCheckinfo.spotCheckCompleteRate + '%'}}</td>
+                            <td>{{item.areaSpotCheckHiddendangerinfo.spotCheckHiddendangerSum}}</td>
+                            <td>{{item.areaSpotCheckHiddendangerinfo.spotCheckMajorHiddendangerNum}}</td>
+                            <td>{{item.areaSpotCheckHiddendangerinfo.spotCheckCompletedRectifyHiddendangerSum}}</td>
+                            <td>{{item.areaSpotCheckHiddendangerinfo.spotCheckCompletedRectifyMajorHiddendangerNum}}</td>
+                            <td>{{item.areaSpotCheckHiddendangerinfo.spotCheckHiddendangerRectifyRate + '%'}}</td>
+                            <td>{{item.areaSpotCheckinfo.revokeLicenseEnterpriseSum}}</td>
+                            <td>{{item.areaSpotCheckinfo.detainLicenseSum}}</td>
+                            <td>{{item.areaSpotCheckinfo.amerceEnterpriseNum}}</td>
+                            <td>{{item.areaSpotCheckinfo.amerceMoneySum}}</td>
+                        </tr>
+                        </template>
+                    </table>
+                </el-tab-pane>
+                <el-tab-pane label="零售" name="2">
+                    <h2 style="text-align: center">2023年上半年烟花爆竹生产经营安全检查零售环节信息报送汇总表(省级层面)</h2>
+                </el-tab-pane>
+            </el-tabs>
+        </div>
+    </div>
+</template>
+
+<script>
+import {mapGetters} from "vuex";
+import Cookies from "_js-cookie@2.2.0@js-cookie";
+import {paramList} from "../../../api/contract";
+import {computePageCount} from "../../../utils";
+import {parseError} from "../../../utils/messageDialog";
+import { getCheckUnitType,getDataStatistics, getSpecialCheckTask } from "@/api/specialCheck"
+
+export default {
+name: "sumSheet",
+    components: {},
+    data(){
+        return{
+            taskId: null,
+            unitType: null,
+            recordTotal: 0,
+            pageSize: 10,
+            currentPage: 1,
+            listLoading: false,
+            activeTab: '1',
+            enterpriseCity: null,
+            enterpriseArea: null,
+            sum:{
+                enterpriseSum: null,
+                validEnterpriseNum: null,
+                selfCheckEnterpriseNum: null,
+                selfCheckRateRequire: 100,
+                validSelfCheckEnterpriseNum: null,
+                stockNum: null,
+                storageCapacity: null,
+                selfhiddendangerSum: null,
+                selfmajorHiddendangerNum: null,
+                selfcompletedRectifyHiddendangerSum: null,
+                selfcompletedRectifyMajorHiddendangerNum: null,
+                spotCheckEnterpriseNum: null,
+                spotCheckRateRequire: 100,
+                spotCheckHiddendangerSum: null,
+                spotCheckMajorHiddendangerNum: null,
+                spotCheckCompletedRectifyHiddendangerSum:null,
+                spotCheckCompletedRectifyMajorHiddendangerNum:null,
+                revokeLicenseEnterpriseSum:null,
+                detainLicenseSum:null,
+                amerceEnterpriseNum:null,
+                amerceMoneySum:null
+            },
+            thisLevelStatistic: {
+                thisLevelSpotCheckinfo:{},
+                thisLevelSpotCheckHiddendangerinfo:{}
+            },
+            institutionalData: []
+        }
+    },
+    created() {
+        const t = this
+        if(t.taskId){t.getDataStatistics()}
+        else{t.getCheckTask()}
+        t.getCheckUnitType()
+    },
+    computed: {
+        ...mapGetters([
+            'userType',
+            'name'
+        ])
+    },
+    methods:{
+        async getCheckUnitType(){
+            const t = this
+            t.listLoading = true
+            let res = await getCheckUnitType()
+            if(res.data.code === "200"){
+                t.unitType = res.data.result.checkUnitType
+            }else{
+                t.$message({
+                    type:'warning',
+                    message:res.data.message
+                })
+            }
+            t.listLoading = false
+        },
+        async getCheckTask(){
+            const t = this
+            const res = await getSpecialCheckTask()
+            if(res.data.code === "200"){
+                t.taskId = res.data.result.specialCheckTaskSimplifyInfos[0].id
+                t.getDataStatistics()
+            }else{
+                t.$message({
+                    type:'warning',
+                    message:res.data.message
+                })
+            }
+        },
+        getSum(arr){
+            return arr.reduce((prev,curr)=>prev+curr)
+        },
+        async getDataStatistics(){
+            const t = this
+            const data = {id: t.taskId,enterpriseType: Number(t.activeTab),enterpriseCity: t.enterpriseCity,enterpriseArea: t.enterpriseArea,pageIndex: t.currentPage,pageSize: t.pageSize}
+            const res = await getDataStatistics(data)
+            if(res.data.code === "200"){
+                t.thisLevelStatistic = res.data.result.thisLevelInstitutionalDataInfo
+                t.institutionalData = res.data.result.institutionalDataInfo
+                t.sum.enterpriseSum = t.getSum(Array.from(t.institutionalData, ({ enterpriseSum }) => enterpriseSum))
+                t.sum.validEnterpriseNum = t.getSum(Array.from(t.institutionalData, ({ validEnterpriseNum }) => validEnterpriseNum))
+                t.sum.selfCheckEnterpriseNum = t.getSum(Array.from(t.institutionalData, ({ selfCheckEnterpriseNum }) => selfCheckEnterpriseNum))
+                t.sum.validSelfCheckEnterpriseNum = t.getSum(Array.from(t.institutionalData, ({ validSelfCheckEnterpriseNum }) => validSelfCheckEnterpriseNum))
+                t.sum.stockNum = t.getSum(Array.from(t.institutionalData, ({ stockNum }) => stockNum))
+                console.log(Array.from(t.institutionalData, ({ stockNum }) => stockNum),'666666666666')
+                t.sum.storageCapacity = t.getSum(Array.from(t.institutionalData, ({ storageCapacity }) => storageCapacity))
+                t.sum.selfhiddendangerSum = t.getSum(Array.from(t.institutionalData, ({ hiddendangerSum }) => hiddendangerSum))
+                t.sum.selfmajorHiddendangerNum = t.getSum(Array.from(t.institutionalData, ({ majorHiddendangerNum }) => majorHiddendangerNum))
+                t.sum.selfcompletedRectifyHiddendangerSum = t.getSum(Array.from(t.institutionalData, ({ completedRectifyHiddendangerSum }) => completedRectifyHiddendangerSum))
+                t.sum.selfcompletedRectifyMajorHiddendangerNum = t.getSum(Array.from(t.institutionalData, ({ completedRectifyMajorHiddendangerNum }) => completedRectifyMajorHiddendangerNum))
+                t.sum.spotCheckEnterpriseNum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckinfo.spotCheckEnterpriseNum}))
+                t.sum.spotCheckHiddendangerSum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckHiddendangerinfo.spotCheckHiddendangerSum}))
+                t.sum.spotCheckMajorHiddendangerNum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckHiddendangerinfo.spotCheckMajorHiddendangerNum}))
+                t.sum.spotCheckCompletedRectifyHiddendangerSum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckHiddendangerinfo.spotCheckCompletedRectifyHiddendangerSum}))
+                t.sum.spotCheckCompletedRectifyMajorHiddendangerNum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckHiddendangerinfo.spotCheckCompletedRectifyMajorHiddendangerNum}))
+                t.sum.revokeLicenseEnterpriseSum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckinfo.revokeLicenseEnterpriseSum}))
+                t.sum.detainLicenseSum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckinfo.detainLicenseSum}))
+                t.sum.amerceEnterpriseNum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckinfo.amerceEnterpriseNum}))
+                t.sum.amerceMoneySum = t.getSum(t.institutionalData.map(item=>{return item.citySpotCheckinfo.amerceMoneySum}))
+            }else{
+                t.$message({
+                    type:'warning',
+                    message:res.data.message
+                })
+            }
+        },
+        switchSheet(tab, event) {
+            const t = this
+            t.getDataStatistics()
+        },
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep.el-tabs--border-card .el-tabs__content{
+    height: calc(100vh - 200px);
+    overflow: scroll !important;
+}
+.data-table{
+    border-collapse: collapse;
+    border: 1px solid #ccc;
+    margin: 0 0 20px;
+    background: #fff;
+    box-shadow: 0 3px 12px rgba(0,0,0,.2);
+    tr{
+        border-bottom: 1px solid #ccc;
+        white-space: nowrap;
+        font-size: 12px;
+        &:last-of-type{
+            border-bottom: none;
+        }
+
+        th{
+            padding: 6px 4px;
+            border: 1px solid #ccc;
+            border-left: none;
+            font-weight: bolder;
+            text-align: center;
+            color: #409EFF;
+
+            &:first-of-type{
+                border-top: 1px solid #ccc;
+                border-left: 1px solid #ccc;
+            }
+            &.dark-bg{
+                background: #409EFF;
+                color: #fff;
+            }
+        }
+
+        td{
+            padding: 6px 4px;
+            border-right: 1px solid #ccc;
+            text-align: center;
+
+            &:last-of-type{
+                border-right: none;
+            }
+        }
+        .warning{
+            color: red;
+        }
+    }
+    .b-font{
+        font-size: 16px;
+        font-weight: bolder;
+    }
+}
+</style>
diff --git a/src/views/specialCheck/components/wholesaleForm.vue b/src/views/specialCheck/components/wholesaleForm.vue
index 070551e..be125b7 100644
--- a/src/views/specialCheck/components/wholesaleForm.vue
+++ b/src/views/specialCheck/components/wholesaleForm.vue
@@ -2,12 +2,16 @@
     <div class="table">
         <div class="filter-container">
             <div class="table-tit">
-                <h2>2023年上半年烟花爆竹生产经营安全检查(批发)</h2>
+                <h2 v-show="enterpriseType == 1">2023年上半年烟花爆竹生产经营安全检查(批发)</h2>
+                <h2 v-show="enterpriseType == 2">2023年上半年烟花爆竹生产经营安全检查(零售)</h2>
                 <span>(检查一家反馈一家,没有检查出隐患问题的也要登记反馈)</span>
             </div>
             <div class="control-bar">
-                <div>
-                    批发企业共计<span>17</span>家,其中:已自查<span>15</span>家,未自查<span class="undone">2</span>家;本级已经抽查<span>5</span>家,未检查<span class="undone">12</span>家,完成率<span>100%</span>。
+                <div v-show="enterpriseType == 1">
+                    批发企业共计<span class="point-data" @click="getEnterpriseCompleteInfoList">{{enterpriseCount}}</span>家,其中:已自查<span class="point-data" @click="toSelfEnterprise(1)">{{ selfCheckEnterpriseCount }}</span>家,未自查<span @click="toSelfEnterprise(0)" class="undone point-data">{{ noSelfCheckEnterpriseCount }}</span>家;本级已经抽查<span class="point-data" @click="toLevelEnterprise(1)">{{ thislevelAlreadyCheckCount }}</span>家,未检查<span @click="toLevelEnterprise(0)" class="undone point-data">{{ thislevelNoCheckCount }}</span>家,完成率<span>{{ thislevelCompletionRate + '%' }}</span>。
+                </div>
+                <div v-show="enterpriseType == 2">
+                    零售企业共计<span class="point-data" @click="getEnterpriseCompleteInfoList">{{enterpriseCount}}</span>家,其中:已自查<span class="point-data" @click="toSelfEnterprise(1)">{{ selfCheckEnterpriseCount }}</span>家,未自查<span @click="toSelfEnterprise(0)" class="undone point-data">{{ noSelfCheckEnterpriseCount }}</span>家;本级已经抽查<span class="point-data" @click="toLevelEnterprise(1)">{{ thislevelAlreadyCheckCount }}</span>家,未检查<span @click="toLevelEnterprise(0)" class="undone point-data">{{ thislevelNoCheckCount }}</span>家,完成率<span>{{ thislevelCompletionRate + '%' }}</span>。
                 </div>
                 <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="showFilter = !showFilter">{{showFilter?'关闭查询':'自定义查询'}}</el-button>
             </div>
@@ -22,21 +26,21 @@
                         <el-cascader
                             :options="options"
                             v-model="selectedOptions"
-                            :props="{ checkStrictly: true,expandTrigger: 'hover'}"
+                            :props="{ checkStrictly: true,expandTrigger: 'hover',value: 'label'}"
                             separator="-"
                             @change="locationChange">
                         </el-cascader>
                     </el-col>
                     <el-col :span="6">
                         <span>自查是否有隐患:</span>
-                        <el-radio-group v-model="search.isRisky">
+                        <el-radio-group v-model="search.isRisky" @input="changeRadio()">
                             <el-radio :label="1">是</el-radio>
-                            <el-radio :label="2">否</el-radio>
+                            <el-radio :label="0">否</el-radio>
                         </el-radio-group>
                     </el-col>
                     <el-col :span="4">
-                        <el-button  style="margin-right: 10px;" type="primary">查询</el-button>
-                        <el-button class="resetBtn"  type="primary" plain>重置</el-button>
+                        <el-button style="margin-right: 10px;" type="primary" @click="searchData()">查询</el-button>
+                        <el-button class="resetBtn"  type="primary" plain @click="resetSearch()">重置</el-button>
                     </el-col>
                 </el-row>
             </transition>
@@ -53,36 +57,18 @@
             >
 
                 <el-table-column type="index" label="序号" align="center" width="80"/>
-                <el-table-column label="单位名称" prop="owner" align="center" width="180">
+                <el-table-column label="单位名称" prop="enterpriseName" align="center" width="180"></el-table-column>
+                <el-table-column label="联系电话" prop="enterpriseOfficephone" align="center"></el-table-column>
+                <el-table-column label="库存数量/万箱" prop="stockNum" align="center"></el-table-column>
+                <el-table-column label="是否查出隐患" prop="hiddendangerStatus" align="center">
                     <template slot-scope="scope">
-                        <span>{{ scope.row.owner }}</span>
+                        <span>{{ scope.row.hiddendangerStatus == 1 ? '是' : '否' }}</span>
                     </template>
                 </el-table-column>
-                <el-table-column label="联系电话" prop="phone" align="center">
+                <el-table-column label="自查填报时间" prop="selfcheckReportTime" width="130" align="center" sortable></el-table-column>
+                <el-table-column label="填报状态" prop="selfcheckStatus" align="center">
                     <template slot-scope="scope">
-                        <span>{{scope.row.phone}}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="库存数量/万箱" prop="stock" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.stock }}</span>
-                    </template>
-                </el-table-column>
-
-                <el-table-column label="是否查出隐患" prop="isRisk" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.isRisk == 0 ? '否' : '是' }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="自查填报时间" prop="selfCheckTime" width="130" align="center" sortable>
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.selfCheckTime }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="填报状态" prop="fillStatus" align="center">
-                    <template slot-scope="scope">
-                        <span>{{ scope.row.fillStatus == 0 ? '未填报' : '已填报' }}</span>
+                        <span>{{ scope.row.selfcheckStatus == 1 ? '已填报' : '未填报' }}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="详情" align="center" class-name="small-padding fixed-width">
@@ -90,12 +76,12 @@
                         <el-button type="text" @click="viewDetails(scope.row)">查看</el-button>
                     </template>
                 </el-table-column>
-                <el-table-column label="反馈状态" prop="feedback" align="center">
+                <el-table-column label="反馈状态" prop="thislevelCheckStatus" align="center">
                     <template slot-scope="scope">
-                        <span>{{ scope.row.feedback == 0 ? '未反馈' : '已反馈' }}</span>
+                        <span>{{ scope.row.thislevelCheckStatus == 1 ? '已反馈' : '未反馈' }}</span>
                     </template>
                 </el-table-column>
-                <el-table-column label="执法抽查" align="center" class-name="small-padding fixed-width">
+                <el-table-column fixed="right" :label="unitType==1?'执法抽查':'执法检查'" align="center" class-name="small-padding fixed-width">
                     <template slot-scope="scope">
                         <el-button type="text" @click="toFeedback(scope.row)">情况反馈</el-button>
                     </template>
@@ -106,7 +92,7 @@
             <el-pagination
                 v-show="recordTotal>0"
                 :current-page="currentPage"
-                :page-sizes="[10, 20, 30, 50]"
+                :page-sizes="[10, 15]"
                 :page-size="pageSize"
                 :total="recordTotal"
                 layout="total, sizes, prev, pager, next, jumper"
@@ -116,7 +102,7 @@
                 @current-change="handleCurrentChange"
             />
         </div>
-        <report-details ref="report"></report-details>
+        <check-details ref="report"></check-details>
         <feedback-details ref="feedback"></feedback-details>
     </div>
 </template>
@@ -127,53 +113,54 @@
 import {paramList} from "../../../api/contract";
 import {computePageCount} from "../../../utils";
 import {parseError} from "../../../utils/messageDialog";
-import ReportDetails from "./reportDetails";
+import checkDetails from "../../selfCheck/components/checkDetails"
 import feedbackDetails from "./feedbackDetails";
 import { regionData } from 'element-china-area-data'
+import { getCheckUnitType, getEnterpriseCompleteInfoList, getSpecialCheckTask } from "@/api/specialCheck"
 
 export default {
 name: "wholesaleForm",
-    components: {ReportDetails,feedbackDetails},
+    components: {checkDetails,feedbackDetails},
     data(){
         return{
             recordTotal: 0,
             pageSize: 10,
             pageTotal: 0,
             currentPage: 1,
+            unitType: null,
+            taskId: null,
+            enterpriseType: null,
+            selfcheckStatus: null,
+            thislevelCheckStatus: null,
             listLoading: false,
             showFilter: false,
             search:{
                 name: '',
-                location: '',
-                isRisky: ''
+                province: '',
+                city: '',
+                area: '',
+                isRisky: null
             },
             tableKey: 0,
             options: regionData,
             selectedOptions: [],
-            checkData: [
-                {
-                    owner: '单位一',
-                    phone: '88888888',
-                    stock: 266,
-                    isRisk: 0,
-                    selfCheckTime: '2022-10-27 15:16:00',
-                    fillStatus: 1,
-                    feedback: 0,
-                },
-                {
-                    owner: '单位二',
-                    phone: '66666666',
-                    stock: 288,
-                    isRisk: 1,
-                    selfCheckTime: '2022-10-27 15:16:00',
-                    fillStatus: 0,
-                    feedback: 1,
-                }
-            ]
+            enterpriseCount: null,
+            selfCheckEnterpriseCount: null,
+            noSelfCheckEnterpriseCount: null,
+            thislevelAlreadyCheckCount: null,
+            thislevelNoCheckCount: null,
+            thislevelCompletionRate: null,
+            checkData: []
         }
     },
     created() {
-        // this.getDataList();
+        const t = this
+        t.getCheckUnitType()
+        if(t.taskId && t.enterpriseType){
+            t.getEnterpriseCompleteInfoList()
+        }else{
+            t.getCheckTask()
+        }
     },
     computed: {
         ...mapGetters([
@@ -182,63 +169,120 @@
         ])
     },
     methods:{
-        // getDataList() {
-            // const t = this;
-            // const params = {};
-            // params['pageIndex'] = t.currentPage;
-            // params['pageSize'] = t.pageSize;
-            // params['sort'] = t.sort;
-            // params['order'] = t.order;
-            // const userName = Cookies.get('userName');
-            // const name = Cookies.get('name');
-            // params['operator'] = name + '(' + userName + ')';
-            // for (const i in t.queryForm) {
-            //     if (t.queryForm[i] != undefined && t.queryForm[i].toString() != '') {
-            //         params[i] = t.queryForm[i]
-            //     }
-            // }
-            // t.listLoading = true
-            // paramList(params).then(response => {
-            //     const res = response.data;
-            //     if (res.code === "200") {
-            //         const result = res.result;
-            //         t.recordTotal = result.totalCount;
-            //         t.pageSize = result.pageSize;
-            //         t.pageTotal = computePageCount(result.totalCount, result.pageSize);
-            //         t.currentPage = result.pageIndex;
-            //         t.checkData = result.result
-            //     } else {
-            //         parseError({error: res.message, vm: t})
-            //     }
-            //     t.listLoading = false
-            // }).catch(error => {
-            //     t.listLoading = false
-            //     parseError({error: error, vm: t})
-            // })
-        // },
+        async getCheckUnitType(){
+            const t = this
+            t.listLoading = true
+            let res = await getCheckUnitType()
+            if(res.data.code === "200"){
+                t.unitType = res.data.result.checkUnitType
+            }else{
+                t.$message({
+                    type:'warning',
+                    message:res.data.message
+                })
+            }
+            t.listLoading = false
+        },
+        async getCheckTask(){
+            const t = this
+            const res = await getSpecialCheckTask()
+            if(res.data.code === "200"){
+                t.taskId = res.data.result.specialCheckTaskSimplifyInfos[0].id
+                t.enterpriseType = 1
+                t.getEnterpriseCompleteInfoList()
+            }else{
+                t.$message({
+                    type:'warning',
+                    message:res.data.message
+                })
+            }
+        },
+        async getEnterpriseCompleteInfoList(){
+            const t = this
+            t.listLoading = true
+            let data = {pageIndex: t.currentPage,pageSize: t.pageSize,taskId: t.taskId,enterpriseType: t.enterpriseType,selfcheckStatus:t.selfcheckStatus,thislevelCheckStatus: t.thislevelCheckStatus,enterpriseName: t.search.name, enterpriseProvince: t.search.province, enterpriseCity: t.search.city, enterpriseArea: t.search.area, hiddendangerStatus: t.search.isRisky}
+            let res = await getEnterpriseCompleteInfoList(data)
+            if(res.data.code === "200"){
+                t.enterpriseCount = res.data.result.enterpriseCount
+                t.selfCheckEnterpriseCount = res.data.result.selfCheckEnterpriseCount
+                t.noSelfCheckEnterpriseCount = res.data.result.noSelfCheckEnterpriseCount
+                t.thislevelAlreadyCheckCount = res.data.result.thislevelAlreadyCheckCount
+                t.thislevelNoCheckCount = res.data.result.thislevelNoCheckCount
+                t.thislevelCompletionRate = res.data.result.thislevelCompletionRate
+                t.checkData = res.data.result.iPage.records
+                t.recordTotal = res.data.result.iPage.total
+            }else{
+                t.$message({
+                    type:'warning',
+                    message:res.data.message
+                })
+            }
+            t.listLoading = false
+        },
 
         handleSizeChange: function (val) {
             this.pageSize = val
             this.currentPage = 1
-            // this.getDataList()
+            this.getEnterpriseCompleteInfoList()
         },
         handleCurrentChange: function (val) {
             this.currentPage = val
-            // this.getDataList()
+            this.getEnterpriseCompleteInfoList()
         },
         locationChange(value) {
-            console.log(value)
+            const t = this
+            t.search.province = value[0]
+            t.search.city = value[1] ? value[1] : ''
+            t.search.area = value[2] ? value[2] : ''
+            t.getEnterpriseCompleteInfoList()
         },
 
-        viewDetails(row){
-            console.log(row)
+        changeRadio(){
+            this.getEnterpriseCompleteInfoList()
+        },
+
+        searchData(){
+            this.getEnterpriseCompleteInfoList()
+        },
+
+        resetSearch(){
+            this.search = {
+                name: '',
+                province: '',
+                city: '',
+                area: '',
+                isRisky: null
+            }
+            this.selectedOptions = []
+            this.getEnterpriseCompleteInfoList()
+        },
+
+        toSelfEnterprise(value){
             const t = this
+            t.thislevelCheckStatus = null
+            t.selfcheckStatus = value
+            t.getEnterpriseCompleteInfoList()
+        },
+        toLevelEnterprise(value){
+            const t = this
+            t.thislevelCheckStatus = value
+            t.selfcheckStatus = null
+            t.getEnterpriseCompleteInfoList()
+        },
+        viewDetails(row){
+            const t = this
+            t.$refs.report.id = row.id
+            t.$refs.report.getEnterpriseInfo()
             t.$refs.report.dialogVisible = true
         },
 
         toFeedback(row){
-            console.log(row)
             const t = this
+            t.$refs.feedback.corpInfo = row
+            t.$refs.feedback.id = row.id
+            t.$refs.feedback.feedbackForm.id = row.id
+            t.$refs.feedback.getSpotCheckReportInfo()
+            t.$refs.feedback.unitType = t.unitType
             t.$refs.feedback.dialogVisible = true
         }
     }
@@ -279,6 +323,14 @@
                     .undone{
                         color: #ff0000;
                     }
+
+                    .point-data{
+                        cursor: pointer;
+
+                        &:hover{
+                            text-decoration: underline;
+                        }
+                    }
                 }
                 .filter-item{
                     margin-bottom: 0;
diff --git a/src/views/specialCheck/index.vue b/src/views/specialCheck/index.vue
index ee63d9f..135ca32 100644
--- a/src/views/specialCheck/index.vue
+++ b/src/views/specialCheck/index.vue
@@ -1,19 +1,19 @@
 <template>
     <div class="app-container" style="padding-bottom:40px">
         <div class="menu-area">
-            <el-button class="add-btn" type="primary" icon="el-icon-plus" @click="sendJob()">新任务下发</el-button>
-<!--            <div class="menu-tit">2023年上半年安全检查</div>-->
+            <el-button v-if="unitType==1" class="add-btn" type="primary" icon="el-icon-plus" @click="sendJob()">新任务下发</el-button>
             <el-menu
                 default-active="1"
                 class="el-menu-vertical-demo"
                 background-color="#eeeeee"
                 text-color="#333"
+                unique-opened
                 active-text-color="#034EA2"
                 @select="menuSelect">
-                <el-submenu index="1">
+                <el-submenu v-for="(item,i) in taskMenu" :key="i" :index="item.id + ''">
                     <template slot="title">
                         <i class="el-icon-s-order"></i>
-                        <span>2023年上半年安全检查</span>
+                        <span>{{item.taskName}}</span>
                     </template>
                     <el-menu-item index="1">
                         <span slot="title">安全检查反馈情况(批发)</span>
@@ -21,15 +21,15 @@
                     <el-menu-item index="2">
                         <span slot="title">安全检查反馈情况(零售)</span>
                     </el-menu-item>
-                    <el-menu-item index="3">
+                    <el-menu-item index="3" v-if="unitType==1||unitType==2">
                         <span slot="title">安全检查情况汇总</span>
                     </el-menu-item>
                 </el-submenu>
             </el-menu>
         </div>
         <div class="table-area">
-            <wholesale-form v-show="curTab == 1"></wholesale-form>
-            <retail-form v-show="curTab == 2"></retail-form>
+            <wholesale-form v-show="curTab == 1 || curTab == 2" ref="wholesale"></wholesale-form>
+            <sum-sheet v-show="curTab == 3" ref="sumSheet"></sum-sheet>
         </div>
         <send-work ref="send"></send-work>
     </div>
@@ -42,23 +42,29 @@
     import {MessageBox} from 'element-ui'
     import { getToken } from '@/utils/auth'
     import wholesaleForm from './components/wholesaleForm'
-    import retailForm from "./components/retailForm"
+    import sumSheet from "./components/sumSheet"
     import sendWork from "./components/sendWork"
+    import { getCheckUnitType, getSpecialCheckTask } from "@/api/specialCheck"
 
     export default {
         name: "specialCheck",
         components:{
             wholesaleForm,
-            retailForm,
+            sumSheet,
             sendWork
         },
         data() {
             return {
-                curTab: 1
+                curTab: 1,
+                unitType: 1,
+                taskMenu: [],
+                taskId: null
             }
         },
         created() {
-
+            const t = this
+            t.getCheckUnitType()
+            t.getSpecialCheckTask()
         },
         mounted() {
 
@@ -70,9 +76,51 @@
             ])
         },
         methods: {
-            menuSelect(key, keyPath) {
-                this.curTab = key
+            async getCheckUnitType(){
+                const t = this
+                t.listLoading = true
+                let res = await getCheckUnitType()
+                if(res.data.code === "200"){
+                    t.unitType = res.data.result.checkUnitType
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                t.listLoading = false
             },
+
+            async getSpecialCheckTask(){
+                const t = this
+                const res = await getSpecialCheckTask()
+                if(res.data.code === "200"){
+                    t.taskMenu = res.data.result.specialCheckTaskSimplifyInfos
+                    t.$refs.wholesale.taskId = t.taskMenu[0].id
+                    t.$refs.wholesale.enterpriseType = 1
+                    t.$refs.wholesale.getEnterpriseCompleteInfoList()
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+            },
+
+            menuSelect(key, keyPath) {
+                const t = this
+                console.log(key, keyPath,'切换')
+                if(key == 1 || key == 2){
+                    t.$refs.wholesale.taskId = Number(keyPath[0])
+                    t.$refs.wholesale.enterpriseType = Number(key)
+                    t.$refs.wholesale.getEnterpriseCompleteInfoList()
+                }else{
+                    t.$refs.sumSheet.taskId = Number(keyPath[0])
+                    t.$refs.sumSheet.getDataStatistics()
+                }
+                t.curTab = key
+            },
+
             sendJob(){
                 this.$refs.send.dialogVisible = true
             }
@@ -88,22 +136,30 @@
         align-items: flex-start;
 
         .menu-area{
-            width: 20%;
+            width: 18%;
             .add-btn{
                 width: 100%;
                 margin-bottom: 20px;
                 background: #034EA2;
             }
-            .menu-tit{
+            ::v-deep.el-submenu__title{
+                height: auto;
+                line-height: 1.5;
+                padding: 20px 24px 20px 0;
+                white-space: pre-wrap;
+            }
+            ::v-deep.el-menu-item{
                 width: 100%;
-                background: #eee;
-                padding: 20px 20px 10px;
-                font-size: 18px;
-                font-weight: bolder;
+                box-sizing: border-box;
+                height: auto;
+                line-height: 1.5;
+                padding: 20px 24px 20px 0;
+                min-width: 100px;
+                white-space: pre-wrap;
             }
         }
         .table-area{
-            width: calc(80% - 20px);
+            width: calc(82% - 20px);
         }
     }
 </style>
diff --git a/src/views/supervision/components/supervisionDetails.vue b/src/views/supervision/components/supervisionDetails.vue
new file mode 100644
index 0000000..e90bc37
--- /dev/null
+++ b/src/views/supervision/components/supervisionDetails.vue
@@ -0,0 +1,318 @@
+<template>
+    <el-dialog
+        :visible.sync="dialogVisible"
+        append-to-body
+        :close-on-click-modal="false"
+        width="75%"
+        center
+    >
+         <div slot="title" class="dialog-title">
+            烟花爆竹批发企业自查情况信息报送表
+         </div>
+        <div class="table-tit">
+            <div>企业名称: <span class="m-color">{{corpInfo.enterpriseName}}</span></div>
+            <div>所属省市县: <span class="m-color">{{corpInfo.enterpriseProvince + corpInfo.enterpriseCity + corpInfo.enterpriseArea}}</span></div>
+            <div>检查层级: <span class="m-color">{{ corpInfo.checkUnitType == 1 ? '省级' : (corpInfo.checkUnitType == 2 ? '市级' : '县级') }}</span></div>
+            <div>检查单位: <span class="m-color">{{corpInfo.checkName}}</span></div>
+        </div>
+        <div class="corp-list">
+            <table class="corp-table">
+                <tr>
+                    <td class="m-color w-25">检查时间</td>
+                    <td class="m-color w-25">{{corpInfo.checkTime}}</td>
+                    <td class="m-color w-25">是否检查出隐患问题</td>
+                    <td class="m-color w-25">{{corpInfo.hiddendangerStatus==1?'是':'否'}}</td>
+                </tr>
+                <tr class="m-color b-font" style="text-align: center" v-if="corpInfo.hiddendangerStatus == 1">自查与整改情况</tr>
+                <tr v-if="corpInfo.hiddendangerStatus == 1">
+                    <td class="m-color w-5">序号</td>
+                    <td class="m-color w-15">检查出的隐患问题</td>
+                    <td class="m-color w-10">隐患等级</td>
+                    <td class="m-color w-30">整改措施</td>
+                    <td class="m-color w-10">整改资金(元)</td>
+                    <td class="m-color w-10">责任人</td>
+                    <td class="m-color w-20">隐患状态</td>
+                </tr>
+                <tr v-for="(item,index) in corpInfo.hiddendangerInfos" :key="index" v-if="corpInfo.hiddendangerStatus == 1">
+                    <td class="w-5">{{index}}</td>
+                    <td class="w-15 overText">{{item.spotCheckHiddendanger}}</td>
+                    <td class="w-10">{{item.hiddendangerLevel == 1 ? '一般隐患' : '重大隐患'}}</td>
+                    <td class="w-30 overText">{{item.rectifyMeasure}}</td>
+                    <td class="w-10">{{item.rectifyPrice}}</td>
+                    <td class="w-10">{{item.chargePerson}}</td>
+                    <td class="w-20">
+                        <span v-if="item.rectifyStatus == 0">
+                            未整改
+                            <el-button type="text" @click="toRectify(item)">去整改</el-button>
+                        </span>
+                        <span v-else>
+                            {{item.completeRectifyTime + '整改完成'}}
+                        </span>
+                    </td>
+                </tr>
+                <tr class="m-color b-font" style="text-align: center">合计</tr>
+                <tr>
+                    <td class="m-color w-50">隐患总数</td>
+                    <td class="m-color w-50">重大隐患数量</td>
+                </tr>
+                <tr>
+                    <td class="w-50">{{corpInfo.hiddendangerSum}}</td>
+                    <td class="w-50">{{corpInfo.majorHiddendangerNum}}</td>
+                </tr>
+            </table>
+<!--            <div class="table-bottom">-->
+<!--                <div>填报人: <span class="m-color">{{corpInfo.selfcheckReportUserName}}</span></div>-->
+<!--            </div>-->
+<!--            <div class="table-bottom">-->
+<!--                <div>填报人联系电话: <span class="m-color">{{corpInfo.selfcheckReportUserMobile}}</span></div>-->
+<!--                <div>填报时间: <span class="m-color">{{corpInfo.reportModifyTime}}</span></div>-->
+<!--            </div>-->
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="confirmBack()">返回</el-button>
+        </span>
+        <el-dialog
+            :visible.sync="dialogReport"
+            title="整改填报"
+            append-to-body
+            :close-on-click-modal="false"
+            width="40%"
+            center
+        >
+            <el-form ref="reportFormRef" :model="reportForm" label-width="140px">
+                <el-form-item label="当前隐患:">
+                    <el-input type="textarea" v-model="reportForm.info"></el-input>
+                </el-form-item>
+
+                <el-form-item label="当前完成整改日期:">
+                    <el-date-picker
+                        v-model="reportForm.completeRectifyTime"
+                        type="date"
+                        placeholder="请选择整改日期">
+                    </el-date-picker>
+                </el-form-item>
+                <el-form-item label="整改资金:">
+                    <el-input v-model="reportForm.rectifyPrice"></el-input>
+                </el-form-item>
+                <el-form-item label="整改措施:">
+                    <el-input type="textarea" autosize v-model="reportForm.rectifyMeasure"></el-input>
+                </el-form-item>
+                <el-form-item label="负责人:">
+                    <el-input v-model="reportForm.chargePerson"></el-input>
+                </el-form-item>
+            </el-form>
+            <span slot="footer" class="dialog-footer">
+              <el-button @click="dialogReport = false">取消</el-button>
+              <el-button type="primary" @click="confirmReport()">提交</el-button>
+            </span>
+        </el-dialog>
+    </el-dialog>
+</template>
+
+<script>
+    import {computePageCount} from "@/utils";
+    import { getSpotCheckRecorder, updateSpotCheckRectifyInfo } from "@/api/selfCheck";
+
+    export default {
+        name: "supervisionDetails",
+        data(){
+            return{
+                dialogVisible:false,
+                dialogReport: false,
+                id: null,
+                unitType: 1,
+                corpInfo:{
+                    enterpriseName: '',
+                    enterpriseProvince: '',
+                    enterpriseCity: '',
+                    enterpriseArea: '',
+                    checkUnitType: 1,
+                    checkName: '',
+                    checkTime: '',
+                    hiddendangerStatus: 0,
+                    hiddendangerInfos: [],
+                    hiddendangerSum: 0,
+                    majorHiddendangerNum: 0
+                },
+                reportForm:{
+                    id: null,
+                    info: '',
+                    completeRectifyTime: '',
+                    rectifyPrice: 0,
+                    rectifyMeasure: '',
+                    chargePerson: ''
+                }
+            }
+        },
+        created() {
+            const t = this
+            t.getEnterpriseInfo()
+        },
+        watch: {
+        },
+        methods:{
+            async getEnterpriseInfo(){
+                const t = this
+                const data = {id: t.id,unitType:t.unitType}
+                let res = await getSpotCheckRecorder(data)
+                if(res.data.code === "200"){
+                    t.corpInfo = res.data.result
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+            },
+            toRectify(item){
+                const t = this
+                t.reportForm.info = item.spotCheckHiddendanger
+                t.reportForm.id = item.id
+                t.dialogReport = true
+            },
+
+            async confirmReport(){
+                const t = this
+                let {info,...data} = t.reportForm
+                let res = await updateSpotCheckRectifyInfo(data)
+                if(res.data.code === "200"){
+                    t.$message({
+                        type:'success',
+                        message:res.data.message
+                    })
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                t.dialogReport = false
+            },
+            confirmBack(){
+                this.dialogVisible = false
+            }
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+    .input-with-select .el-select {
+        width: 120px;
+    }
+
+    .el-date-editor.el-input{
+        width: 100%;
+    }
+    .dialog-title{
+        font-size: 22px;
+        font-weight: bolder;
+    }
+    .table-tit{
+        width: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        flex-flow: wrap;
+        background: #ecf5ff;
+        padding: 10px;
+        border-radius: 4px;
+
+        &>div{
+            width: 50%;
+            margin-bottom: 10px;
+            &:nth-of-type(3),&:nth-of-type(4){
+                margin-bottom: 0;
+            }
+        }
+    }
+    .corp-list{
+        .corp-table{
+            width: 100%;
+            border-collapse: collapse;
+            border: 1px solid #79bbff;
+            margin: 10px 0;
+            th{
+                padding: 10px 0;
+                border: 1px solid #79bbff;
+                border-bottom: 1px solid #ccc;
+            }
+            tr{
+                width: 100%;
+                height: 44px;
+                line-height: 42px;
+                border-bottom: 1px solid #ccc;
+
+                &:last-of-type{
+                    border-bottom: none;
+                }
+                td{
+                    border-right: 1px solid #ccc;
+                    display: inline-block;
+                    height: 44px;
+                    vertical-align: middle;
+                    text-align: center;
+                    line-height: 42px;
+
+                    &:last-of-type{
+                        border-right: none;
+                    }
+                    ::v-deep.el-textarea{
+                        .el-textarea__inner{
+                            min-height: 40px !important;
+                            background-color:  #ecf5ff;
+                            border: 1px solid #d9ecff;
+                        }
+                    }
+
+                    &.w-5{
+                        width: 5%;
+                    }
+                    &.w-10{
+                        width: 10%;
+                    }
+                    &.w-15{
+                        width: 15%;
+                    }
+                    &.w-20{
+                        width: 20%;
+                    }
+                    &.w-50{
+                        width: 50%;
+                    }
+                    &.w-25{
+                        width: 25%;
+                    }
+                    &.w-75{
+                        width: 75%;
+                    }
+                    &.w-33{
+                        width: 33.33%;
+                    }
+                    &.overText{
+                        overflow: auto;
+                        line-height: 1.5;
+                        text-align: left;
+                        padding: 10px;
+                    }
+                }
+            }
+            .b-font{
+                font-size: 16px;
+                font-weight: bolder;
+            }
+            ::v-deep.mid{
+                .el-input__inner{
+                    text-align: center;
+                    background-color:  #ecf5ff;
+                    border: 1px solid #d9ecff;
+                }
+            }
+        }
+        .table-bottom{
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin-bottom: 10px;
+        }
+    }
+</style>
diff --git a/src/views/supervision/index.vue b/src/views/supervision/index.vue
new file mode 100644
index 0000000..e6b7564
--- /dev/null
+++ b/src/views/supervision/index.vue
@@ -0,0 +1,141 @@
+<template>
+    <div class="app-container" style="padding-bottom:40px">
+        <div class="table_content">
+            <el-table
+                v-loading="listLoading"
+                :key="tableKey"
+                :data="checkData"
+                border
+                fit
+                highlight-current-row
+                style="width: 100%;"
+            >
+
+                <el-table-column label="下发日期" prop="gmtCreate" align="center" width="180"></el-table-column>
+                <el-table-column label="任务名称" prop="taskName" align="center"></el-table-column>
+                <el-table-column label="下发部门" prop="createUnit" align="center"></el-table-column>
+                <el-table-column label="检查部门" prop="checkName" align="center"></el-table-column>
+                <el-table-column label="被检查日期" prop="checkTime" align="center"></el-table-column>
+                <el-table-column label="是否隐患" prop="hiddendangerStatus" align="center">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.hiddendangerStatus == 0 ? '否' : '是' }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="一般隐患" prop="countHiddendangerCommon" align="center"></el-table-column>
+                <el-table-column label="重大隐患" prop="countHiddendangerMajor" align="center"></el-table-column>
+                <el-table-column label="总数" prop="hiddendangerSum" align="center"></el-table-column>
+                <el-table-column label="整改情况" prop="rectifyStatus" align="center" class-name="small-padding fixed-width">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.rectifyStatus == 0?'存在未整改':'已完成' }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="详情" align="center" class-name="small-padding fixed-width">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="toDetail(scope.row)">查看详情</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination
+                :current-page="currentPage"
+                :page-sizes="[10, 15]"
+                :page-size="pageSize"
+                :total="recordTotal"
+                layout="total, sizes, prev, pager, next, jumper"
+                background
+                style="float:right;margin:3px"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+            />
+        </div>
+        <supervision-details ref="details"></supervision-details>
+    </div>
+</template>
+
+<script>
+    import Cookies from 'js-cookie'
+    import {computePageCount} from "../../utils";
+    import {mapGetters} from "vuex";
+    import {MessageBox} from 'element-ui'
+    import { getToken } from '@/utils/auth'
+    import supervisionDetails from "./components/supervisionDetails"
+    import { getSpotCheckTask } from '@/api/selfCheck'
+
+    export default {
+        name: "supervision",
+        components:{
+            supervisionDetails
+        },
+        data() {
+            return {
+                listLoading: false,
+                recordTotal: 0,
+                pageSize: 10,
+                pageTotal: 0,
+                currentPage: 1,
+                tableKey: 0,
+                checkData: []
+            }
+        },
+        created() {
+            const t = this
+            t.getSpotCheckList()
+        },
+        mounted() {
+
+        },
+        computed: {
+            ...mapGetters([
+                'userType',
+                'name'
+            ])
+        },
+        methods: {
+            handleSizeChange: function (val) {
+                this.pageSize = val
+                this.currentPage = 1
+                this.getSpotCheckList()
+            },
+            handleCurrentChange: function (val) {
+                this.currentPage = val
+                this.getSpotCheckList()
+            },
+
+            toDetail(row){
+                const t = this
+                t.$refs.details.dialogVisible = true
+                t.$refs.details.id = row.id
+                t.$refs.details.unitType = row.checkUnitType
+            },
+
+            async getSpotCheckList(){
+                const t = this
+                t.listLoading = true
+                let data = {pageIndex: t.currentPage,pageSize: t.pageSize}
+                let res = await getSpotCheckTask(data)
+                if(res.data.code === "200"){
+                    t.recordTotal = res.data.result.total
+                    t.checkData = res.data.result.records
+                }else{
+                    t.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                t.listLoading = false
+            },
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .app-container{
+        width: 100%;
+        display: flex;
+        justify-content: space-between;
+        align-items: flex-start;
+
+        .table_content{
+            width: 100%;
+        }
+    }
+</style>

--
Gitblit v1.9.2