Admin
2022-11-23 90de81ed138823dc498b201bc7873f74016d2f65
新增安全专项检查与用户层级
已修改13个文件
已添加3个文件
已删除1个文件
已重命名2个文件
1986 ■■■■■ 文件已修改
src/App.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/specialCheck.js 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/selfCheck/components/checkDetails.vue 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/selfCheck/components/repair.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/selfCheck/components/selfReport.vue 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/selfCheck/components/supervisionDetails.vue 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/selfCheck/index.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/selfCheck/supervision.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/components/areaEnterprises.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/components/areaForm.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/components/checkEnterprises.vue 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/components/feedbackDetails.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/components/reportDetails.vue 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/components/sendWork.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/components/sumSheet.vue 490 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/components/wholesaleForm.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialCheck/index.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/usermng/user.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue
@@ -5,6 +5,7 @@
</template>
<script>
export default {
  name: 'App'
}
src/api/specialCheck.js
@@ -96,3 +96,38 @@
        data
    })
}
// 点击栏目数字跳转到监管机构抽查情况
export function getSpotCheckRecord(data){
    return request({
        headers:{
            'Authorization':getToken()
        },
        url:process.env.BASE_API+ '/taskSpotCheck/select/getSpotCheckRecordWithHiddendangerCount',
        method:'post',
        data
    })
}
src/router/index.js
@@ -123,19 +123,7 @@
        component: () => import('@/views/dashboard/index'),
        name: 'Dashboard1',
        meta: { title: '首页', icon: 'el-icon-dash', noCache: true, affix: true }
      },
        {
            path: 'specialCheck',
            component: () => import('@/views/specialCheck/index'),
            name: 'specialCheck',
            meta: { title: '专项检查', icon: 'el-icon-dash', noCache: true, affix: true }
        },
        {
            path: 'selfCheck',
            component: () => import('@/views/selfCheck/index'),
            name: 'selfCheck',
            meta: { title: '专项自查', icon: 'el-icon-dash', noCache: true, affix: true }
        }
      }
    ],
    hidden: true
  },
src/views/selfCheck/components/checkDetails.vue
@@ -5,9 +5,10 @@
        :close-on-click-modal="false"
        width="75%"
        center
        @close="resetForm()"
    >
         <div slot="title" class="dialog-title">
            烟花爆竹批发企业自查情况信息报送表
            烟花爆竹{{enterpriseType==1?'批发':'零售'}}企业自查情况信息报送表
         </div>
        <div class="table-tit">
            <div>企业名称: <span class="m-color">{{corpInfo.enterpriseName}}</span></div>
@@ -90,20 +91,22 @@
        data(){
            return{
                dialogVisible:false,
                enterpriseType: null,
                id: null,
                corpInfo:{
                    enterpriseName: '',
                    enterpriseProvince: '',
                    enterpriseCity: '',
                    enterpriseArea: '',
                    licenceValidStatus: 0,
                    stockNum: 0,
                    store: 0,
                    licenceValidStatus: null,
                    stockNum: null,
                    storageCapacity: null,
                    hiddendangerStatus: null,
                    hiddendangerInfos: [],
                    hiddendangerSum: 0,
                    majorHiddendangerNum: 0,
                    completedRectifyHiddendangerSum: 0,
                    completedRectifyMajorHiddendangerNum: 0,
                    hiddendangerSum: null,
                    majorHiddendangerNum: null,
                    completedRectifyHiddendangerSum: null,
                    completedRectifyMajorHiddendangerNum: null,
                    selfcheckReportUserName: '',
                    selfcheckReportUserMobile: '',
                    reportModifyTime: ''
@@ -118,8 +121,8 @@
                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.dialogVisible = false
                    t.$message({
                        type:'warning',
                        message:res.data.message
@@ -129,6 +132,26 @@
            confirmBack(){
                this.dialogVisible = false
            },
            resetForm(){
                this.corpInfo={
                    enterpriseName: '',
                    enterpriseProvince: '',
                    enterpriseCity: '',
                    enterpriseArea: '',
                    licenceValidStatus: null,
                    stockNum: null,
                    storageCapacity: null,
                    hiddendangerStatus: null,
                    hiddendangerInfos: [],
                    hiddendangerSum: null,
                    majorHiddendangerNum: null,
                    completedRectifyHiddendangerSum: null,
                    completedRectifyMajorHiddendangerNum: null,
                    selfcheckReportUserName: '',
                    selfcheckReportUserMobile: '',
                    reportModifyTime: ''
                }
            }
        },
    }
@@ -228,6 +251,8 @@
                        line-height: 1.5;
                        text-align: left;
                        padding: 10px;
                        &::-webkit-scrollbar { width: 0; height: 0; color: transparent }
                        &::scrollbar { width: 0; height: 0; color: transparent }
                    }
                }
            }
src/views/selfCheck/components/repair.vue
@@ -3,7 +3,7 @@
        :visible.sync="dialogVisible"
        append-to-body
        :close-on-click-modal="false"
        width="60%"
        width="80%"
        center
    >
        <div class="table_cont">
@@ -27,19 +27,19 @@
                <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.rectifyStatus ==0?'未整改':'已整改' }}</span>
                        <span>{{ scope.row.rectifyStatus ==1?'已整改':'未整改' }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="完成整改时间" prop="completeRectifyTime    " align="center"></el-table-column>
                <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.hiddendangerLevel==1 ? '一般隐患' : '重大隐患' }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
                <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
                    <template slot-scope="scope">
                        <el-button v-if="scope.row.rectifyStatus==0" type="text" @click="toFix(scope.row)">整改填报</el-button>
                        <el-button v-else type="text">--</el-button>
                        <span v-if="scope.row.rectifyStatus==1">已整改</span>
                        <el-button v-else type="text" @click="toFix(scope.row)">整改填报</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -59,7 +59,7 @@
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="dialogVisible = false">取消</el-button>
          <el-button type="primary" @click="confirm()">提交</el-button>
          <el-button type="primary" @click="confirm()">确认</el-button>
        </span>
        <el-dialog
            :visible.sync="dialogFix"
@@ -68,32 +68,34 @@
            :close-on-click-modal="false"
            width="40%"
            center
            @close="resetFix()"
        >
            <el-form ref="fixformRef" :model="fixForm" label-width="140px">
            <el-form ref="fixForm" :model="fixForm" :rules="fixRule" label-width="160px">
                <el-form-item label="当前隐患:">
                    <el-input type="textarea" v-model="fixForm.info"></el-input>
                    <el-input type="textarea" readonly v-model="fixForm.info"></el-input>
                </el-form-item>
                <el-form-item label="当前完成整改日期:">
                <el-form-item label="当前完成整改日期:" prop="completeRectifyTime">
                    <el-date-picker
                        v-model="fixForm.completeRectifyTime"
                        type="date"
                        type="datetime"
                        value-format="yyyy-MM-dd HH:mm:ss"
                        placeholder="请选择整改日期">
                    </el-date-picker>
                </el-form-item>
                <el-form-item label="整改资金:">
                    <el-input v-model="fixForm.rectifyPrice"></el-input>
                <el-form-item label="整改资金:" prop="rectifyPrice">
                    <el-input v-model="fixForm.rectifyPrice" type="number" placeholder="请输入整改资金金额"></el-input>
                </el-form-item>
                <el-form-item label="整改措施:">
                    <el-input type="textarea" autosize v-model="fixForm.rectifyMeasure"></el-input>
                <el-form-item label="整改措施:" prop="rectifyMeasure">
                    <el-input type="textarea" autosize v-model="fixForm.rectifyMeasure" placeholder="请输入整改措施"></el-input>
                </el-form-item>
                <el-form-item label="负责人:">
                    <el-input v-model="fixForm.chargePerson"></el-input>
                <el-form-item label="负责人:" prop="chargePerson">
                    <el-input v-model="fixForm.chargePerson" placeholder="请输入整改负责人"></el-input>
                </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
              <el-button @click="dialogFix = false">取消</el-button>
              <el-button type="primary" @click="confirmFix()">提交</el-button>
              <el-button type="primary" @click="confirmFix('fixForm')">提交</el-button>
            </span>
        </el-dialog>
    </el-dialog>
@@ -113,7 +115,6 @@
                dialogFix: false,
                recordTotal: 0,
                pageSize: 10,
                pageTotal: 0,
                currentPage: 1,
                tableKey: 0,
                dialogVisible:false,
@@ -123,14 +124,20 @@
                    enterpriseSubmitId: null,
                    info: '',
                    completeRectifyTime: '',
                    rectifyPrice: 0,
                    rectifyPrice: null,
                    rectifyMeasure: '',
                    chargePerson: ''
                },
                fixRule:{
                    completeRectifyTime: [{ required: true, message: '请选择完成整改日期', trigger: 'blur' }],
                    rectifyPrice: [{ required: true, message: '请输入整改资金', trigger: 'blur' }],
                    rectifyMeasure: [{ required: true, message: '请输入整改措施', trigger: 'blur' }],
                    chargePerson: [{ required: true, message: '请输入负责人', trigger: 'blur' }]
                }
            }
        },
        created() {
            this.getSelfRectifyInfo()
            // this.getSelfRectifyInfo()
        },
        watch: {
        },
