Browse Source

需归模块完善

Initial-inspection
zth 7 months ago
parent
commit
516ffea08f
  1. 14
      jwtech-admin-page/src/api/build/risk.js
  2. 6
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/securityRisk/index.vue
  3. 96
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/securityRisk/options/riskRegistration.vue
  4. 181
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/securityRisk/options/riskStatistics.vue
  5. 4
      jwtech-admin-page/vue.config.js
  6. 59
      jwtech-system/src/main/java/com/kms/build/controller/BsSgcJsjdBuiSafeRiskController.java

14
jwtech-admin-page/src/api/build/risk.js

@ -9,6 +9,20 @@ export function listRisk(query) {
}) })
} }
export function getStatistics(proNo){
return request({
url: '/build/risk/getStatistics/'+proNo,
method: 'get',
})
}
export function getTypeNumber(proNo){
return request({
url: '/build/risk/getTypeNumber/'+proNo,
method: 'get',
})
}
// 查询安全风险登记详细 // 查询安全风险登记详细
export function getRisk(id) { export function getRisk(id) {
return request({ return request({

6
jwtech-admin-page/src/views/building/projectInfo/projectProcess/securityRisk/index.vue

@ -14,6 +14,7 @@
:proNo="proNo" :proNo="proNo"
:proCode=null :proCode=null
:formData="formData" :formData="formData"
v-if="activeName=='riskRegistration'"
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane <el-tab-pane
@ -21,17 +22,20 @@
name="progressFilling" name="progressFilling"
:lazy="true" :lazy="true"
> >
<risk-statistics :pro-no="proNo" v-if="activeName=='progressFilling'"/>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
<script> <script>
import riskRegistration from "./options/riskRegistration.vue"; import riskRegistration from "./options/riskRegistration.vue";
import riskStatistics from "./options/riskStatistics.vue";
import {checkPermi, checkRole} from "../../../../../utils/permission"; import {checkPermi, checkRole} from "../../../../../utils/permission";
export default { export default {
components: { components: {
riskRegistration riskRegistration,
riskStatistics
}, },
props: ["proNo", "proCode", "formData"], props: ["proNo", "proCode", "formData"],
data() { data() {

96
jwtech-admin-page/src/views/building/projectInfo/projectProcess/securityRisk/options/riskRegistration.vue

@ -45,11 +45,14 @@
<el-table-column label="序号" type="index" width="50" align="center" fixed/> <el-table-column label="序号" type="index" width="50" align="center" fixed/>
<el-table-column label="标段名称" align="center" prop="sectionName" min-width="120"/> <el-table-column label="标段名称" align="center" prop="sectionName" min-width="120"/>
<el-table-column label="危险源名称" align="center" prop="hazardName" min-width="120"/> <el-table-column label="危险源名称" align="center" prop="hazardName" min-width="120"/>
<el-table-column label="类型" align="center" prop="hazardType" min-width="120"/> <el-table-column label="类型" align="center" prop="hazardType" min-width="120"
:formatter="riskTypeFormatter"/>
<el-table-column label="项目名称" align="center" prop="hazardProjectName" min-width="120"/> <el-table-column label="项目名称" align="center" prop="hazardProjectName" min-width="120"/>
<el-table-column label="危险登记" align="center" prop="hazardRegistration" min-width="120"/> <el-table-column label="危险登记" align="center" prop="hazardRegistration" min-width="120"/>
<el-table-column label="位置" align="center" prop="hazardAddress" min-width="120"/> <el-table-column label="位置" align="center" prop="hazardAddress" min-width="120"/>
<el-table-column label="风险等级" align="center" prop="riskLevel" min-width="120"/> <el-table-column label="风险等级" align="center" prop="riskLevel" min-width="120"
:formatter="riskStateFormatter"
/>
<el-table-column label="具体描述" align="center" prop="detailedDescription" min-width="120"/> <el-table-column label="具体描述" align="center" prop="detailedDescription" min-width="120"/>
<el-table-column label="影响范围" align="center" prop="reach" min-width="120"/> <el-table-column label="影响范围" align="center" prop="reach" min-width="120"/>
<el-table-column label="控制措施" align="center" prop="controlMeasures" min-width="120"/> <el-table-column label="控制措施" align="center" prop="controlMeasures" min-width="120"/>
@ -134,8 +137,19 @@
<el-input v-model="form.hazardName" placeholder="请输入危险源名称" /> <el-input v-model="form.hazardName" placeholder="请输入危险源名称" />
</el-form-item> </el-form-item>
<el-form-item label="类型" prop="hazardType"> <el-form-item label="类型" prop="hazardType">
<el-select v-model="form.hazardType" placeholder="请选择类型" style="width: 100%"> <el-select
<el-option label="请选择字典生成" value="" /> v-model="form.hazardType"
placeholder="风险等级"
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in riskType1"
:key="dict.dictLabel + dict.id"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="危险登记" prop="hazardRegistration"> <el-form-item label="危险登记" prop="hazardRegistration">
@ -145,7 +159,20 @@
<el-input v-model="form.hazardAddress" placeholder="请输入位置" /> <el-input v-model="form.hazardAddress" placeholder="请输入位置" />
</el-form-item> </el-form-item>
<el-form-item label="风险等级" prop="riskLevel"> <el-form-item label="风险等级" prop="riskLevel">
<el-input v-model="form.riskLevel" placeholder="请输入风险等级" /> <el-select
v-model="form.riskLevel"
placeholder="风险等级"
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in riskState"
:key="dict.dictLabel + dict.id"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="具体描述" prop="detailedDescription"> <el-form-item label="具体描述" prop="detailedDescription">
<el-input v-model="form.detailedDescription" placeholder="请输入具体描述" /> <el-input v-model="form.detailedDescription" placeholder="请输入具体描述" />
@ -201,9 +228,18 @@
<el-form-item label="类型" prop="hazardType"> <el-form-item label="类型" prop="hazardType">
<el-select <el-select
:disabled="true" v-model="form.hazardType"
v-model="form.hazardType" placeholder="请选择类型" style="width: 100%"> placeholder="风险等级"
<el-option label="请选择字典生成" value="" /> clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in riskType1"
:key="dict.dictLabel + dict.id"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="危险登记" prop="hazardRegistration"> <el-form-item label="危险登记" prop="hazardRegistration">
@ -213,7 +249,20 @@
<el-input v-model="form.hazardAddress" placeholder="请输入位置" /> <el-input v-model="form.hazardAddress" placeholder="请输入位置" />
</el-form-item> </el-form-item>
<el-form-item label="风险等级" prop="riskLevel"> <el-form-item label="风险等级" prop="riskLevel">
<el-input v-model="form.riskLevel" placeholder="请输入风险等级" /> <el-select
v-model="form.riskLevel"
placeholder="风险等级"
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in riskState"
:key="dict.dictLabel + dict.id"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="具体描述" prop="detailedDescription"> <el-form-item label="具体描述" prop="detailedDescription">
<el-input v-model="form.detailedDescription" placeholder="请输入具体描述" /> <el-input v-model="form.detailedDescription" placeholder="请输入具体描述" />
@ -303,6 +352,8 @@ export default {
sortBy: "desc", sortBy: "desc",
}, },
}, },
riskType1:[],
riskState:[],
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -350,6 +401,14 @@ export default {
}; };
}, },
created() { created() {
this.getDicts("risk_type").then((response)=>{
this.riskType1=response.data;
console.log(this.riskType1)
})
this.getDicts("risk_state").then((response)=>{
this.riskState=response.data;
console.log(this.riskState)
})
listInfo(this.proQueryParams).then((response) => { listInfo(this.proQueryParams).then((response) => {
this.projectNameOptions[0].options = response.records; this.projectNameOptions[0].options = response.records;
console.log(this.projectNameOptions[0]) console.log(this.projectNameOptions[0])
@ -364,9 +423,12 @@ export default {
this.projectNameOptions[1].options.push(response.records); this.projectNameOptions[1].options.push(response.records);
console.log(this.projectNameOptions[1]) console.log(this.projectNameOptions[1])
}); });
this.getList(); this.getList();
}, },
methods: { methods: {
visibleChange(visible) { visibleChange(visible) {
// console.log(visible); // console.log(visible);
// //
@ -462,7 +524,7 @@ export default {
controlMeasures: null, controlMeasures: null,
riskNumber: null, riskNumber: null,
proCode: null, proCode: null,
proNo: null, proNo: this.proNo,
createUid: null, createUid: null,
createTime: null, createTime: null,
updateUid: null, updateUid: null,
@ -489,7 +551,7 @@ export default {
controlMeasures: null, controlMeasures: null,
riskNumber: null, riskNumber: null,
proCode: null, proCode: null,
proNo: null, proNo: this.proNo,
createUid: null, createUid: null,
createTime: null, createTime: null,
updateUid: null, updateUid: null,
@ -522,6 +584,18 @@ export default {
this.single = selection.length!==1 this.single = selection.length!==1
this.multiple = !selection.length this.multiple = !selection.length
}, },
riskStateFormatter(row, column) {
return this.selectDictLabel(
this.riskState,
row.riskLevel
);
},
riskTypeFormatter(row, column) {
return this.selectDictLabel(
this.riskType1,
row.hazardType
);
},
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();

181
jwtech-admin-page/src/views/building/projectInfo/projectProcess/securityRisk/options/riskStatistics.vue

@ -0,0 +1,181 @@
<template>
<div class="app-container">
<div>
<div ref="bar" style="width: 50%; height: 500px;float: left"></div>
<div ref="ele" style="width: 50%; height: 500px;float: right"></div>
</div>
</div>
</template>
<script >
import { getStatistics,getTypeNumber } from "@/api/build/risk";
import * as echarts from "echarts";
import Div from "../../../../../build/div/index.vue";
import {codeToText} from "element-china-area-data";
export default {
props:["proNo"],
components: {Div},
created() {
this.getDicts("risk_type").then((response)=>{
this.riskType1=response.data;
console.log(this.riskType1)
})
this.getDicts("risk_state").then((response)=>{
this.riskState=response.data;
console.log(this.riskState)
})
getStatistics(this.proNo).then(
res=>{
this.list=res
this.key=Object.keys(this.list)
this.value=Object.values(this.list)
this.barInit();
}
)
getTypeNumber(this.proNo).then(
res=>{
const keys = Object.keys(res);
this.formattedData = keys.map(key => ({
value: res[key], // value
name: key // name
}));
this.eleInit()
}
)
},
data(){
return {
riskType1:null,
riskState:null,
key:null,
value:null,
list:null,
typekey:null,
typeValues:null,
formattedData:null,
}
},
computed: {
},
mounted() {
},
methods:{
riskStateFormatter(row, column) {
return this.selectDictLabel(
this.riskState,
row
);
},
riskTypeFormatter(row, column) {
return this.selectDictLabel(
this.riskType1,
row
);
},
barInit(){
console.log(this.value)
// const xAxisData = Object.keys(this.list[""]); // x ["0", "2"]
// const yAxisData = Object.values(this.list[""]); // y [1, 1]
let chartDom = this.$refs.bar;
let myChart = echarts.init(chartDom);
let option = {
title: {
text: '风险等级对比',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: this.key.map(item=>this.riskStateFormatter(item)),
axisTick: {
alignWithLabel: true
}
}
],
yAxis: [
{
axisLine: {
show: false // X 线
},
name: '数量/个',
type: 'value',
interval: 1,
}
],
series: [
{
name: '数量/个',
type: 'bar',
barWidth: '60%',
data:this.value
}
]
};
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
},
eleInit(){
let chartDom1 = this.$refs.ele;
let myChart = echarts.init(chartDom1);
let option = {
title: {
text: '风险类型对比',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '数量/个',
type: 'pie',
radius: '50%',
data:this.formattedData.map(item => ({
...item,
name: this.riskTypeFormatter(item.name)
})),
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
}
}
}
</script>
<style scoped lang="scss">
</style>

4
jwtech-admin-page/vue.config.js

@ -33,7 +33,7 @@ module.exports = {
devServer: { devServer: {
// host: '0.0.0.0', // host: '0.0.0.0',
// host: '192.168.1.104', // host: '192.168.1.104',
host: '192.168.2.108', host: 'localhost',
// host: '192.168.2.107', // host: '192.168.2.107',
port: 80, port: 80,
open: true, open: true,
@ -43,7 +43,7 @@ module.exports = {
// target: "http://127.0.0.1:18082", // target: "http://127.0.0.1:18082",
// target: "http://192.168.2.108:18080", // target: "http://192.168.2.108:18080",
// target: "http://192.168.2.103:18082", // target: "http://192.168.2.103:18082",
target: "http://192.168.2.111:18082", target: "http://localhost:18082",
// target: "http://192.168.2.108:18080", // target: "http://192.168.2.108:18080",
// target: "http://192.168.1.20:8084", // target: "http://192.168.1.20:8084",
changeOrigin: true, changeOrigin: true,

59
jwtech-system/src/main/java/com/kms/build/controller/BsSgcJsjdBuiSafeRiskController.java

@ -1,8 +1,13 @@
package com.kms.build.controller; package com.kms.build.controller;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jianwei.common.core.controller.BaseController; import com.jianwei.common.core.controller.BaseController;
import com.jianwei.common.core.domain.SearchParam; import com.jianwei.common.core.domain.SearchParam;
import com.jianwei.common.utils.poi.ExcelUtil; import com.jianwei.common.utils.poi.ExcelUtil;
@ -56,6 +61,60 @@ public class BsSgcJsjdBuiSafeRiskController extends BaseController
return bsSgcJsjdBuiSafeRiskService.selectPage(sp); return bsSgcJsjdBuiSafeRiskService.selectPage(sp);
} }
@GetMapping("getStatistics/{proNo}")
@ApiOperation("状态统计")
public Map<String,Integer>getStatistics(@PathVariable("proNo") String proNo){
List<BsSgcJsjdBuiSafeRisk> list = bsSgcJsjdBuiSafeRiskService.list(new QueryWrapper<BsSgcJsjdBuiSafeRisk>().eq("pro_no", proNo));
Map<String,Map<String,Integer>>map=new HashMap<>();
Map<String,Integer>statusNumber=new HashMap<>();
Map<String,Integer>typeNumber=new HashMap<>();
if (CollectionUtil.isEmpty(list)){
return statusNumber;
}
for (BsSgcJsjdBuiSafeRisk bsSgcJsjdBuiSafeRisk:list){
if (statusNumber.containsKey(bsSgcJsjdBuiSafeRisk.getRiskLevel())){
statusNumber.put(bsSgcJsjdBuiSafeRisk.getRiskLevel(),statusNumber.get(bsSgcJsjdBuiSafeRisk.getRiskLevel())+1);
}else {
statusNumber.put(bsSgcJsjdBuiSafeRisk.getRiskLevel(),1);
}
// if (typeNumber.containsKey(bsSgcJsjdBuiSafeRisk.getHazardType())){
// statusNumber.put(bsSgcJsjdBuiSafeRisk.getHazardType(),statusNumber.get(bsSgcJsjdBuiSafeRisk.getHazardType())+1);
// }else {
// typeNumber.put(bsSgcJsjdBuiSafeRisk.getHazardType(),1);
// }
}
return statusNumber;
}
@GetMapping("getTypeNumber/{proNo}")
@ApiOperation("类型统计")
public Map<String,Integer>getTypeNumber(@PathVariable("proNo") String proNo){
List<BsSgcJsjdBuiSafeRisk> list = bsSgcJsjdBuiSafeRiskService.list(new QueryWrapper<BsSgcJsjdBuiSafeRisk>().eq("pro_no", proNo));
Map<String,Map<String,Integer>>map=new HashMap<>();
Map<String,Integer>statusNumber=new HashMap<>();
Map<String,Integer>typeNumber=new HashMap<>();
if (CollectionUtil.isEmpty(list)){
return typeNumber;
}
for (BsSgcJsjdBuiSafeRisk bsSgcJsjdBuiSafeRisk:list){
// if (statusNumber.containsKey(bsSgcJsjdBuiSafeRisk.getRiskLevel())){
// statusNumber.put(bsSgcJsjdBuiSafeRisk.getRiskLevel(),statusNumber.get(bsSgcJsjdBuiSafeRisk.getRiskLevel())+1);
// }else {
// statusNumber.put(bsSgcJsjdBuiSafeRisk.getRiskLevel(),1);
// }
if (typeNumber.containsKey(bsSgcJsjdBuiSafeRisk.getHazardType())){
statusNumber.put(bsSgcJsjdBuiSafeRisk.getHazardType(),statusNumber.get(bsSgcJsjdBuiSafeRisk.getHazardType())+1);
}else {
typeNumber.put(bsSgcJsjdBuiSafeRisk.getHazardType(),1);
}
}
return typeNumber;
}
/** /**
* 导出安全风险登记列表 * 导出安全风险登记列表
*/ */

Loading…
Cancel
Save