烟花爆竹实名登记前端
Admin
2022-11-18 8f03059619b5a5e9574b71d2ada27b76db2ffd7a
新增
1 files deleted
8 files modified
6 files added
3259 ■■■■ changed files
src/api/selfCheck.js 110 ●●●●● patch | view | raw | blame | history
src/api/specialCheck.js 98 ●●●●● patch | view | raw | blame | history
src/views/selfCheck/components/checkDetails.vue 253 ●●●●● patch | view | raw | blame | history
src/views/selfCheck/components/repair.vue 152 ●●●●● patch | view | raw | blame | history
src/views/selfCheck/components/selfReport.vue 114 ●●●● patch | view | raw | blame | history
src/views/selfCheck/index.vue 115 ●●●● patch | view | raw | blame | history
src/views/specialCheck/components/feedbackDetails.vue 761 ●●●● patch | view | raw | blame | history
src/views/specialCheck/components/reportDetails.vue 63 ●●●● patch | view | raw | blame | history
src/views/specialCheck/components/retailForm.vue 240 ●●●●● patch | view | raw | blame | history
src/views/specialCheck/components/sendWork.vue 177 ●●●●● patch | view | raw | blame | history
src/views/specialCheck/components/sumSheet.vue 361 ●●●●● patch | view | raw | blame | history
src/views/specialCheck/components/wholesaleForm.vue 260 ●●●●● patch | view | raw | blame | history
src/views/specialCheck/index.vue 96 ●●●● patch | view | raw | blame | history
src/views/supervision/components/supervisionDetails.vue 318 ●●●●● patch | view | raw | blame | history
src/views/supervision/index.vue 141 ●●●●● patch | view | raw | blame | history
src/api/selfCheck.js
New file
@@ -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
    })
}
src/api/specialCheck.js
New file
@@ -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
    })
}
src/views/selfCheck/components/checkDetails.vue
New file
@@ -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>
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
            }
        },
    }
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
            }
        },
    }
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
            },
        }
    }
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%;
                    }
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
            }
src/views/specialCheck/components/retailForm.vue
File was deleted
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();
            }
        },
    }
src/views/specialCheck/components/sumSheet.vue
New file
@@ -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>
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;
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>
src/views/supervision/components/supervisionDetails.vue
New file
@@ -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>
src/views/supervision/index.vue
New file
@@ -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>