@@ -148,7 +155,7 @@
            async getSelfRectifyInfo(){
                const t = this
                t.listLoading = true
                let res = await getSelfRectifyInfo(t.id)
                let res = await getSelfRectifyInfo({id: t.id})
                if(res.data.code === "200"){
                    t.checkList = res.data.result.hiddendangerBaseInfos
                }else{
@@ -162,6 +169,7 @@
            confirm(){
                this.dialogVisible = false
                this.$parent.getUncheckList()
            },
            toFix(row){
@@ -171,25 +179,42 @@
                t.dialogFix = true
            },
            async confirmFix(){
            async confirmFix(formName){
                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.$refs[formName].validate(async (valid) => {
                    if(valid){
                        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: '提交成功'
                            })
                        }else{
                            t.$message({
                                type:'warning',
                                message:res.data.message
                            })
                        }
                        t.dialogFix = false
                        t.getSelfRectifyInfo()
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                })
            },
            resetFix(){
                this.fixForm = {
                    id: null,
                    enterpriseSubmitId: null,
                    info: '',
                    completeRectifyTime: '',
                    rectifyPrice: null,
                    rectifyMeasure: '',
                    chargePerson: ''
                }
                t.listLoading = false
                t.dialogFix = false
            }
        },
    }
src/views/selfCheck/components/selfReport.vue
@@ -5,6 +5,7 @@
        :close-on-click-modal="false"
        width="60%"
        center
        @close="reset()"
    >
        <div class="company-info">
            <div>企业基本信息</div>
@@ -17,58 +18,61 @@
            <div><span>库存:</span><span>{{stockNum}}</span></div>
            <div><span>库容:</span>
                <span>
                    <el-input placeholder="请输入库容量" v-model="checkForm.storageCapacity"></el-input>
                    <el-input placeholder="请输入库容量" type="number" v-model="checkForm.storageCapacity"></el-input>
                </span>
            </div>
        </div>
        <el-divider/>
        <div class="form-info">
            <div>自查自改填报</div>
            <div>
                <span>自查是否有隐患:</span>
        </div>
        <el-form :model="checkForm" :rules="rules" ref="checkForm" label-width="150px" class="demo-ruleForm">
            <el-form-item label="自查是否有隐患:" prop="hiddendangerStatus">
                <el-radio-group v-model="checkForm.hiddendangerStatus">
                    <el-radio :label="1">是</el-radio>
                    <el-radio :label="0">否</el-radio>
                </el-radio-group>
            </div>
        </div>
        <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.submitHiddendangers">
                    <td class="num">{{index + 1}}</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.hiddendangerLevel">
                            <el-radio :label="1">一般隐患</el-radio>
                            <el-radio :label="2">重大隐患</el-radio>
                        </el-radio-group>
                    </td>
                    <td class="edit">
                        <el-button type="text" @click="deleteItem(index)">删除</el-button>
                    </td>
                </tr>
            </table>
            <div class="addBtn">
                <el-button type="primary" plain icon="el-icon-plus" @click="addItem()">新增隐患问题</el-button>
            </div>
            </el-form-item>
        </div>
        <div style="display: flex;align-items: center;margin-top: 20px">
            <span>填报人:</span>
            <span style="margin-right: 40px">
            <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.submitHiddendangers">
                        <td class="num">{{index + 1}}</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="选择检查时间" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker></td>
                        <td class="deadline"><el-date-picker v-model="item.rectifyDeadlineTime" type="datetime" placeholder="选择整改期限" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker></td>
                        <td class="level">
                            <el-radio-group v-model="item.hiddendangerLevel">
                                <el-radio :label="1">一般隐患</el-radio>
                                <el-radio :label="2">重大隐患</el-radio>
                            </el-radio-group>
                        </td>
                        <td class="edit">
                            <el-button type="text" @click="deleteItem(index)">删除</el-button>
                        </td>
                    </tr>
                </table>
                <div class="addBtn">
                    <el-button type="primary" plain icon="el-icon-plus" @click="addItem()">新增隐患问题</el-button>
                </div>
            </div>
            <el-form-item label="填报人:" prop="selfcheckReportUserName">
                <el-input v-model="checkForm.selfcheckReportUserName"></el-input>
            </span>
            <span>电话号码:</span>
            <span>
            </el-form-item>
            <el-form-item label="电话号码:" prop="selfcheckReportUserMobile">
                <el-input v-model="checkForm.selfcheckReportUserMobile"></el-input>
            </span>
        </div>
            </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 type="primary" @click="submitForm('checkForm')">提交</el-button>
        </span>
    </el-dialog>
</template>
@@ -87,23 +91,33 @@
                licenceValidDeadline: '',
                stockNum: 0,
                checkForm:{
                    storageCapacity: 0,
                    hiddendangerStatus: 0,
                    storageCapacity: null,
                    hiddendangerStatus: null,
                    submitHiddendangers: [
                        {
                            id: null,
                            hiddendangerRemark: '',
                            checkTime: '',
                            rectifyDeadlineTime: '',
                            hiddendangerLevel: 1
                            hiddendangerLevel: null
                        }
                    ],
                    selfcheckReportUserName: '',
                    selfcheckReportUserMobile: ''
                },
                rules: {
                    hiddendangerStatus: [
                        { required: true, message: '请选择是否查出隐患', trigger: 'blur' }
                    ],
                    selfcheckReportUserName: [{ required: true, message: '请输入填报人', trigger: 'blur' }],
                    selfcheckReportUserMobile: [{ required: true, message: '请输入电话号码', trigger: 'blur' }]
                }
            }
        },
        watch: {
        },
        created() {
            console.log(this.id)
        },
        methods:{
            addItem(){
@@ -111,20 +125,27 @@
                    hiddendangerRemark: '',
                    checkTime: '',
                    rectifyDeadlineTime: '',
                    hiddendangerLevel: 1
                    hiddendangerLevel: null
                }
                this.checkForm.submitHiddendangers.push(newItem)
            },
            deleteItem(i){
                console.log(i)
                this.checkForm.submitHiddendangers.splice(i,1)
                const t = this
                if(t.checkForm.submitHiddendangers.length == 1){
                    t.$message({
                        type:'warning',
                        message: '检查的隐患信息不可为空'
                    })
                }else{
                    t.checkForm.submitHiddendangers.splice(i,1)
                }
            },
            async getUncheckList(){
            async getReportInfo(){
                const t = this
                let res = await getSelfBaseInfo(t.id)
                let res = await getSelfBaseInfo({id:t.id})
                if(res.data.code === "200"){
                    t.recordTotal = res.data.result.enterpriseName
                    t.enterpriseName = res.data.result.enterpriseName
                    t.licenceValidStatus = res.data.result.licenceValidStatus
                    t.licenceValidDeadline = res.data.result.licenceValidDeadline
                    t.stockNum = res.data.result.stockNum
@@ -136,32 +157,69 @@
                }
            },
            async confirmSend(){
            submitForm(formName){
                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
                t.$refs[formName].validate(async (valid) => {
                    if(t.checkForm.hiddendangerStatus == 0){
                        t.checkForm.submitHiddendangers = []
                    }
                    if(valid){
                        if(t.checkForm.hiddendangerStatus == 1){
                            if(t.checkForm.submitHiddendangers.find((e) => e.hiddendangerRemark == '') || t.checkForm.submitHiddendangers.find((e) => e.checkTime == '') || t.checkForm.submitHiddendangers.find((e) => e.rectifyDeadlineTime == '') || t.checkForm.submitHiddendangers.find((e) => e.hiddendangerLevel == null)){
                                t.$message({
                                    type:'warning',
                                    message: '请完善检查的隐患信息'
                                })
                                return
                            }
                        }
                        if(t.checkForm.storageCapacity == null){
                            t.$message({
                                type:'warning',
                                message: '请输入库容信息'
                            })
                            return
                        }
                        t.checkForm.id = t.id
                        let res = await saveSelfCheckReport(t.checkForm)
                        if(res.data.code === "200"){
                            t.$message({
                                type:'success',
                                message: '提交成功!'
                            })
                        }else{
                            t.$message({
                                type:'warning',
                                message:res.data.message
                            })
                        }
                        t.dialogVisible = false
                        t.$parent.getUncheckList();
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                })
            },
            reset(){
                this.checkForm = {
                    storageCapacity: null,
                    hiddendangerStatus: null,
                    submitHiddendangers: [
                        {
                            id: null,
                            hiddendangerRemark: '',
                            checkTime: '',
                            rectifyDeadlineTime: '',
                            hiddendangerLevel: null
                        }
                    ],
                    selfcheckReportUserName: '',
                    selfcheckReportUserMobile: ''
                }
                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
            }
        },
        }
    }
