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 }) }