From 90de81ed138823dc498b201bc7873f74016d2f65 Mon Sep 17 00:00:00 2001 From: Admin <978517621@qq.com> Date: 星期三, 23 十一月 2022 15:20:23 +0800 Subject: [PATCH] 新增安全专项检查与用户层级 --- src/views/specialCheck/components/areaEnterprises.vue | 99 ++ src/views/usermng/user.vue | 178 +++-- src/views/specialCheck/components/areaForm.vue | 150 ++++ src/views/selfCheck/components/repair.vue | 103 +- src/views/specialCheck/components/sumSheet.vue | 490 ++++++++----- src/router/index.js | 14 src/views/specialCheck/components/checkEnterprises.vue | 143 ++++ src/views/specialCheck/components/feedbackDetails.vue | 29 /dev/null | 243 ------- src/api/specialCheck.js | 35 + src/views/specialCheck/components/wholesaleForm.vue | 15 src/views/selfCheck/components/selfReport.vue | 213 +++-- src/views/specialCheck/index.vue | 55 src/views/selfCheck/components/supervisionDetails.vue | 110 ++ src/views/specialCheck/components/sendWork.vue | 49 src/views/selfCheck/index.vue | 15 src/views/selfCheck/components/checkDetails.vue | 43 + src/App.vue | 1 src/views/selfCheck/supervision.vue | 1 19 files changed, 1,244 insertions(+), 742 deletions(-) diff --git a/src/App.vue b/src/App.vue index ec9032c..bee05da 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,6 +5,7 @@ </template> <script> + export default { name: 'App' } diff --git a/src/api/specialCheck.js b/src/api/specialCheck.js index 822313e..ff59d9b 100644 --- a/src/api/specialCheck.js +++ b/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 + }) +} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/router/index.js b/src/router/index.js index 8166572..d57f811 100644 --- a/src/router/index.js +++ b/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 }, diff --git a/src/views/selfCheck/components/checkDetails.vue b/src/views/selfCheck/components/checkDetails.vue index 6d073fe..9214023 100644 --- a/src/views/selfCheck/components/checkDetails.vue +++ b/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 } } } } diff --git a/src/views/selfCheck/components/repair.vue b/src/views/selfCheck/components/repair.vue index 8f1e622..16033f7 100644 --- a/src/views/selfCheck/components/repair.vue +++ b/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 } }, } diff --git a/src/views/selfCheck/components/selfReport.vue b/src/views/selfCheck/components/selfReport.vue index 19a4b0a..f9f7010 100644 --- a/src/views/selfCheck/components/selfReport.vue +++ b/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; diff --git a/src/views/supervision/components/supervisionDetails.vue b/src/views/selfCheck/components/supervisionDetails.vue similarity index 74% rename from src/views/supervision/components/supervisionDetails.vue rename to src/views/selfCheck/components/supervisionDetails.vue index e90bc37..6afdea9 100644 --- a/src/views/supervision/components/supervisionDetails.vue +++ b/src/views/selfCheck/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 } } } } diff --git a/src/views/selfCheck/index.vue b/src/views/selfCheck/index.vue index 516e47f..3908fbc 100644 --- a/src/views/selfCheck/index.vue +++ b/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(){ diff --git a/src/views/supervision/index.vue b/src/views/selfCheck/supervision.vue similarity index 98% rename from src/views/supervision/index.vue rename to src/views/selfCheck/supervision.vue index e6b7564..e338805 100644 --- a/src/views/supervision/index.vue +++ b/src/views/selfCheck/supervision.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(){ diff --git a/src/views/specialCheck/components/areaEnterprises.vue b/src/views/specialCheck/components/areaEnterprises.vue new file mode 100644 index 0000000..663379c --- /dev/null +++ b/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> diff --git a/src/views/specialCheck/components/areaForm.vue b/src/views/specialCheck/components/areaForm.vue new file mode 100644 index 0000000..a6af8d1 --- /dev/null +++ b/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> diff --git a/src/views/specialCheck/components/checkEnterprises.vue b/src/views/specialCheck/components/checkEnterprises.vue new file mode 100644 index 0000000..6dacddc --- /dev/null +++ b/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> diff --git a/src/views/specialCheck/components/feedbackDetails.vue b/src/views/specialCheck/components/feedbackDetails.vue index bd6ee74..ba8cfa2 100644 --- a/src/views/specialCheck/components/feedbackDetails.vue +++ b/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 = { diff --git a/src/views/specialCheck/components/reportDetails.vue b/src/views/specialCheck/components/reportDetails.vue deleted file mode 100644 index ff1f72e..0000000 --- a/src/views/specialCheck/components/reportDetails.vue +++ /dev/null @@ -1,243 +0,0 @@ -<template> - <el-dialog - :visible.sync="dialogVisible" - append-to-body - :close-on-click-modal="false" - width="75%" - center - > - <div slot="title" class="dialog-title"> - 烟花爆竹批发企业自查情况信息报送表 - </div> - <div class="table-tit"> - <div>企业名称: <span class="m-color">{{corpInfo.name}}</span></div> - <div>所属省市县: <span class="m-color">{{corpInfo.location}}</span></div> - </div> - <div class="corp-list"> - <table class="corp-table"> - <th class="m-color b-font">企业基本情况</th> - <tr> - <td class="m-color w-33">批发许可证状态</td> - <td class="m-color w-33">库存(万箱)</td> - <td class="m-color w-33">库容(万箱)</td> - </tr> - <tr> - <td class="w-33">{{corpInfo.isInDate}}</td> - <td class="w-33">{{corpInfo.stock}}</td> - <td class="w-33">{{corpInfo.store}}</td> - </tr> - <tr class="m-color b-font" style="text-align: center">自查与整改情况</tr> - <tr> - <td class="m-color w-5">序号</td> - <td class="m-color w-15">自查隐患问题描述</td> - <td class="m-color w-10">检查时间</td> - <td class="m-color w-10">隐患等级</td> - <td class="m-color w-25">整改措施</td> - <td class="m-color w-10">整改资金(元)</td> - <td class="m-color w-5">责任人</td> - <td class="m-color w-20">隐患状态</td> - </tr> - <tr v-for="(item,index) in corpInfo.measures" :key="index"> - <td class="w-5">{{index}}</td> - <td class="w-15 overText">{{item.desc}}</td> - <td class="w-10">{{item.checkTime}}</td> - <td class="w-10">{{item.level}}</td> - <td class="w-25 overText">{{item.action}}</td> - <td class="w-10">{{item.money}}</td> - <td class="w-5">{{item.name}}</td> - <td class="w-20">{{item.status}}</td> - </tr> - <tr> - <td class="m-color w-50">隐患问题情况</td> - <td class="m-color w-50">整改情况</td> - </tr> - <tr> - <td class="m-color w-25">隐患总数</td> - <td class="m-color w-25">重大隐患数量</td> - <td class="m-color w-25">已整改隐患总数</td> - <td class="m-color w-25">已整改重大隐患数量</td> - </tr> - <tr> - <td class="w-25">{{corpInfo.totalRisks}}</td> - <td class="w-25">{{corpInfo.majorRisk}}</td> - <td class="w-25">{{corpInfo.fixRisks}}</td> - <td class="w-25">{{corpInfo.fixMajorRisk}}</td> - </tr> - </table> - <div class="table-bottom"> - <div>填报人: <span class="m-color">{{corpInfo.reporter}}</span></div> - </div> - <div class="table-bottom"> - <div>填报人联系电话: <span class="m-color">{{corpInfo.reportPhone}}</span></div> - <div>填报时间: <span class="m-color">{{corpInfo.reportTime}}</span></div> - </div> - </div> - <span slot="footer" class="dialog-footer"> - <el-button>情况反馈</el-button> - <el-button type="primary" @click="confirmBack()">返回列表</el-button> - </span> - </el-dialog> -</template> - -<script> - import {computePageCount} from "@/utils"; - import { getEnterpriseInfo } from "@/api/selfCheck"; - export default { - name: "reportDetails", - data(){ - return{ - dialogVisible:false, - id: null, - corpInfo:{ - enterpriseName: '', - enterpriseProvince: '', - enterpriseCity: '', - enterpriseArea: '', - licenceValidStatus: 0, - stockNum: 0, - store: 0, - hiddendangerInfos: [], - hiddendangerSum: 0, - majorHiddendangerNum: 0, - completedRectifyHiddendangerSum: 0, - completedRectifyMajorHiddendangerNum: 0, - selfcheckReportUserName: '', - selfcheckReportUserMobile: '', - reportModifyTime: '' - } - } - }, - watch: { - }, - methods:{ - async getEnterpriseInfo(){ - const t = this - let res = await getEnterpriseInfo({id: t.id}) - if(res.data.code === "200"){ - t.corpInfo = res.data.result - }else{ - t.$message({ - type:'warning', - message:res.data.message - }) - } - }, - - confirmBack(){ - this.dialogVisible = false - } - }, - } -</script> - -<style lang="scss" scoped> - .input-with-select .el-select { - width: 120px; - } - - .el-date-editor.el-input{ - width: 100%; - } - .dialog-title{ - font-size: 22px; - font-weight: bolder; - } - .table-tit{ - display: flex; - align-items: center; - margin-bottom: 10px; - div:first-of-type{ - margin-right: 100px; - } - } - .corp-list{ - .corp-table{ - width: 100%; - border-collapse: collapse; - border: 1px solid #79bbff; - margin: 10px 0; - th{ - padding: 10px 0; - border: 1px solid #79bbff; - border-bottom: 1px solid #ccc; - } - tr{ - width: 100%; - height: 44px; - line-height: 42px; - border-bottom: 1px solid #ccc; - - &:last-of-type{ - border-bottom: none; - } - td{ - border-right: 1px solid #ccc; - display: inline-block; - height: 44px; - vertical-align: middle; - text-align: center; - line-height: 42px; - - &:last-of-type{ - border-right: none; - } - ::v-deep.el-textarea{ - .el-textarea__inner{ - min-height: 40px !important; - background-color: #ecf5ff; - border: 1px solid #d9ecff; - } - } - - &.w-5{ - width: 5%; - } - &.w-10{ - width: 10%; - } - &.w-15{ - width: 15%; - } - &.w-20{ - width: 20%; - } - &.w-50{ - width: 50%; - } - &.w-25{ - width: 25%; - } - &.w-75{ - width: 75%; - } - &.w-33{ - width: 33.33%; - } - &.overText{ - overflow: auto; - line-height: 1.5; - text-align: left; - padding: 10px; - } - } - } - .b-font{ - font-size: 16px; - font-weight: bolder; - } - ::v-deep.mid{ - .el-input__inner{ - text-align: center; - background-color: #ecf5ff; - border: 1px solid #d9ecff; - } - } - } - .table-bottom{ - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 10px; - } - } -</style> diff --git a/src/views/specialCheck/components/sendWork.vue b/src/views/specialCheck/components/sendWork.vue index 211bb81..a0e471c 100644 --- a/src/views/specialCheck/components/sendWork.vue +++ b/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; } diff --git a/src/views/specialCheck/components/sumSheet.vue b/src/views/specialCheck/components/sumSheet.vue index 76bdd82..a7e81d0 100644 --- a/src/views/specialCheck/components/sumSheet.vue +++ b/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; } diff --git a/src/views/specialCheck/components/wholesaleForm.vue b/src/views/specialCheck/components/wholesaleForm.vue index be125b7..150749c 100644 --- a/src/views/specialCheck/components/wholesaleForm.vue +++ b/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() } } } diff --git a/src/views/specialCheck/index.vue b/src/views/specialCheck/index.vue index 135ca32..4d88493 100644 --- a/src/views/specialCheck/index.vue +++ b/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; diff --git a/src/views/usermng/user.vue b/src/views/usermng/user.vue index 8250c78..db971f7 100644 --- a/src/views/usermng/user.vue +++ b/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 }) } -- Gitblit v1.9.2