</script>
@@ -199,21 +257,12 @@
        }
    }
    .form-info{
        display: flex;
        align-items: center;
        &>div{
            margin-bottom: 10px;
            margin-right: 40px;
            display: flex;
            align-items: center;
        }
        &>div:first-of-type{
            font-size: 18px;
            font-weight: bolder;
            padding-left: 0;
        }
        font-size: 18px;
        font-weight: bolder;
        padding-left: 0;
    }
    .risk-list{
        margin-bottom: 20px;
        .risk-table{
            width: 100%;
            border-collapse: collapse;
src/views/selfCheck/components/supervisionDetails.vue
文件名从 src/views/supervision/components/supervisionDetails.vue 修改
@@ -5,6 +5,7 @@
        :close-on-click-modal="false"
        width="75%"
        center
        @close="resetForm()"
    >
         <div slot="title" class="dialog-title">
            烟花爆竹批发企业自查情况信息报送表
@@ -40,7 +41,7 @@
                    <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">
                    <td class="w-20 overText">
                        <span v-if="item.rectifyStatus == 0">
                            未整改
                            <el-button type="text" @click="toRectify(item)">去整改</el-button>
@@ -78,32 +79,34 @@
            :close-on-click-modal="false"
            width="40%"
            center
            @close="resetEdit()"
        >
            <el-form ref="reportFormRef" :model="reportForm" label-width="140px">
            <el-form ref="reportForm" :model="reportForm" :rules="reportRule" label-width="140px">
                <el-form-item label="当前隐患:">
                    <el-input type="textarea" v-model="reportForm.info"></el-input>
                    <el-input type="textarea" readonly v-model="reportForm.info"></el-input>
                </el-form-item>
                <el-form-item label="当前完成整改日期:">
                <el-form-item label="当前完成整改日期:" prop="completeRectifyTime">
                    <el-date-picker
                        v-model="reportForm.completeRectifyTime"
                        type="date"
                        type="datetime"
                        value-format="yyyy-MM-dd HH:mm:ss"
                        placeholder="请选择整改日期">
                    </el-date-picker>
                </el-form-item>
                <el-form-item label="整改资金:">
                <el-form-item label="整改资金:" prop="rectifyPrice">
                    <el-input v-model="reportForm.rectifyPrice"></el-input>
                </el-form-item>
                <el-form-item label="整改措施:">
                <el-form-item label="整改措施:" prop="rectifyMeasure">
                    <el-input type="textarea" autosize v-model="reportForm.rectifyMeasure"></el-input>
                </el-form-item>
                <el-form-item label="负责人:">
                <el-form-item label="负责人:" prop="chargePerson">
                    <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>
              <el-button type="primary" @click="confirmReport('reportForm')">提交</el-button>
            </span>
        </el-dialog>
    </el-dialog>
@@ -126,27 +129,33 @@
                    enterpriseProvince: '',
                    enterpriseCity: '',
                    enterpriseArea: '',
                    checkUnitType: 1,
                    checkUnitType: null,
                    checkName: '',
                    checkTime: '',
                    hiddendangerStatus: 0,
                    hiddendangerStatus: null,
                    hiddendangerInfos: [],
                    hiddendangerSum: 0,
                    majorHiddendangerNum: 0
                    hiddendangerSum: null,
                    majorHiddendangerNum: null
                },
                reportForm:{
                    id: null,
                    info: '',
                    completeRectifyTime: '',
                    rectifyPrice: 0,
                    rectifyPrice: null,
                    rectifyMeasure: '',
                    chargePerson: ''
                },
                reportRule:{
                    completeRectifyTime: [{ required: true, message: '请选择完成整改日期', trigger: 'blur' }],
                    rectifyPrice: [{ required: true, message: '请输入整改资金', trigger: 'blur' }],
                    rectifyMeasure: [{ required: true, message: '请输入整改措施', trigger: 'blur' }],
                    chargePerson: [{ required: true, message: '请输入负责人', trigger: 'blur' }]
                }
            }
        },
        created() {
            const t = this
            t.getEnterpriseInfo()
            // t.getEnterpriseInfo()
        },
        watch: {
        },
