上传
This commit is contained in:
@@ -1,62 +1,73 @@
|
||||
<template>
|
||||
<ChartCard margin="0 0 30rpx 0" title="危大工程数">
|
||||
<view class="big-crisis">
|
||||
<view class="big-crisis" @click="router.push('/pages/index/dangerousProject/index')">
|
||||
<qiun-data-charts type="column" :opts="opts" :canvas2d="false" :chartData="chartData" @getIndex="handleTap" />
|
||||
</view>
|
||||
</ChartCard>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import ChartCard from '@/components/chartCard.vue'
|
||||
import {
|
||||
ref,onMounted
|
||||
} from 'vue';
|
||||
const opts = ref({
|
||||
padding: [15, 15, 0, 5],
|
||||
enableScroll: false,
|
||||
legend: {
|
||||
show: false
|
||||
},
|
||||
xAxis: {
|
||||
disableGrid: true,
|
||||
fontSize:12
|
||||
},
|
||||
yAxis: {
|
||||
data: [{
|
||||
min: 0
|
||||
}]
|
||||
},
|
||||
extra: {
|
||||
column: {
|
||||
type: "group",
|
||||
width: 20,
|
||||
activeBgColor: "#000000",
|
||||
activeBgOpacity: 0.08
|
||||
}
|
||||
}
|
||||
})
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import { ref, watch } from 'vue';
|
||||
import {router} from '@/utils'
|
||||
|
||||
const chartData = ref({})
|
||||
|
||||
const handleTap = (e) => {
|
||||
console.log(e)
|
||||
let props = defineProps({
|
||||
dangerousProjectData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
});
|
||||
const opts = ref({
|
||||
padding: [15, 15, 0, 5],
|
||||
enableScroll: false,
|
||||
legend: {
|
||||
show: false
|
||||
},
|
||||
xAxis: {
|
||||
disableGrid: true,
|
||||
fontSize: 12
|
||||
},
|
||||
yAxis: {
|
||||
data: [
|
||||
{
|
||||
min: 0
|
||||
}
|
||||
]
|
||||
},
|
||||
extra: {
|
||||
column: {
|
||||
type: 'group',
|
||||
width: 20,
|
||||
activeBgColor: '#000000',
|
||||
activeBgOpacity: 0.08
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const chartData = ref({});
|
||||
|
||||
onMounted(() => {
|
||||
let res = {
|
||||
categories: ["已完成个数", "进行中个数", "作业人数", "培训人次数"],
|
||||
series: [{
|
||||
data: [35, 36, 31, 33]
|
||||
}]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
})
|
||||
const handleTap = (e) => {
|
||||
console.log(e);
|
||||
};
|
||||
watch(
|
||||
() => props.dangerousProjectData,
|
||||
(newVal) => {
|
||||
if (newVal && newVal.length) {
|
||||
// 只有当数据存在时才赋值
|
||||
let res = {
|
||||
categories: ['已完成个数', '进行中个数', '作业人数', '培训人次数'],
|
||||
series: [{ data: newVal }]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
}
|
||||
},
|
||||
{ deep: true, immediate: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.big-crisis {
|
||||
width: 100%;
|
||||
height: 400rpx;
|
||||
}
|
||||
</style>
|
||||
.big-crisis {
|
||||
width: 100%;
|
||||
height: 400rpx;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,22 +1,21 @@
|
||||
<template>
|
||||
|
||||
<ChartCard margin="0 0 20rpx 0" title="项目安全检查数据">
|
||||
<view class="defect">
|
||||
<!-- <u-subsection :list="list" :current="current" @change="handleChange"></u-subsection> -->
|
||||
<view class="defect-main u-flex u-row-between">
|
||||
<view class="defect-main u-flex u-row-between" @click="router.push('/pages/index/projectSafety/index')">
|
||||
<!-- <view class="defect-box gb-all">
|
||||
<text class="defect-box-lab">安全隐患</text>
|
||||
<text class="defect-box-num u-margin-top-20">4567</text>
|
||||
</view> -->
|
||||
<view class="defect-box gb-rectified">
|
||||
<text class="defect-box-lab">项目检查数</text>
|
||||
<text class="defect-box-num u-margin-top-20">20</text>
|
||||
<text class="defect-box-num u-margin-top-20">{{ hsseProblem?.ProjectProblemNum || 0 }}</text>
|
||||
</view>
|
||||
<!-- <view class="defect-box gb-not-rectified">
|
||||
<text class="defect-box-lab">未整改</text>
|
||||
<text class="defect-box-num u-margin-top-20">6</text>
|
||||
<view class="defect-box gb-rectified">
|
||||
<text class="defect-box-lab">项目未完成数</text>
|
||||
<text class="defect-box-num u-margin-top-20">{{ hsseProblem?.ProjectProblemNotCompletedNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="defect-box gb-rectified-rate">
|
||||
<!-- <view class="defect-box gb-rectified-rate">
|
||||
<text class="defect-box-lab">整改率</text>
|
||||
<text class="defect-box-num u-margin-top-20">99.99%</text>
|
||||
</view> -->
|
||||
@@ -25,71 +24,74 @@
|
||||
</ChartCard>
|
||||
</template>
|
||||
<script setup>
|
||||
import ChartCard from '@/components/chartCard.vue'
|
||||
import {
|
||||
ref,
|
||||
watch
|
||||
} from 'vue';
|
||||
|
||||
const current = ref(0)
|
||||
const list = ref([{
|
||||
name: '集团级'
|
||||
},
|
||||
{
|
||||
name: '公司级'
|
||||
},
|
||||
{
|
||||
name: '项目级'
|
||||
}, {
|
||||
name: '分支机构'
|
||||
}
|
||||
])
|
||||
|
||||
const handleChange = () => {
|
||||
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import { ref, watch } from 'vue';
|
||||
import { router } from '@/utils'
|
||||
let props = defineProps({
|
||||
hsseProblem: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
});
|
||||
const current = ref(0);
|
||||
const list = ref([
|
||||
{
|
||||
name: '集团级'
|
||||
},
|
||||
{
|
||||
name: '公司级'
|
||||
},
|
||||
{
|
||||
name: '项目级'
|
||||
},
|
||||
{
|
||||
name: '分支机构'
|
||||
}
|
||||
]);
|
||||
|
||||
const handleChange = () => {};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.defect {
|
||||
&-main {
|
||||
height: 120rpx;
|
||||
.defect {
|
||||
&-main {
|
||||
height: 120rpx;
|
||||
}
|
||||
|
||||
&-box {
|
||||
width: 100%;
|
||||
// width: calc((100% - 40rpx) / 4);
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
&-lab {
|
||||
font-size: 24rpx;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
&-box {
|
||||
width: 100%;
|
||||
// width: calc((100% - 40rpx) / 4);
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
&-lab {
|
||||
font-size: 24rpx;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
&-num {
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
color: #ffffff;
|
||||
}
|
||||
&-num {
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.gb-all {
|
||||
background: linear-gradient(to top right, #9E9E9E, #dcdcdc);
|
||||
}
|
||||
.gb-all {
|
||||
background: linear-gradient(to top right, #9e9e9e, #dcdcdc);
|
||||
}
|
||||
|
||||
.gb-not-rectified {
|
||||
background: linear-gradient(to top right, #FFD626, #FF9F7D);
|
||||
}
|
||||
.gb-not-rectified {
|
||||
background: linear-gradient(to top right, #ffd626, #ff9f7d);
|
||||
}
|
||||
|
||||
.gb-rectified {
|
||||
background: linear-gradient(to top right, #2488FA, #79BAFF);
|
||||
}
|
||||
.gb-rectified {
|
||||
background: linear-gradient(to top right, #2488fa, #79baff);
|
||||
}
|
||||
|
||||
.gb-rectified-rate {
|
||||
background: linear-gradient(to top right, #2AD192, #8DF0C9);
|
||||
}
|
||||
</style>
|
||||
.gb-rectified-rate {
|
||||
background: linear-gradient(to top right, #2ad192, #8df0c9);
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
<template>
|
||||
<ChartCard margin="0 0 30rpx 0" title="培训数据">
|
||||
<view class="charts-box">
|
||||
<qiun-data-charts type="area" :opts="opts" :canvas2d="false" :chartData="chartData" @getIndex="handleTap" />
|
||||
<view class="charts-box" @click="router.push('/pages/index/training/index')">
|
||||
<qiun-data-charts type="area" :opts="opts" :canvas2d="false" :chartData="chartData" @getIndex="handleTap" />
|
||||
</view>
|
||||
</ChartCard>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import { ref ,onMounted} from 'vue';
|
||||
import { ref, onMounted, watch } from 'vue';
|
||||
import { router } from '@/utils';
|
||||
|
||||
let props = defineProps({
|
||||
educationData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
});
|
||||
const opts = ref({
|
||||
padding: [15, 15, 0, 15],
|
||||
enableScroll: false,
|
||||
@@ -20,7 +27,7 @@ const opts = ref({
|
||||
disableGrid: true,
|
||||
rotateLabel: true,
|
||||
rotateAngle: -30,
|
||||
fontSize: 10
|
||||
fontSize: 9
|
||||
},
|
||||
yAxis: {
|
||||
gridType: 'dash',
|
||||
@@ -46,18 +53,24 @@ const chartData = ref({});
|
||||
const handleTap = (e) => {
|
||||
console.log(e);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
let res = {
|
||||
categories: ['专项培训', '三级安全教育\n培训人次', '特种作业\n培训人次', '安全技术\n交底人次'],
|
||||
series: [
|
||||
{
|
||||
data: [302265, 70770, 399175, 14851]
|
||||
}
|
||||
]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
});
|
||||
watch(
|
||||
() => props.educationData,
|
||||
(newVal) => {
|
||||
if (newVal && newVal.length) {
|
||||
// 只有当数据存在时才赋值
|
||||
let res = {
|
||||
categories: ['专项培训', '三级安全教育\n培训人次', '特种作业\n培训人次', '安全技术\n交底人次'],
|
||||
series: [
|
||||
{
|
||||
data: newVal
|
||||
}
|
||||
]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
}
|
||||
},
|
||||
{ deep: true, immediate: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<ChartCard margin="0 0 30rpx 0" title="应急数据">
|
||||
<view class="emergencyCard">
|
||||
<view class="emergencyCard" @click="router.push('/pages/index/emergency/index')">
|
||||
<qiun-data-charts type="column" :opts="opts" :canvas2d="false" :chartData="chartData" @getIndex="handleTap" />
|
||||
</view>
|
||||
</ChartCard>
|
||||
@@ -8,8 +8,14 @@
|
||||
|
||||
<script setup>
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import { ref, onMounted } from 'vue';
|
||||
|
||||
import { ref, watch } from 'vue';
|
||||
import { router } from '@/utils';
|
||||
let props = defineProps({
|
||||
emergencyData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
});
|
||||
const opts = ref({
|
||||
padding: [15, 15, 0, 5],
|
||||
enableScroll: false,
|
||||
@@ -42,25 +48,25 @@ const chartData = ref({});
|
||||
const handleTap = (e) => {
|
||||
console.log(e);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
let res = {
|
||||
categories: ['综合预案', '专项预案', '现场处置\n预案', '演练次数 ', '参演人数'],
|
||||
series: [
|
||||
{
|
||||
data: [35, 36, 31, 33, 13],
|
||||
color: '#eef82f'
|
||||
}
|
||||
],
|
||||
formatter: function (value, index, series, opts) {
|
||||
console.log(value);
|
||||
console.log(index);
|
||||
console.log(series);
|
||||
console.log(opts);
|
||||
watch(
|
||||
() => props.emergencyData,
|
||||
(newVal) => {
|
||||
if (newVal && newVal.length) {
|
||||
// 只有当数据存在时才赋值
|
||||
let res = {
|
||||
categories: ['综合预案', '专项预案', '现场处置\n预案', '演练次数 ', '参演人数'],
|
||||
series: [
|
||||
{
|
||||
data: newVal,
|
||||
color: '#eef82f'
|
||||
}
|
||||
]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
}
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
});
|
||||
},
|
||||
{ deep: true, immediate: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
@@ -2,65 +2,66 @@
|
||||
<ChartCard :loading="loading" margin="0 0 30rpx 0">
|
||||
<view class="organizer">
|
||||
<view class="organizer-tit">企业及分支机构人数</view>
|
||||
<view class="row u-flex u-flex-wrap u-padding-20 u-margin-bottom-20">
|
||||
<view class="row u-flex u-flex-wrap u-padding-20 u-margin-bottom-20" @click="router.push('/pages/index/dataBranch/index')">
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">企业总监数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.HeadOfficeInspectorGeneralNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">企业专职人员数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.HeadOfficeFullTimeNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">分支机构总监数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.BranchInspectorGeneralNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">分支机构专职人员数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">A证人数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">B证人数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.BranchFullTimeNum || 0 }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="organizer-tit">项目人数</view>
|
||||
<view class="row u-flex u-flex-wrap u-padding-20 u-margin-bottom-20">
|
||||
<view class="row u-flex u-flex-wrap u-padding-20 u-margin-bottom-20" @click="router.push('/pages/index/dataProjectNum/index')">
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">项目总监</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.ProjectInspectorGeneralNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">专职安全管理人员(含分包)</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.ProjectFullTimeNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">安全监护人数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.ProjectSafetyMonitorNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">注安师数量</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.SafetyInjectionEngineer || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">A证人数</text>
|
||||
<text class="organizer_num">{{ orgData?.CertificateANum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">B证人数</text>
|
||||
<text class="organizer_num">{{ orgData?.CertificateBNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">C证人数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ orgData?.CertificateCNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
|
||||
<!-- <view class="row_li u-row-left">
|
||||
<text class="organizer-lab">特种作业人员数量</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
</view>
|
||||
<text class="organizer_num">{{orgData.CertificateBNum}}</text>
|
||||
</view> -->
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">参建人数</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ projectInfoData?.JoinConstructionPersonNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="row_li u-row-left">
|
||||
<text class="organizer-lab">安全工时</text>
|
||||
<text class="organizer_num">13273</text>
|
||||
<text class="organizer_num">{{ projectInfoData?.SafeWorkingHour || 0 }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -70,6 +71,17 @@
|
||||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import { router } from '@/utils';
|
||||
defineProps({
|
||||
orgData: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
projectInfoData: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
});
|
||||
|
||||
const loading = ref(false);
|
||||
</script>
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
<template>
|
||||
<ChartCard :loading="loading" margin="30rpx 0 0 0" padding="20rpx 10rpx 80rpx 10rpx"
|
||||
bg-color="linear-gradient(#1e5ca3, #3094ff)">
|
||||
<view class="project">
|
||||
<view class="project-col" @click="handleSkip">
|
||||
<text class="project-col-num">1024</text>
|
||||
<ChartCard :loading="loading" margin="30rpx 0 0 0" padding="20rpx 10rpx 80rpx 10rpx" bg-color="linear-gradient(#1e5ca3, #3094ff)">
|
||||
<view class="project" @click="router.push('/pages/index/dataSummary/index')">
|
||||
<view class="project-col">
|
||||
<text class="project-col-num">{{ projectInfoData?.BeUnderConstructionNum || 0 }}</text>
|
||||
<text class="project-col-lab u-margin-top-10">在建项目</text>
|
||||
</view>
|
||||
<view class="project-col">
|
||||
<text class="project-col-num">1024</text>
|
||||
<text class="project-col-num">{{ projectInfoData?.ShutdownNum || 0 }}</text>
|
||||
<text class="project-col-lab u-margin-top-10">停工项目</text>
|
||||
</view>
|
||||
<view class="project-col">
|
||||
<text class="project-col-num">1024111</text>
|
||||
<text class="project-col-num">{{ projectInfoData?.JoinConstructionPersonNum || 0 }}</text>
|
||||
<text class="project-col-lab u-margin-top-10">参建人数</text>
|
||||
</view>
|
||||
<view class="project-col">
|
||||
<text class="project-col-num">1024</text>
|
||||
<text class="project-col-num">{{ projectInfoData?.MajorProjectsUnderConstructionNum || 0 }}</text>
|
||||
<text class="project-col-lab u-margin-top-10">在施危大工程</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -23,43 +22,41 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref
|
||||
} from 'vue';
|
||||
import ChartCard from '@/components/chartCard.vue'
|
||||
const loading = ref(false)
|
||||
|
||||
const handleSkip = ()=>{
|
||||
uni.navigateTo({
|
||||
url: `/pages/penetrate/project`
|
||||
})
|
||||
import { ref } from 'vue';
|
||||
import { router } from '@/utils';
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
const loading = ref(false);
|
||||
defineProps({
|
||||
projectInfoData: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.project {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 25%);
|
||||
.project {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 25%);
|
||||
|
||||
&-col {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
&-col {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
&-num {
|
||||
text-align: center;
|
||||
overflow-wrap: break-word;
|
||||
width: 100%;
|
||||
color: #ffffff;
|
||||
font-size: 40rpx;
|
||||
&-num {
|
||||
text-align: center;
|
||||
overflow-wrap: break-word;
|
||||
width: 100%;
|
||||
color: #ffffff;
|
||||
font-size: 40rpx;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&-lab {
|
||||
color: #ffffff;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
&-lab {
|
||||
color: #ffffff;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,78 +1,72 @@
|
||||
<template>
|
||||
<ChartCard margin="0 0 30rpx 0" title="四级风险数据" >
|
||||
<view class="rish-ranking">
|
||||
<qiun-data-charts type="pie" :opts="opts" :canvas2d="false" :chartData="chartData" />
|
||||
</view>
|
||||
<ChartCard margin="0 0 30rpx 0" title="四级风险数据">
|
||||
<view class="rish-ranking" @click="router.push('/pages/index/riskControl/index')">
|
||||
<qiun-data-charts type="pie" :opts="opts" :canvas2d="false" :chartData="chartData" />
|
||||
</view>
|
||||
</ChartCard>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import ChartCard from '@/components/chartCard.vue'
|
||||
import {
|
||||
ref,onMounted
|
||||
} from 'vue';
|
||||
import {
|
||||
onReady, onShow
|
||||
} from '@dcloudio/uni-app'
|
||||
|
||||
const opts = ref({
|
||||
color: ["#EE6666", "#EF893B","#EFCB3B","#3B8CEF"],
|
||||
padding: [5, 5, 5, 5],
|
||||
enableScroll: false,
|
||||
legend: {
|
||||
lineHeight:20,
|
||||
fontSize: 10,
|
||||
itemGap: 20
|
||||
},
|
||||
extra: {
|
||||
pie: {
|
||||
activeOpacity: 0.5,
|
||||
activeRadius: 10,
|
||||
offsetAngle: 0,
|
||||
labelWidth: 15,
|
||||
border: true,
|
||||
borderWidth: 3,
|
||||
borderColor: "#FFFFFF"
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const chartData = ref({})
|
||||
|
||||
const handleTap = (e) => {
|
||||
console.log(e)
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import { ref, watch } from 'vue';
|
||||
import { onReady, onShow } from '@dcloudio/uni-app';
|
||||
import {router} from '@/utils'
|
||||
let props = defineProps({
|
||||
riskClassificationData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
});
|
||||
const opts = ref({
|
||||
color: ['#EE6666', '#EF893B', '#EFCB3B', '#3B8CEF'],
|
||||
padding: [5, 5, 5, 5],
|
||||
enableScroll: false,
|
||||
fontSize: 9,
|
||||
legend: {
|
||||
lineHeight: 20,
|
||||
fontSize: 10,
|
||||
itemGap: 20
|
||||
},
|
||||
extra: {
|
||||
pie: {
|
||||
activeOpacity: 0.5,
|
||||
activeRadius: 10,
|
||||
offsetAngle: 0,
|
||||
labelWidth: 15,
|
||||
border: true,
|
||||
borderWidth: 3,
|
||||
borderColor: '#FFFFFF'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const chartData = ref({});
|
||||
|
||||
onMounted(() => {
|
||||
let res = {
|
||||
series: [{
|
||||
data: [{
|
||||
"name": "重大风险",
|
||||
"value": 50,
|
||||
"labelText": "重大风险:50"
|
||||
}, {
|
||||
"name": "较大风险",
|
||||
"value": 30,
|
||||
"labelText": "较大风险:30"
|
||||
}, {
|
||||
"name": "一般风险",
|
||||
"value": 20,
|
||||
"labelText": "一般风险:20"
|
||||
}, {
|
||||
"name": "低风险",
|
||||
"value": 8,
|
||||
"labelText": "低风险:8"
|
||||
}]
|
||||
}]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
})
|
||||
const handleTap = (e) => {
|
||||
console.log(e);
|
||||
};
|
||||
watch(
|
||||
() => props.riskClassificationData,
|
||||
(newVal) => {
|
||||
if (newVal && newVal.length) {
|
||||
// 只有当数据存在时才赋值
|
||||
let res = {
|
||||
series: [
|
||||
{
|
||||
data: newVal
|
||||
}
|
||||
]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
}
|
||||
},
|
||||
{ deep: true, immediate: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.rish-ranking {
|
||||
width: 100%;
|
||||
height: 480rpx;
|
||||
}
|
||||
.rish-ranking {
|
||||
width: 100%;
|
||||
height: 480rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<ChartCard margin="0 0 30rpx 0" title="领导级安全检查数">
|
||||
<view class="big-crisis">
|
||||
<view class="big-crisis" @click="router.push('/pages/index/leadershipSafety/index')">
|
||||
<qiun-data-charts type="column" :opts="opts" :canvas2d="false" :chartData="chartData" @getIndex="handleTap" />
|
||||
</view>
|
||||
</ChartCard>
|
||||
@@ -8,12 +8,24 @@
|
||||
|
||||
<script setup>
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { ref, watch } from 'vue';
|
||||
import { router } from '@/utils';
|
||||
let props = defineProps({
|
||||
hsseProblemData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
hsseProblemDataNum: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
});
|
||||
const opts = ref({
|
||||
padding: [15, 15, 0, 5],
|
||||
enableScroll: false,
|
||||
legend: {
|
||||
show: false
|
||||
show: true,
|
||||
itemGap:10
|
||||
},
|
||||
xAxis: {
|
||||
disableGrid: true
|
||||
@@ -30,7 +42,8 @@ const opts = ref({
|
||||
type: 'group',
|
||||
width: 20,
|
||||
activeBgColor: '#000000',
|
||||
activeBgOpacity: 0.08
|
||||
activeBgOpacity: 0.08,
|
||||
seriesGap:3
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -40,18 +53,29 @@ const chartData = ref({});
|
||||
const handleTap = (e) => {
|
||||
console.log(e);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
let res = {
|
||||
categories: ['集团级检查数', '企业及分支机构检查数'],
|
||||
series: [
|
||||
{
|
||||
data: [35, 36]
|
||||
}
|
||||
]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
});
|
||||
watch(
|
||||
() => props.hsseProblemData,
|
||||
(newVal) => {
|
||||
if (newVal && newVal.length) {
|
||||
// 只有当数据存在时才赋值
|
||||
let res = {
|
||||
categories: ['集团级检查数', '企业及分支机构检查数'],
|
||||
series: [
|
||||
{
|
||||
name: '总数',
|
||||
data: props.hsseProblemDataNum
|
||||
},
|
||||
{
|
||||
name: '未完成',
|
||||
data: newVal
|
||||
}
|
||||
]
|
||||
};
|
||||
chartData.value = JSON.parse(JSON.stringify(res));
|
||||
}
|
||||
},
|
||||
{ deep: true, immediate: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
@@ -1,49 +1,55 @@
|
||||
<template>
|
||||
|
||||
<ChartCard margin="0 0 30rpx 0" title="机具管理" >
|
||||
<view class="special-equip u-flex u-row-between">
|
||||
<view class="special-equip-box u-flex u-row-center">
|
||||
<view class="special-equip-box-icon"> <u-icon name="ziyuanshiyongtongji" color="#e28ea3" custom-prefix="custom-icon" size="60" ></u-icon></view>
|
||||
<view class="special-equip-box-row u-padding-left-20">
|
||||
<text class="special-equip-box-row-num">9000个</text>
|
||||
<text class="special-equip-box-row-lab">机具在用总数</text>
|
||||
<ChartCard margin="0 0 30rpx 0" title="机具管理">
|
||||
<view class="special-equip u-flex u-row-between" @click="router.push('/pages/index/equipmentManagement/index')">
|
||||
<view class="special-equip-box u-flex u-row-center">
|
||||
<view class="special-equip-box-icon"><u-icon name="ziyuanshiyongtongji" color="#e28ea3" custom-prefix="custom-icon" size="60"></u-icon></view>
|
||||
<view class="special-equip-box-row u-padding-left-20">
|
||||
<text class="special-equip-box-row-num">{{ costEquipmentData?.UseEquipmentNum || 0 }}个</text>
|
||||
<text class="special-equip-box-row-lab">机具在用总数</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="special-equip-box u-flex u-row-center">
|
||||
<view class="special-equip-box-icon"><u-icon name="tezhongshebei" color="#3bdae2" custom-prefix="custom-icon" size="60"></u-icon></view>
|
||||
<view class="special-equip-box-row u-padding-left-20">
|
||||
<text class="special-equip-box-row-num">{{ costEquipmentData?.SpecialEquipmentNum || 0 }}个</text>
|
||||
<text class="special-equip-box-row-lab">特总机具在用总数</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="special-equip-box u-flex u-row-center">
|
||||
<view class="special-equip-box-icon"> <u-icon name="tezhongshebei" color="#3bdae2" custom-prefix="custom-icon" size="60" ></u-icon></view>
|
||||
<view class="special-equip-box-row u-padding-left-20">
|
||||
<text class="special-equip-box-row-num">9000个</text>
|
||||
<text class="special-equip-box-row-lab">特总机具在用总数</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</ChartCard>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import ChartCard from '@/components/chartCard.vue'
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import { router } from '@/utils';
|
||||
defineProps({
|
||||
costEquipmentData: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.special-equip{
|
||||
padding: 20rpx 0;
|
||||
&-box{
|
||||
&-row{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
&-lab{
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin-top: 12rpx;
|
||||
}
|
||||
&-num{
|
||||
color: #333333;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
.special-equip {
|
||||
padding: 20rpx 0;
|
||||
&-box {
|
||||
&-row {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
&-lab {
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin-top: 12rpx;
|
||||
}
|
||||
&-num {
|
||||
color: #333333;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<ChartCard margin="0 0 30rpx 0" title="作业许可数">
|
||||
<view class="work u-flex u-row-between">
|
||||
<view class="work u-flex u-row-between" @click="router.push('/pages/index/workPermit/index')">
|
||||
<view class="work-box u-flex u-row-center">
|
||||
<view class="work-box-icon"><u-icon name="xukezheng" color="#8CEEFF" custom-prefix="custom-icon" size="60"></u-icon></view>
|
||||
<view class="work-box-row u-padding-left-20">
|
||||
<text class="work-box-row-num">9000个</text>
|
||||
<text class="work-box-row-num">{{ licensesData?.LicensesNum || 0 }}个</text>
|
||||
<text class="work-box-row-lab">许可证总数</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -14,7 +14,7 @@
|
||||
<u-icon name="guanbi" color="#ee6666" custom-prefix="custom-icon" size="60"></u-icon>
|
||||
</view>
|
||||
<view class="work-box-row u-padding-left-20">
|
||||
<text class="work-box-row-num">9000个</text>
|
||||
<text class="work-box-row-num">{{ licensesData?.LicensesCloseNum || 0 }}个</text>
|
||||
<text class="work-box-row-lab">高风险作业许可进行中数量</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -24,6 +24,13 @@
|
||||
|
||||
<script setup>
|
||||
import ChartCard from '@/components/chartCard.vue';
|
||||
import {router} from '@/utils'
|
||||
defineProps({
|
||||
licensesData: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
Reference in New Issue
Block a user