@@ -158,6 +167,7 @@
                if(res.data.code === "200"){
                    t.corpInfo = res.data.result
                }else{
                    t.dialogVisible = false
                    t.$message({
                        type:'warning',
                        message:res.data.message
@@ -171,22 +181,56 @@
                t.dialogReport = true
            },
            async confirmReport(){
            async confirmReport(formName){
                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.$refs[formName].validate(async (valid) => {
                    if(valid){
                        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
                        t.getEnterpriseInfo()
                        t.$parent.getSpotCheckList()
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                })
            },
            resetForm(){
              this.corpInfo ={
                  enterpriseName: '',
                  enterpriseProvince: '',
                  enterpriseCity: '',
                  enterpriseArea: '',
                  checkUnitType: null,
                  checkName: '',
                  checkTime: '',
                  hiddendangerStatus: null,
                  hiddendangerInfos: [],
                  hiddendangerSum: null,
                  majorHiddendangerNum: null
              }
            },
            resetEdit(){
                this.reportForm = {
                    id: null,
                    info: '',
                    completeRectifyTime: '',
                    rectifyPrice: null,
                    rectifyMeasure: '',
                    chargePerson: ''
                }
                t.dialogReport = false
            },
            confirmBack(){
                this.dialogVisible = false
@@ -276,6 +320,9 @@
                    &.w-20{
                        width: 20%;
                    }
                    &.w-30{
                        width: 30%;
                    }
                    &.w-50{
                        width: 50%;
                    }
@@ -285,14 +332,13 @@
                    &.w-75{
                        width: 75%;
                    }
                    &.w-33{
                        width: 33.33%;
                    }
                    &.overText{
                        overflow: auto;
                        line-height: 1.5;
                        text-align: left;
                        padding: 10px;
                        &::-webkit-scrollbar { width: 0; height: 0; color: transparent }
                        &::scrollbar { width: 0; height: 0; color: transparent }
                    }
                }
            }
src/views/selfCheck/index.vue
@@ -17,19 +17,21 @@
                <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.selfcheckStatus == 0 ? '未自查' : '已自查' }}</span>
                        <span>{{ scope.row.selfcheckStatus == 1 ? '已自查' : '未自查' }}</span>
                    </template>
                </el-table-column>
                <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.hiddendangerStatus == 0 ? '否' : '是' }}</span>
                        <span>{{ scope.row.hiddendangerStatus == null ? '' : (scope.row.hiddendangerStatus == 1 ?'是':'否') }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="整改情况" prop="rectifyStatus" align="center" class-name="small-padding fixed-width">
                    <template slot-scope="scope">
                        <el-button v-if="scope.row.rectifyStatus == 1" type="text" @click="toRepair(scope.row)">去整改</el-button>
                        <span v-else>已完成</span>
                        <span v-if="scope.row.rectifyStatus==0">无需整改</span>
                        <el-button v-else-if="scope.row.rectifyStatus==1" type="text" @click="toRepair(scope.row)">去整改</el-button>
                        <span v-else-if="scope.row.rectifyStatus==2">已整改</span>
                        <span v-else>--</span>
                    </template>
                </el-table-column>
                <el-table-column label="详情" align="center" class-name="small-padding fixed-width">
@@ -65,7 +67,7 @@
    import { getToken } from '@/utils/auth'
    import selfReport from "./components/selfReport"
    import repair from "./components/repair"
    import checkDetails from "./components/repair"
    import checkDetails from "./components/checkDetails"
    import { getUnDoneCheckTask } from '@/api/selfCheck'
    export default {
@@ -114,18 +116,21 @@
                const t = this
                t.$refs.report.dialogVisible = true
                t.$refs.report.id = row.id
                t.$refs.report.getReportInfo()
            },
            toDetail(row){
                const t = this
                t.$refs.details.dialogVisible = true
                t.$refs.details.id = row.id
                t.$refs.details.getEnterpriseInfo()
            },
            toRepair(row){
                const t = this
                t.$refs.repair.dialogVisible = true
                t.$refs.repair.id = row.id
                t.$refs.repair.getSelfRectifyInfo()
            },
            async getUncheckList(){
src/views/selfCheck/supervision.vue
文件名从 src/views/supervision/index.vue 修改
@@ -105,6 +105,7 @@
                t.$refs.details.dialogVisible = true
                t.$refs.details.id = row.id
                t.$refs.details.unitType = row.checkUnitType
                t.$refs.details.getEnterpriseInfo()
            },
            async getSpotCheckList(){
src/views/specialCheck/components/areaEnterprises.vue
对比新文件
@@ -0,0 +1,99 @@
<template>
    <el-dialog
        :visible.sync="dialogVisible"
        append-to-body
        :close-on-click-modal="false"
        width="80%"
        center
    >
        <div class="table_cont">
            <el-table
                :key="tableKey"
                :data="checkList"
                border
                fit
                highlight-current-row
                style="width: 100%;"
            >
                <el-table-column type="index" label="序号" align="center" width="80"/>
                <el-table-column label="检查单位" prop="checkUnitName" align="center"></el-table-column>
                <el-table-column label="检查层级" prop="checkUnitType" align="center">
                    <template slot-scope="scope">
                        <span>{{ scope.row.checkUnitType ==1?'省级':(scope.row.checkUnitType ==2?'市级':(scope.row.checkUnitType ==3?'区县级':'自查')) }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="隐患总数" prop="hiddendangerSum" align="center"></el-table-column>
                <el-table-column label="重大隐患总数" prop="majorHiddendangerNum" align="center"></el-table-column>
                <el-table-column label="整改数量" prop="completedRectifyHiddendangerSum" width="130" align="center" sortable></el-table-column>
                <el-table-column label="重大隐患整改数量" prop="completedRectifyMajorHiddendangerNum" align="center"></el-table-column>
                <el-table-column label="是否外埠检查" align="center">否</el-table-column>
                <el-table-column label="检查时间" prop="checkTime" align="center"></el-table-column>
                <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
                    <template slot-scope="scope">
                        <el-button type="text" @click="toCheck(scope.row.id)">查看</el-button>
                    </template>
                </el-table-column>
            </el-table>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button type="primary" @click="dialogVisible = false">确认</el-button>
        </span>
        <check-details ref="report"></check-details>
    </el-dialog>
</template>
<script>
    import {computePageCount} from "@/utils";
    import { getSpotCheckRecord } from "@/api/specialCheck";
    import checkDetails from "../../selfCheck/components/checkDetails"
    export default {
        name: "areaEnterprises",
        components: {
            checkDetails
        },
        data(){
            return{
                tableKey: 0,
                enterpriseType: null,
                dialogVisible:false,
                checkList:[]
            }
        },
        created() {
        },
        watch: {
        },
        methods:{
            toCheck(id){
                const t = this
                t.$refs.report.id = id
                t.$refs.report.enterpriseType = t.enterpriseType
                t.$refs.report.getEnterpriseInfo()
                t.$refs.report.dialogVisible = true
            }
        },
    }
</script>
<style lang="scss" scoped>
    .input-with-select .el-select {
        width: 120px;
    }
    .el-date-editor.el-input{
        width: 100%;
    }
    .el-divider__text{
        background-color: #fafafa;
        color: #034EA2;
    }
    .table_cont{
        width: 100%;
    }
</style>
src/views/specialCheck/components/areaForm.vue
对比新文件
@@ -0,0 +1,150 @@
<template>
    <div class="table">
        <div class="table_content">
<!--            <div></div>-->
            <el-table
                v-loading="listLoading"
                :key="tableKey"
                :data="checkData"
                border
                fit
                highlight-current-row
                style="width: 100%;"
            >
                <el-table-column type="index" label="序号" align="center" width="80"/>
                <el-table-column label="单位名称" prop="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="storageCapacity" align="center"></el-table-column>
                <el-table-column label="是否查出隐患" prop="hiddendangerStatus" align="center">
                    <template slot-scope="scope">
                        <span>{{ scope.row.hiddendangerStatus == 1 ? '是' : '否' }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="是否自查" prop="selfcheckStatus" align="center">
                    <template slot-scope="scope">
                        <span>{{ scope.row.selfcheckStatus == 1 ? '已自查' : '未自查' }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="被检查次数" prop="checkedTimes" align="center"></el-table-column>
                <el-table-column label="隐患数量" prop="hiddendangerSum" align="center"></el-table-column>
                <el-table-column label="整改数量" prop="rectifyHiddendangerSum" align="center"></el-table-column>
                <el-table-column label="重大整改数量" prop="rectifyMajorHiddendangerNum" align="center"></el-table-column>
                <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width">
                    <template slot-scope="scope">
                        <el-button type="text" @click="toEnterprises(scope.row.selfAndcheckInfos)">查看</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <el-pagination
                v-show="recordTotal>0"
                :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>
        <area-enterprises ref="enterPrises"></area-enterprises>
    </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, getEnterpriseCompleteInfoList, getDataStatistics, getSpecialCheckTask } from "@/api/specialCheck"
import AreaEnterprises from "./areaEnterprises";
export default {
name: "areaForm",
    components: {AreaEnterprises},
    data(){
        return{
            recordTotal: 0,
            pageSize: 10,
            currentPage: 1,
            unitType: null,
            taskId: null,
            enterpriseType: null,
            enterpriseCity: '',
            enterpriseArea: '',
            listLoading: false,
            tableKey: 0,
            checkData: []
        }
    },
    created() {
        const t = this
        t.getCheckUnitType()
        if(t.taskId){t.getAreaStatistics()}
    },
    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 getAreaStatistics(){
            const t = this
            const data = {id: t.taskId,enterpriseType: t.enterpriseType,enterpriseCity: t.enterpriseCity,enterpriseArea: t.enterpriseArea,pageIndex: t.currentPage,pageSize: t.pageSize}
            const res = await getDataStatistics(data)
            if(res.data.code === "200"){
                t.checkData = res.data.result.records
                t.recordTotal = res.data.result.total
            }else{
                t.$message({
                    type:'warning',
                    message:res.data.message
                })
            }
        },
        handleSizeChange: function (val) {
            this.pageSize = val
            this.currentPage = 1
            this.getAreaStatistics()
        },
        handleCurrentChange: function (val) {
            this.currentPage = val
            this.getAreaStatistics()
        },
        toEnterprises(infos){
            this.$refs.enterPrises.checkList = infos
            this.$refs.enterPrises.enterpriseType = this.enterpriseType
            this.$refs.enterPrises.dialogVisible = true
        }
    }
}
</script>
<style lang="scss" scoped>
    .table{
        width: 100%;
        height: 100%;
    }
</style>
src/views/specialCheck/components/checkEnterprises.vue
对比新文件
@@ -0,0 +1,143 @@
<template>
    <el-dialog
        :visible.sync="dialogVisible"
        append-to-body
        :close-on-click-modal="false"
        width="80%"
        center
    >
        <div class="table_cont">
            <el-table
                v-loading="listLoading"
                :key="tableKey"
                :data="checkList"
                border
                fit
                highlight-current-row
                style="width: 100%;"
            >
                <el-table-column type="index" label="序号" align="center" width="80"/>
                <el-table-column label="被检查企业" prop="enterpriseName" align="center" width="180"></el-table-column>
                <el-table-column label="检查单位" prop="checkName" align="center"></el-table-column>
                <el-table-column label="隐患总数" prop="hiddendangerSum" align="center"></el-table-column>
                <el-table-column label="重大隐患总数" prop="majorHiddendangerNum" align="center"></el-table-column>
                <el-table-column label="整改数量" prop="completedRectifyHiddendangerSum" width="130" align="center" sortable></el-table-column>
                <el-table-column label="重大隐患整改数量" prop="completedRectifyMajorHiddendangerNum" align="center"></el-table-column>
                <el-table-column label="是否外埠检查" align="center">否</el-table-column>
                <el-table-column label="检查时间" prop="checkTime" align="center"></el-table-column>
                <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
                    <template slot-scope="scope">
                        <el-button type="text" @click="toCheck(scope.row.id)">查看</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <el-pagination
                v-show="recordTotal>0"
                :current-page="pageIndex"
                :page-sizes="[10, 20, 30, 50]"
                :page-size="pageSize"
                :total="recordTotal"
                layout="total, sizes, prev, pager, next, jumper"
                background
                style="float:right;margin:3px"
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
            />
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button type="primary" @click="dialogVisible = false">确认</el-button>
        </span>
        <check-details ref="report"></check-details>
    </el-dialog>
</template>
<script>
    import {computePageCount} from "@/utils";
    import { getSpotCheckRecord } from "@/api/specialCheck";
    import checkDetails from "../../selfCheck/components/checkDetails"
    export default {
        name: "checkEnterprises",
        components: {
            checkDetails
        },
        data(){
            return{
                taskId: null,
                enterpriseType: null,
                enterpriseCity: '',
                enterpriseArea: '',
                listLoading: false,
                recordTotal: 0,
                pageSize: 10,
                pageIndex: 1,
                tableKey: 0,
                dialogVisible:false,
                checkList:[]
            }
        },
        created() {
            // this.getEnterprises()
        },
        watch: {
        },
        methods:{
            handleSizeChange: function (val) {
                this.pageSize = val
                this.pageIndex = 1
                this.getEnterprises()
            },
            handleCurrentChange: function (val) {
                this.pageIndex = val
                this.getEnterprises()
            },
            async getEnterprises(){
                const t = this
                t.listLoading = true
                const data = {taskId: t.taskId,enterpriseType:t.enterpriseType,enterpriseCity:t.enterpriseCity,enterpriseArea:t.enterpriseArea,pageIndex:t.pageIndex,pageSize:t.pageSize}
                let res = await getSpotCheckRecord(data)
                if(res.data.code === "200"){
                    t.checkList = res.data.result.records
                    t.recordTotal = res.data.result.total
                }else{
                    t.$message({
                        type:'warning',
                        message:res.data.message
                    })
                }
                t.listLoading = false
            },
            toCheck(id){
                const t = this
                t.$refs.report.id = id
                t.$refs.report.enterpriseType = t.enterpriseType
                t.$refs.report.getEnterpriseInfo()
                t.$refs.report.dialogVisible = true
            }
        },
    }
</script>
<style lang="scss" scoped>
    .input-with-select .el-select {
        width: 120px;
    }
    .el-date-editor.el-input{
        width: 100%;
    }
    .el-divider__text{
        background-color: #fafafa;
        color: #034EA2;
    }
    .table_cont{
        width: 100%;
    }
</style>
src/views/specialCheck/components/feedbackDetails.vue
@@ -5,10 +5,11 @@
        :close-on-click-modal="false"
        width="75%"
        center
        @close="resetForm()"
    >
         <div slot="title" class="dialog-title">
            <span></span>
            <div class="">烟花爆竹批发企业检查情况反馈表</div>
            <div class="">烟花爆竹{{enterpriseType==1?'批发':'零售'}}企业检查情况反馈表</div>
            <span>
                <el-button type="primary" @click="openSelfCheck()">查看企业自查表</el-button>
            </span>
@@ -473,6 +474,7 @@
            return{
                id: null,
                unitType: null,
                enterpriseType: null,
                dialogVisible:false,
                editDialog: false,
                activeTab: '1',
@@ -521,6 +523,10 @@
                }
            }
        },
        created() {
            const t = this
            console.log(t.unitType,t.checkData,'data')
        },
        watch: {
        },
        methods:{
@@ -530,6 +536,7 @@
            openSelfCheck(){
                const t = this
                t.$refs.report.id = t.id
                t.$refs.report.enterpriseType = t.enterpriseType
                t.$refs.report.getEnterpriseInfo()
                t.$refs.report.dialogVisible = true
            },
@@ -759,7 +766,25 @@
                        console.log('error submit!!');
                        return false;
                    }
                });
                })
            },
            resetForm(){
                this.feedbackForm = {
                    id: null,
                    checkTime: '',
                    hiddendangerStatus: null,
                    hiddendangerInfos: [
                        {
                            spotCheckHiddendanger: '',
                            hiddendangerLevel: null
                        }
                    ],
                    amerceStatus: null,
                    amerceMoney: null,
                    stopProductionStatus: null,
                    revokeLicenseStatus: null,
                    detainLicenseStatus: null
                }
            },
            resetEdit(){
                this.editForm = {
src/views/specialCheck/components/reportDetails.vue
文件已删除
src/views/specialCheck/components/sendWork.vue
@@ -6,8 +6,9 @@
        :close-on-click-modal="false"
        width="60%"
        center
        @close="resetForm('workForm')"
    >
        <el-form :model="workForm" :rules="rules" ref="ruleForm" label-width="80px">
        <el-form :model="workForm" :rules="rules" ref="workForm" 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>
@@ -162,8 +163,8 @@
            </el-form-item>
        </el-form>
        <span slot="footer" class="dialog-footer">
          <el-button @click="resetForm('ruleForm')">重置</el-button>
          <el-button type="primary" @click="confirmSend('ruleForm')">确认下发</el-button>
          <el-button @click="resetForm('workForm')">重置</el-button>
          <el-button type="primary" @click="confirmSend('workForm')">确认下发</el-button>
        </span>
    </el-dialog>
</template>
@@ -217,22 +218,34 @@
        methods:{
            confirmSend(formName){
                const t = this
                t.$refs[formName].validate(async (valid) => {
                console.log(t.workForm,'66666666666')
                t.$refs[formName].validate((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)
                        this.$confirm('此操作将把任务下发给所有单位, 是否继续?', '提示', {
                            confirmButtonText: '确定',
                            cancelButtonText: '取消',
                            type: 'warning'
                        }).then(async () => {
                            let res = await sendCheckTask(t.workForm)
                            if(res.data.code === "200"){
                                t.$message({
                                    type:'success',
                                    message: '任务下发成功'
                                })
                            }else{
                                t.$message({
                                    type:'warning',
                                    message:res.data.message
                                })
                            }
                            t.dialogVisible = false
                            t.$parent.getSpecialCheckTask();
                        }).catch(() => {
                            this.$message({
                                type: 'info',
                                message: '已取消下发'
                            });
                        });
                    } else {
                        return false;
                    }
src/views/specialCheck/components/sumSheet.vue
@@ -1,168 +1,194 @@
<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 style="display: flex;justify-content: center">
            <el-radio-group v-model="activeTab" @input="switchSheet()">
                <el-radio-button :label="1">批发</el-radio-button>
                <el-radio-button :label="2">零售</el-radio-button>
            </el-radio-group>
            </div>
            <div style="display: flex;justify-content: space-between;align-items: center;margin: 10px 0 20px;height: 40px">
                <div style="width: 140px"></div>
                <h2 style="text-align: center;margin: 0">{{taskName}}{{ activeTab==1?'批发':'零售' }}环节信息报送汇总表({{sheetStatus==1?'省级层面':(sheetStatus==2?'市级层面':'区县级')}})</h2>
                <el-button icon="el-icon-download" v-if="sheetStatus==1||sheetStatus==2" style="width: 140px" size="medium" type="primary" @click="exportSheet()" id="export">导出汇总表</el-button>
                <div v-else style="width: 140px"></div>
            </div>
            <div class="tabpanel">
                <table v-show="sheetStatus==1||sheetStatus==2" class="data-table" id="tableExcel">
                    <tr>
                        <th rowspan="3">序号</th>
                        <th rowspan="3">{{sheetStatus==1?'地市':'区县'}}</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.validEnterpriseNum==0?'--':(sum.selfCheckEnterpriseNum / sum.validEnterpriseNum).toFixed(2) * 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.selfhiddendangerSum==0?'--':(sum.selfcompletedRectifyHiddendangerSum / sum.selfhiddendangerSum).toFixed(2) * 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).toFixed(2) * 100 + '%'}}
                        </td>
                        <td>{{sum.spotCheckHiddendangerSum}}</td>
                        <td>{{sum.spotCheckMajorHiddendangerNum}}</td>
                        <td>{{sum.spotCheckCompletedRectifyHiddendangerSum}}</td>
                        <td>{{sum.spotCheckCompletedRectifyMajorHiddendangerNum}}</td>
                        <td>
                            {{sum.spotCheckHiddendangerSum == 0?'--':(sum.spotCheckCompletedRectifyHiddendangerSum / sum.spotCheckHiddendangerSum).toFixed(2) * 100 + '%'}}
                        </td>
                        <td>{{sum.revokeLicenseEnterpriseSum}}</td>
                        <td>{{sum.detainLicenseSum}}</td>
                        <td>{{sum.amerceEnterpriseNum}}</td>
                        <td>{{sum.amerceMoneySum}}</td>
                    </tr>
                    <tr>
                        <td colspan="2">{{ sheetStatus==1?'省本级':'市本级' }}</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>{{sheetStatus==1?'省级':'市级'}}</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==null?'--':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="sheetStatus==1?2:1">{{ index + 1}}</td>
                        <td :rowspan="sheetStatus==1?2:1" class="point-item" @click="toDig(item.enterpriseCity,item.enterpriseArea)">
                            {{sheetStatus==1?item.enterpriseCity:item.enterpriseArea }}
                        </td>
                        <td :rowspan="sheetStatus==1?2:1">{{item.enterpriseSum}}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{item.validEnterpriseNum}}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{item.selfCheckEnterpriseNum}}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{item.selfCheckRateRequire + '%'}}</td>
                        <td :rowspan="sheetStatus==1?2:1" :class="item.selfCheckCompleteRate<item.selfCheckRateRequire?'warning':''">
                            {{item.selfCheckCompleteRate + '%'}}
                        </td>
                        <td :rowspan="sheetStatus==1?2:1">{{ item.validSelfCheckEnterpriseNum }}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{ item.stockNum }}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{ item.storageCapacity }}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{ item.hiddendangerSum }}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{ item.majorHiddendangerNum }}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{ item.completedRectifyHiddendangerSum }}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{ item.completedRectifyMajorHiddendangerNum }}</td>
                        <td :rowspan="sheetStatus==1?2:1">{{ item.hiddendangerRectifyRate==null?'--':item.hiddendangerRectifyRate + '%' }}</td>
                        <td>{{ sheetStatus==1?'设立区级':'县级' }}</td>
                        <td class="point-item" @click="checkEnterprise(item.enterpriseCity,item.enterpriseArea)">{{sheetStatus==1?item.citySpotCheckinfo.spotCheckEnterpriseNum:item.areaSpotCheckinfo.spotCheckEnterpriseNum}}</td>
                        <td>{{sheetStatus==1?item.citySpotCheckinfo.spotCheckRateRequire + '%':item.areaSpotCheckinfo.spotCheckRateRequire + '%'}}</td>
                        <td v-if="sheetStatus==1" :class="item.citySpotCheckinfo.spotCheckCompleteRate<item.citySpotCheckinfo.spotCheckRateRequire?'warning':''">
                            {{item.citySpotCheckinfo.spotCheckCompleteRate + '%'}}
                        </td>
                        <td v-else :class="item.areaSpotCheckinfo.spotCheckCompleteRate<item.areaSpotCheckinfo.spotCheckRateRequire?'warning':''">
                            {{item.areaSpotCheckinfo.spotCheckCompleteRate + '%'}}
                        </td>
                        <td>{{sheetStatus==1?item.citySpotCheckHiddendangerinfo.spotCheckHiddendangerSum:item.areaSpotCheckHiddendangerinfo.spotCheckHiddendangerSum}}</td>
                        <td>{{sheetStatus==1?item.citySpotCheckHiddendangerinfo.spotCheckMajorHiddendangerNum:item.areaSpotCheckHiddendangerinfo.spotCheckMajorHiddendangerNum}}</td>
                        <td>{{sheetStatus==1?item.citySpotCheckHiddendangerinfo.spotCheckCompletedRectifyHiddendangerSum:item.areaSpotCheckHiddendangerinfo.spotCheckCompletedRectifyHiddendangerSum}}</td>
                        <td>{{sheetStatus==1?item.citySpotCheckHiddendangerinfo.spotCheckCompletedRectifyMajorHiddendangerNum:item.areaSpotCheckHiddendangerinfo.spotCheckCompletedRectifyMajorHiddendangerNum}}</td>
                        <td>
                            {{sheetStatus==1?(item.citySpotCheckHiddendangerinfo.spotCheckHiddendangerRectifyRate==null?'--':item.citySpotCheckHiddendangerinfo.spotCheckHiddendangerRectifyRate + '%'):(item.areaSpotCheckHiddendangerinfo.spotCheckHiddendangerRectifyRate==null?'--':item.areaSpotCheckHiddendangerinfo.spotCheckHiddendangerRectifyRate + '%')}}</td>
                        <td>{{sheetStatus==1?item.citySpotCheckinfo.revokeLicenseEnterpriseSum:item.areaSpotCheckinfo.revokeLicenseEnterpriseSum}}</td>
                        <td>{{sheetStatus==1?item.citySpotCheckinfo.detainLicenseSum:item.areaSpotCheckinfo.detainLicenseSum}}</td>
                        <td>{{sheetStatus==1?item.citySpotCheckinfo.amerceEnterpriseNum:item.areaSpotCheckinfo.amerceEnterpriseNum}}</td>
                        <td>{{sheetStatus==1?item.citySpotCheckinfo.amerceMoneySum:item.areaSpotCheckinfo.amerceMoneySum}}</td>
                    </tr>
                    <tr v-if="sheetStatus==1">
                        <td>县级</td>
                        <td class="point-item" @click="checkEnterprise(item.enterpriseCity,'all')">{{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==null?'--':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>
                <area-form v-show="sheetStatus==3" ref="areaSheet"></area-form>
            </div>
        </div>
        <check-enterprises ref="enterprises"></check-enterprises>
    </div>
</template>
@@ -173,21 +199,28 @@
import {computePageCount} from "../../../utils";
import {parseError} from "../../../utils/messageDialog";
import { getCheckUnitType,getDataStatistics, getSpecialCheckTask } from "@/api/specialCheck"
import areaForm from "./areaForm"
import checkEnterprises from "./checkEnterprises"
export default {
name: "sumSheet",
    components: {},
    components: {
        areaForm,
        checkEnterprises
    },
    data(){
        return{
            taskId: null,
            taskName: '',
            unitType: null,
            sheetStatus: 1,
            recordTotal: 0,
            pageSize: 10,
            currentPage: 1,
            listLoading: false,
            activeTab: '1',
            enterpriseCity: null,
            enterpriseArea: null,
            activeTab: 1,
            enterpriseCity: '',
            enterpriseArea: '',
            sum:{
                enterpriseSum: null,
                validEnterpriseNum: null,
@@ -220,9 +253,8 @@
    },
    created() {
        const t = this
        if(t.taskId){t.getDataStatistics()}
        else{t.getCheckTask()}
        t.getCheckUnitType()
        if(t.taskId){t.getDataStatistics()}
    },
    computed: {
        ...mapGetters([
@@ -237,6 +269,7 @@
            let res = await getCheckUnitType()
            if(res.data.code === "200"){
                t.unitType = res.data.result.checkUnitType
                t.sheetStatus = res.data.result.checkUnitType
            }else{
                t.$message({
                    type:'warning',
@@ -245,25 +278,12 @@
            }
            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 data = {id: t.taskId,enterpriseType: 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
@@ -272,22 +292,33 @@
                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.stockNum = t.getSum(Array.from(t.institutionalData, ({ stockNum }) => stockNum)).toFixed(2)
                t.sum.storageCapacity = t.getSum(Array.from(t.institutionalData, ({ storageCapacity }) => storageCapacity)).toFixed(2)
                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}))
                if(t.sheetStatus == 1){
                    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.sum.spotCheckEnterpriseNum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckinfo.spotCheckEnterpriseNum}))
                    t.sum.spotCheckHiddendangerSum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckHiddendangerinfo.spotCheckHiddendangerSum}))
                    t.sum.spotCheckMajorHiddendangerNum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckHiddendangerinfo.spotCheckMajorHiddendangerNum}))
                    t.sum.spotCheckCompletedRectifyHiddendangerSum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckHiddendangerinfo.spotCheckCompletedRectifyHiddendangerSum}))
                    t.sum.spotCheckCompletedRectifyMajorHiddendangerNum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckHiddendangerinfo.spotCheckCompletedRectifyMajorHiddendangerNum}))
                    t.sum.revokeLicenseEnterpriseSum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckinfo.revokeLicenseEnterpriseSum}))
                    t.sum.detainLicenseSum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckinfo.detainLicenseSum}))
                    t.sum.amerceEnterpriseNum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckinfo.amerceEnterpriseNum}))
                    t.sum.amerceMoneySum = t.getSum(t.institutionalData.map(item=>{return item.areaSpotCheckinfo.amerceMoneySum}))
                }
            }else{
                t.$message({
                    type:'warning',
@@ -295,18 +326,73 @@
                })
            }
        },
        switchSheet(tab, event) {
        switchSheet() {
            const t = this
            t.getDataStatistics()
            console.log(t.sheetStatus,'status')
            if(t.sheetStatus == 1 || t.sheetStatus == 2){
                t.getDataStatistics()
            }else{
                t.$refs.areaSheet.enterpriseType = t.activeTab
                t.$refs.areaSheet.getAreaStatistics()
            }
        },
        checkEnterprise(city,area){
            const t = this
            t.$refs.enterprises.taskId = t.taskId
            t.$refs.enterprises.enterpriseType = t.activeTab
            t.$refs.enterprises.enterpriseArea = area
            if(t.sheetStatus == 1){
                t.$refs.enterprises.enterpriseCity = city
            }else{
                t.$refs.enterprises.enterpriseCity = null
            }
            t.$refs.enterprises.dialogVisible = true
            t.$refs.enterprises.getEnterprises()
        },
        toDig(city,area){
            const t = this
            if(t.sheetStatus==1){
                t.enterpriseCity = city
                t.getDataStatistics()
                t.sheetStatus = 2
            }else{
                t.sheetStatus = 3
                t.$refs.areaSheet.taskId = t.taskId
                t.$refs.areaSheet.enterpriseType = t.activeTab
                t.enterpriseArea = area
                t.$refs.areaSheet.enterpriseArea = area
                t.$refs.areaSheet.getAreaStatistics()
            }
        },
        tableToExcel(tableid,btnname,sheetname) {
            var uri = 'data:application/vnd.ms-excel;base64,'
                , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
                , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
                , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
            //根据ID获取table表格HTML
            var table = document.getElementById(tableid);
            var ctx = { worksheet: 'Worksheet', table: table.innerHTML };
            var alink = document.createElement("a");
            alink.href = uri + base64(format(template, ctx));
            alink.download = sheetname + ').xls';
            alink.click();
        },
        exportSheet(){
            const t = this
            const sheetName = t.taskName + (t.activeTab==1 ?'批发':'零售') + '环节信息报送汇总表(' + (t.sheetStatus==1?'省级层面':(t.sheetStatus==2?'市级层面':'区县级'))
            t.tableToExcel("tableExcel", "export",sheetName);
        }
    }
}
</script>
<style lang="scss" scoped>
::v-deep.el-tabs--border-card .el-tabs__content{
    height: calc(100vh - 200px);
    overflow: scroll !important;
.tabpanel{
    width: 100%;
    height: calc(100vh - 240px);
    overflow: auto;
}
.data-table{
    border-collapse: collapse;
@@ -349,6 +435,14 @@
                border-right: none;
            }
        }
        .point-item{
            cursor: pointer;
            &:hover{
                text-decoration: underline;
                color: #409EFF;
            }
        }
        .warning{
            color: red;
        }
src/views/specialCheck/components/wholesaleForm.vue
@@ -2,8 +2,8 @@
    <div class="table">
        <div class="filter-container">
            <div class="table-tit">
                <h2 v-show="enterpriseType == 1">2023年上半年烟花爆竹生产经营安全检查(批发)</h2>
                <h2 v-show="enterpriseType == 2">2023年上半年烟花爆竹生产经营安全检查(零售)</h2>
                <h2 v-show="enterpriseType == 1">{{taskName}}(批发)</h2>
                <h2 v-show="enterpriseType == 2">{{taskName}}(零售)</h2>
                <span>(检查一家反馈一家,没有检查出隐患问题的也要登记反馈)</span>
            </div>
            <div class="control-bar">
@@ -129,6 +129,7 @@
            currentPage: 1,
            unitType: null,
            taskId: null,
            taskName: '',
            enterpriseType: null,
            selfcheckStatus: null,
            thislevelCheckStatus: null,
@@ -156,11 +157,7 @@
    created() {
        const t = this
        t.getCheckUnitType()
        if(t.taskId && t.enterpriseType){
            t.getEnterpriseCompleteInfoList()
        }else{
            t.getCheckTask()
        }
        t.getCheckTask()
    },
    computed: {
        ...mapGetters([
@@ -188,6 +185,7 @@
            const res = await getSpecialCheckTask()
            if(res.data.code === "200"){
                t.taskId = res.data.result.specialCheckTaskSimplifyInfos[0].id
                t.taskName = res.data.result.specialCheckTaskSimplifyInfos[0].taskName
                t.enterpriseType = 1
                t.getEnterpriseCompleteInfoList()
            }else{
@@ -273,6 +271,7 @@
            const t = this
            t.$refs.report.id = row.id
            t.$refs.report.getEnterpriseInfo()
            t.$refs.report.enterpriseType = t.enterpriseType
            t.$refs.report.dialogVisible = true
        },
@@ -283,7 +282,9 @@
            t.$refs.feedback.feedbackForm.id = row.id
            t.$refs.feedback.getSpotCheckReportInfo()
            t.$refs.feedback.unitType = t.unitType
            t.$refs.feedback.enterpriseType = t.enterpriseType
            t.$refs.feedback.dialogVisible = true
            t.$refs.feedback.getSpotCheckReportInfo()
        }
    }
}
src/views/specialCheck/index.vue
@@ -3,27 +3,21 @@
        <div class="menu-area">
            <el-button v-if="unitType==1" class="add-btn" type="primary" icon="el-icon-plus" @click="sendJob()">新任务下发</el-button>
            <el-menu
                default-active="1"
                default-active="0-1"
                class="el-menu-vertical-demo"
                background-color="#eeeeee"
                background-color="#eee"
                text-color="#333"
                unique-opened
                active-text-color="#034EA2"
                @select="menuSelect">
                <el-submenu v-for="(item,i) in taskMenu" :key="i" :index="item.id + ''">
                <el-submenu v-for="(item,i) in taskMenu" :key="i" :index="item.id + '-' + item.taskName">
                    <template slot="title">
                        <i class="el-icon-s-order"></i>
                        <span>{{item.taskName}}</span>
                    </template>
                    <el-menu-item index="1">
                        <span slot="title">安全检查反馈情况(批发)</span>
                    </el-menu-item>
                    <el-menu-item index="2">
                        <span slot="title">安全检查反馈情况(零售)</span>
                    </el-menu-item>
                    <el-menu-item index="3" v-if="unitType==1||unitType==2">
                        <span slot="title">安全检查情况汇总</span>
                    </el-menu-item>
                    <el-menu-item :index="i + '-' + 1">安全检查反馈情况(批发)</el-menu-item>
                    <el-menu-item :index="i + '-' + 2">安全检查反馈情况(零售)</el-menu-item>
                    <el-menu-item :index="i + '-' + 3" v-if="unitType==1||unitType==2">安全检查情况汇总</el-menu-item>
                </el-submenu>
            </el-menu>
        </div>
@@ -56,9 +50,10 @@
        data() {
            return {
                curTab: 1,
                unitType: 1,
                unitType: null,
                taskMenu: [],
                taskId: null
                taskId: null,
                openeds:[]
            }
        },
        created() {
@@ -96,9 +91,11 @@
                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()
                    t.openeds[0] = t.taskMenu[0].id + '-' + t.taskMenu[0].taskName
                    t.openeds[1] = '1'
                    console.log(t.openeds,'openeds')
                    // t.$refs.wholesale.enterpriseType = t.unitType
                    // t.$refs.wholesale.getEnterpriseCompleteInfoList()
                }else{
                    t.$message({
                        type:'warning',
@@ -109,16 +106,20 @@
            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)
                if(key.split('-')[1] == '1' || key.split('-')[1] == '2'){
                    t.$refs.wholesale.taskId = Number(keyPath[0].split('-')[0])
                    t.$refs.wholesale.taskName = keyPath[0].split('-')[1]
                    t.$refs.wholesale.enterpriseType = Number(key.split('-')[1])
                    t.$refs.wholesale.getEnterpriseCompleteInfoList()
                }else{
                    t.$refs.sumSheet.taskId = Number(keyPath[0])
                    t.$refs.sumSheet.taskId = Number(keyPath[0].split('-')[0])
                    t.$refs.sumSheet.taskName = keyPath[0].split('-')[1]
                    t.$refs.sumSheet.enterpriseCity = ''
                    t.$refs.sumSheet.enterpriseArea = ''
                    t.$refs.sumSheet.sheetStatus = t.unitType
                    t.$refs.sumSheet.getDataStatistics()
                }
                t.curTab = key
                t.curTab = Number(key.split('-')[1])
            },
            sendJob(){
@@ -137,6 +138,14 @@
        .menu-area{
            width: 18%;
            .el-menu{
                height: 80vh;
                overflow: hidden;
                overflow-y: scroll;
                &::-webkit-scrollbar { width: 0; height: 0; color: transparent }
                &::scrollbar { width: 0; height: 0; color: transparent }
            }
            .add-btn{
                width: 100%;
                margin-bottom: 20px;
src/views/usermng/user.vue
@@ -114,28 +114,28 @@
                  </el-option>
              </el-select>
          </div>
          <div class="basic_search">
              <el-select v-model="queryForm.town" clearable filterable @change="changeArea('town')" >
                  <el-option
                      v-for="item in streetList"
                      :key="item.id"
                      :label="item.name"
                      :value="item.name"
                  >
                  </el-option>
              </el-select>
          </div>
          <div class="basic_search">
              <el-select v-model="queryForm.community" clearable filterable>
                  <el-option
                      v-for="item in committeeList"
                      :key="item.id"
                      :label="item.name"
                      :value="item.name"
                  >
                  </el-option>
              </el-select>
          </div>
<!--          <div class="basic_search">-->
<!--              <el-select v-model="queryForm.town" clearable filterable @change="changeArea('town')" >-->
<!--                  <el-option-->
<!--                      v-for="item in streetList"-->
<!--                      :key="item.id"-->
<!--                      :label="item.name"-->
<!--                      :value="item.name"-->
<!--                  >-->
<!--                  </el-option>-->
<!--              </el-select>-->
<!--          </div>-->
<!--          <div class="basic_search">-->
<!--              <el-select v-model="queryForm.community" clearable filterable>-->
<!--                  <el-option-->
<!--                      v-for="item in committeeList"-->
<!--                      :key="item.id"-->
<!--                      :label="item.name"-->
<!--                      :value="item.name"-->
<!--                  >-->
<!--                  </el-option>-->
<!--              </el-select>-->
<!--          </div>-->
      </div>
    <div class="table_content">
      <el-table
@@ -159,6 +159,11 @@
            <span>{{ scope.row.company }}</span>
          </template>
        </el-table-column>
          <el-table-column label="级别" prop="unittype" align="center" width="150" sortable="custom">
              <template slot-scope="scope">
                  <span>{{ scope.row.unittype == 1? '省级':(scope.row.unittype == 2 ? '市、州级' : '区、县级') }}</span>
              </template>
          </el-table-column>
        <el-table-column label="办公电话" prop="phone" align="center" sortable="custom">
        <template slot-scope="scope">
          <span>{{ scope.row.phone }}</span>
@@ -201,7 +206,7 @@
        </el-table-column>
        <el-table-column label="管辖地区" prop="province" align="center" width="300" sortable="custom">
          <template slot-scope="scope">
            <span>{{ scope.row.province+'-'+scope.row.city+'-'+scope.row.area+'-'+scope.row.town+'-'+scope.row.community | parseGX}}</span>
            <span>{{ scope.row.province+'-'+scope.row.city+'-'+scope.row.area | parseGX}}</span>
          </template>
        </el-table-column>
        <el-table-column label="更新时间" prop="lastmodifieddate" align="center" sortable="custom">
@@ -209,7 +214,7 @@
            <span>{{ scope.row.lastmodifieddate | parseTime('{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
        <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width" fixed="right">
          <template slot-scope="scope">
            <el-button type="text" @click="showEditHandle(scope.row)">编辑</el-button>
            <el-button  v-show="userType != 3" :disabled="disableRole(scope.row)" type="text" align="center" @click="showAssignRole(scope.row)">分配角色</el-button>
@@ -232,7 +237,7 @@
      />
    </div>
    <el-dialog :title="dialogStatus==='create'?'新增':'编辑'" :visible.sync="dialogFormVisible" :modal-append-to-body="false" :close-on-click-modal="false" width="700px">
      <el-form ref="dataForm" :rules="dataFormRules" :model="dataForm" label-position="right" label-width="100px" style="margin-left:50px;width:500px;" element-loading-text="保存中...">
      <el-form ref="dataForm" :rules="dataFormRules" :model="dataForm" label-position="right" label-width="120px" style="margin-left:50px;width:500px;" element-loading-text="保存中...">
        <el-form-item label="用户名:" prop="username">
          <el-input v-model.trim="dataForm.username"/>
        </el-form-item>
@@ -281,7 +286,17 @@
          <el-form-item label="统一社会信用代码:" prop="job">
              <el-input v-model.trim="dataForm.code"/>
          </el-form-item>
        <el-form-item label="管辖地区:">
          <el-form-item label="选择监管级别:" prop="unittype">
              <el-select v-model="dataForm.unittype" filterable placeholder="请选择级别">
                  <el-option
                      v-for="item in unitTypeList"
                      :key="item.name"
                      :label="item.name"
                      :value="item.value">
                  </el-option>
              </el-select>
          </el-form-item>
        <el-form-item label="管辖省份:" prop="province">
          <el-select v-model="dataForm.province" filterable placeholder="请选择省份" @change="resetCity">
            <el-option
              v-for="item in provinceList"
@@ -290,7 +305,9 @@
              :value="item.name">
            </el-option>
          </el-select>
          <el-select v-model="dataForm.city"  placeholder="请选择城市" @change="resetArea">
        </el-form-item>
          <el-form-item label="管辖市州:" v-if="dataForm.unittype == 2 || dataForm.unittype == 3" prop="city">
          <el-select v-model="dataForm.city" placeholder="请选择城市" @change="resetArea">
            <el-option
              v-for="item in cityList"
              :key="item.name"
@@ -299,7 +316,9 @@
              >
            </el-option>
          </el-select>
          <el-select v-model="dataForm.area"  placeholder="请选择区县" @change="resetTown">
          </el-form-item>
          <el-form-item label="管辖区县:" v-if="dataForm.unittype == 3" prop="area">
          <el-select v-model="dataForm.area" placeholder="请选择区县" @change="resetTown">
            <el-option
              v-for="item in areaList"
              :key="item.name"
@@ -308,25 +327,25 @@
              >
            </el-option>
          </el-select>
          <el-select v-model="dataForm.town"  placeholder="请选择街道" @change="resetCommunity">
            <el-option
              v-for="item in townList"
              :key="item.name"
              :label="item.name"
              :value="item.name"
             >
            </el-option>
          </el-select>
          <el-select v-model="dataForm.community"  placeholder="请选择社区">
            <el-option
              v-for="item in communityList"
              :key="item.name"
              :label="item.name"
              :value="item.name"
              >
            </el-option>
          </el-select>
        </el-form-item>
          </el-form-item>
<!--          <el-select v-model="dataForm.town"  placeholder="请选择街道" @change="resetCommunity">-->
<!--            <el-option-->
<!--              v-for="item in townList"-->
<!--              :key="item.name"-->
<!--              :label="item.name"-->
<!--              :value="item.name"-->
<!--             >-->
<!--            </el-option>-->
<!--          </el-select>-->
<!--          <el-select v-model="dataForm.community"  placeholder="请选择社区">-->
<!--            <el-option-->
<!--              v-for="item in communityList"-->
<!--              :key="item.name"-->
<!--              :label="item.name"-->
<!--              :value="item.name"-->
<!--              >-->
<!--            </el-option>-->
<!--          </el-select>-->
        <el-form-item label="用户类型:" prop="type">
          <el-select v-model.trim="dataForm.type" placeholder="请选择用户类型" auto-complete="on" style="width:100%;">
            <el-option v-show="userType != 3" :value="2" label="管理员"/>
@@ -452,19 +471,13 @@
      for (let i = 0; i < arr.length; i++){
        if (arr[i] == null || arr[i] == '' || arr[i] == 'null'){
          if (i == 0){
            guanxia = '全部省份';
            guanxia = '';
          }
          if (i == 1){
            guanxia += '-全部城市';
            guanxia += '';
          }
          if (i == 2){
            guanxia += '-全部区县';
          }
          if (i == 3){
            guanxia += '-全部街道';
          }
          if (i == 4){
            guanxia += '-全部居委会';
            guanxia += '';
          }
        }else {
          if (i == 0){
@@ -507,6 +520,7 @@
      currentPage: 1,
      pageTotal: 0,
      tableKey: 0,
      unittype: null,
      userData: null,
      listLoading: true,
      queryForm: {
@@ -516,9 +530,7 @@
          job:'',
          province:'',
          city:'',
          area:'',
          town:'',
          community:'',
          area:''
      },
      dataForm: {
        id: '',
@@ -532,11 +544,10 @@
        province: '',
        city: '',
        area: '',
        town: '',
        community: '',
        type:'',
        job:'',
        code:'',
        unittype: null
      },
      importDialogFormVisible: false,
      importDialogFormVisible2: false,
@@ -550,8 +561,26 @@
        email: [{ validator: validateEmail, trigger: 'blur' }],
        password: [{ required: true, message: '密码不能为空', trigger: 'blur' }],
        confirmPassword: [{ required: true, message: '确认密码不能为空', trigger: 'blur' }],
        type: [{ required: true, message: '用户类型不能为空', trigger: 'blur' }]
        type: [{ required: true, message: '用户类型不能为空', trigger: 'blur' }],
        unittype: [{ required: true, message: '监管级别不能为空', trigger: 'blur' }],
        province: [{ required: true, message: '请选择管辖范围', trigger: 'blur' }],
        city: [{ required: true, message: '请选择管辖范围', trigger: 'blur' }],
        area: [{ required: true, message: '请选择管辖范围', trigger: 'blur' }]
      },
        unitTypeList:[
            {
                name: '省级',
                value: 1
            },
            {
                name: '市、州级',
                value: 2
            },
            {
                name: '区、县级',
                value: 3
            }
        ],
      provinceList:[],
      cityList:[],
      areaList:[],
@@ -577,7 +606,6 @@
    }
  },
  created() {
      console.log(this.userType)
    this.getUserList()
    this.getProvince()
  },
@@ -634,6 +662,13 @@
            parseError({ error: '密码输入不一致', vm: _this })
            return
          }
          if(_this.dataForm.unittype == 1){
              _this.dataForm.city = ''
              _this.dataForm.area = ''
          }
            if(_this.dataForm.unittype == 2){
                _this.dataForm.area = ''
            }
          const userName = Cookies.get('userName')
          _this.dataForm['operator'] = userName
          createUser(_this.dataForm).then(response => {
@@ -701,9 +736,8 @@
        province: '',
        city: '',
        area: '',
        town: '',
        community: '',
        type: '',
        unittype: null,
        job: ''
      }
      this.cityList = []
@@ -729,6 +763,13 @@
              return
            }
          }
            if(_this.dataForm.unittype == 1){
                _this.dataForm.city = ''
                _this.dataForm.area = ''
            }
            if(_this.dataForm.unittype == 2){
                _this.dataForm.area = ''
            }
          const userName = Cookies.get('userName')
          _this.dataForm['lastmodifiedby'] = userName
          updateUser(_this.dataForm).then(response => {
@@ -817,10 +858,9 @@
      this.dataForm.province = row.province
      this.dataForm.city = row.city
      this.dataForm.area = row.area
      this.dataForm.town = row.town
      this.dataForm.community = row.community
      this.dataForm.job = row.job
      this.dataForm.type = row.type
      this.dataForm.unittype = row.unittype
      this.dialogFormVisible = true
      this.$nextTick(() => {
        this.$refs['dataForm'].clearValidate()
@@ -830,16 +870,12 @@
      params['province'] = row.province
      params['city'] = row.city
      params['area'] = row.area
      params['town'] = row.town
      params['community'] = row.community
      getDistrictByName(params).then(response => {
        const res = response.data
        if (res.code == 200){
          this.provinceList = res.result.provinceList;
          this.cityList = res.result.cityList;
          this.areaList = res.result.areaList;
          this.townList = res.result.townList;
          this.communityList = res.result.communityList;
        } else {
          parseError({ error: res.message, vm: _this })
        }