2026.3.27

按照群里发的修改意见已修改
This commit is contained in:
2026-03-27 16:01:49 +08:00
parent 925e9f1876
commit 6244c7ac0a
107 changed files with 1508 additions and 679 deletions
+52 -39
View File
@@ -12,61 +12,70 @@
</view>
<u-transition :show="tabIndx === 0" name="slide-right">
<view v-if="tabIndx == 0">
<!-- 顶部定位数据 -->
<ProjectCard />
<view style="margin-top: -60rpx; padding: 0 20rpx 40rpx">
<block v-for="(i, idx) in safeComponent">
<!-- 安全工时 -->
<SafeHoursCard v-if="i === 1" />
<!-- 组织机构人员 -->
<OrganizerCard v-if="i === 2" />
<!-- 教育培训 -->
<EducationCard v-if="i === 3" />
<!-- 安全隐患排查治理 -->
<DefectTreatmentCard v-if="i === 4" />
<!-- 安全费用 -->
<CostCard v-if="i === 5" />
<!-- 安全费用 -->
<SpecialEquipCard v-if="i === 6" />
<!-- 危大工程管控数据 -->
<template v-for="(i, idx) in safeComponent">
<!-- 危大工程数 -->
<BigCrisisCard v-if="i === 7" />
<!-- 风险分级管控 -->
<!-- 四级风险数据 -->
<RiskRankingCard v-if="i === 8" />
<!-- 高风险作业许可 -->
<!-- 作业许可 -->
<WorkCard v-if="i === 9" />
<!-- 应急管理数据 -->
<!-- 培训数据 -->
<EducationCard v-if="i === 3" />
<!-- 领导级安全检查数 -->
<SafetyCard v-if="i === 11" />
<!-- 项目安全检查数据 -->
<DefectTreatmentCard v-if="i === 4" />
<!-- 应急数据 -->
<EmergencyCard v-if="i === 10" />
</block>
<!-- 机具管理 -->
<SpecialEquipCard v-if="i === 6" />
<!-- 企业及分支机构人数 -->
<OrganizerCard v-if="i === 2" />
<!-- 安全工时 -->
<!-- <SafeHoursCard v-if="i === 1" /> -->
<!-- 安全费用 -->
<!-- <CostCard v-if="i === 5" /> -->
</template>
</view>
</view>
</u-transition>
<u-transition :show="tabIndx === 1" name="slide-right">
<view v-if="tabIndx == 1">
<!-- 组织机构人 -->
<!-- 企业和分支机构人 -->
<OrgPersonCard />
<!-- 星级标准化工地建设 -->
<StarLevelCard />
<!-- 教育培训 -->
<!-- 人员报验培训及交底数 -->
<EducationCard1 />
<!-- 计量器具数据 -->
<!-- 星级标准化工地建设 -->
<!-- <StarLevelCard /> -->
<!-- 计量器具数 -->
<MeasuringCard />
<!-- 报验记录 -->
<InspectionRecord />
<!-- 工程划分 -->
<!-- 设备材料及机具报验数 -->
<EquipmentCard />
<!-- 工程划分 -->
<ProjectItem />
<!-- 优质工程 -->
<HighQuality />
<!-- QC活动 -->
<QCActivity />
<!-- 施工方案 -->
<ConstructionScheme />
<!-- 图纸会审/技术交底 -->
<ReviewAndBriefing />
<!-- 安全隐患排查治理 -->
<QmsInspect />
<!-- 质量验收数据 -->
<!-- 领导级质量检查数 -->
<SafetyCards />
<!-- 项目质量检查数 -->
<QualityCard />
<!-- 控制点验收数 -->
<AcceptanceData />
<!-- 焊接数据 -->
<!-- 优质工程数 -->
<HighQuality />
<!-- QC活动数 -->
<QCActivity />
<!-- 施工方案数 -->
<ConstructionScheme />
<!-- 图纸会审及交底数 -->
<ReviewAndBriefing />
<!-- 焊接数 -->
<WeldingData />
<!-- 报验记录 -->
<!-- <InspectionRecord /> -->
</view>
</u-transition>
</view>
@@ -88,12 +97,14 @@ import SpecialEquipCard from './safe/specialEquipCard.vue';
import BigCrisisCard from './safe/bigCrisisCard.vue';
import RiskRankingCard from './safe/riskRankingCard.vue';
import WorkCard from './safe/workCard.vue';
import SafetyCard from './safe/safetyCard.vue';
import EmergencyCard from './safe/emergencyCard.vue';
// 质量
import OrgPersonCard from './qms/orgPersonCard.vue';
import StarLevelCard from './qms/starLevelCard.vue';
import EducationCard1 from './qms/educationCard.vue';
import MeasuringCard from './qms/measuringCard.vue';
import EquipmentCard from './qms/equipmentCard.vue';
import InspectionRecord from './qms/inspectionRecord.vue';
import ProjectItem from './qms/projectItemCard.vue';
import HighQuality from './qms/highQuality.vue';
@@ -101,10 +112,12 @@ import QCActivity from './qms/QCActivity.vue';
import ConstructionScheme from './qms/constructionScheme.vue';
import ReviewAndBriefing from './qms/reviewAndBriefing.vue';
import QmsInspect from './qms/qmsInspect.vue';
import QualityCard from './qms/qualityCard.vue';
import AcceptanceData from './qms/acceptanceData.vue';
import WeldingData from './qms/weldingData.vue';
import SafetyCards from './qms/safetyCard.vue';
const safeComponent = ref([2, 1, 3, 4, 5, 6, 7, 8, 9, 10]);
const safeComponent = ref([2, 7, 8, 9, 3, 11, 4, 10, 6, 1, 5]);
const tabIndx = ref(0);
+2 -2
View File
@@ -1,5 +1,5 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="QC活动">
<ChartCard margin="30rpx 0 0 0" title="QC活动">
<view class="inspection ">
<qiun-data-charts type="column" :canvas2d="false" :opts="opts" :chartData="chartData" @getIndex="handleTap" />
</view>
@@ -45,7 +45,7 @@
onMounted(() => {
let res = {
categories: ["省部级奖\n项", "集团级奖\n项", "企业级奖\n项"],
categories: ["省部级奖数量", "集团级奖项数量", "企业级奖项数量"],
series: [{
color: "#27c9cb",
name: '',
+2 -2
View File
@@ -1,10 +1,10 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="质量验收数">
<ChartCard margin="30rpx 0 0 0" title="控制点验收数">
<view class="ys">
<qiun-data-charts type="mix" :canvas2d="false" :opts="opts" :chartData="chartData" @getIndex="handleTap" />
</view>
<view class="ys u-margin-top-30">
<qiun-data-charts type="mix" :canvas2d="false" :opts="opts" :chartData="chartData" @getIndex="handleTap" />
<qiun-data-charts type="mix" :canvas2d="false" :opts="opts" :chartData="chartData1" @getIndex="handleTap" />
</view>
</ChartCard>
</template>
+48 -50
View File
@@ -1,66 +1,64 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="施工方案">
<view class="inspection ">
<ChartCard margin="30rpx 0 0 0" title="施工方案">
<view class="inspection">
<qiun-data-charts type="column" :canvas2d="false" :opts="opts" :chartData="chartData" @getIndex="handleTap" />
</view>
</ChartCard>
</template>
<script setup>
import ChartCard from '@/components/chartCard.vue'
import {
ref,onMounted
} from 'vue';
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,
},
yAxis: {
showTitle: true,
data: [{
title: "单位:个"
}]
},
extra: {
column: {
type: "group",
width: 30,
activeBgColor: "#000000",
activeBgOpacity: 0.08,
const opts = ref({
padding: [15, 15, 0, 5],
enableScroll: false,
legend: { show: false },
xAxis: {
disableGrid: true
},
yAxis: {
showTitle: true,
data: [
{
title: '单位:个'
}
]
},
extra: {
column: {
type: 'group',
width: 30,
activeBgColor: '#000000',
activeBgOpacity: 0.08
}
})
const chartData = ref({})
const handleTap = (e) => {
console.log(e)
}
});
const chartData = ref({});
onMounted(() => {
let res = {
categories: ["总数", "项目审批数", "企业审批数"],
series: [{
color: "#5c7fcb",
name: '',
data: [100, 542, 685]
},
]
};
chartData.value = JSON.parse(JSON.stringify(res));
})
const handleTap = (e) => {
console.log(e);
};
onMounted(() => {
let res = {
categories: ['方案总数', '企业审批总数', '项目审批总数'],
series: [
{
color: '#5c7fcb',
name: '',
data: [100, 542, 685]
}
]
};
chartData.value = JSON.parse(JSON.stringify(res));
});
</script>
<style lang="scss">
.inspection {
width: 100%;
height: 300rpx;
}
</style>
.inspection {
width: 100%;
height: 300rpx;
}
</style>
+24 -18
View File
@@ -1,12 +1,16 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="教育培训">
<ChartCard margin="30rpx 0 0 0" title="人员报验、培训及交底数">
<view class="education u-flex">
<view class="education-box">
<view class="education-box-lab">质量培训(人次)</view>
<view class="education-box-lab">人员报验数</view>
<view class="education-box-num u-margin-top-20">800</view>
</view>
<view class="education-box">
<view class="education-box-lab">技术质量交底(人次)</view>
<view class="education-box-lab">培训人次</view>
<view class="education-box-num u-margin-top-20">800</view>
</view>
<view class="education-box">
<view class="education-box-lab">技术交底人次</view>
<view class="education-box-num u-margin-top-20">800</view>
</view>
</view>
@@ -14,23 +18,25 @@
</template>
<script setup>
import ChartCard from '@/components/chartCard.vue'
import ChartCard from '@/components/chartCard.vue';
</script>
<style lang="scss" scoped>
.education{
width: 100%;
&-box{
flex: 1;
&-lab{
color: #999999;
font-size: 24rpx;
}
&-num{
color: #333333;
font-size: 28rpx;
}
.education {
width: 100%;
&-box {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
&-lab {
color: #999999;
font-size: 24rpx;
}
&-num {
color: #333333;
font-size: 28rpx;
}
}
</style>
}
</style>
+49
View File
@@ -0,0 +1,49 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="设备材料及机具报验数">
<view class="measuring u-flex">
<view class="measuring-box u-flex u-row-center">
<view class="measuring-box-icon"><u-icon name="jiliangqijujianguan" color="#e28ea3" custom-prefix="custom-icon" size="60"></u-icon></view>
<view class="measuring-box-row u-padding-left-20">
<text class="measuring-box-row-num">900</text>
<text class="measuring-box-row-lab">设备材料报验数</text>
</view>
</view>
<view class="measuring-box u-flex u-row-center">
<view class="measuring-box-icon"><u-icon name="hege" color="#3bdae2" custom-prefix="custom-icon" size="60"></u-icon></view>
<view class="measuring-box-row u-padding-left-20">
<text class="measuring-box-row-num">9000</text>
<text class="measuring-box-row-lab">机具报验数</text>
</view>
</view>
</view>
</ChartCard>
</template>
<script setup>
import ChartCard from '@/components/chartCard.vue';
</script>
<style lang="scss">
.measuring {
padding: 20rpx 0;
&-box {
flex: 1;
&-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>
+1 -1
View File
@@ -1,5 +1,5 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="优质工程">
<ChartCard margin="30rpx 0 0 0" title="优质工程">
<view class="inspection ">
<qiun-data-charts type="column" :canvas2d="false" :opts="opts" :chartData="chartData" @getIndex="handleTap" />
</view>
+24 -27
View File
@@ -1,20 +1,19 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="计量器具数据">
<ChartCard margin="30rpx 0 0 0" title="计量器具数">
<view class="measuring u-flex">
<view class="measuring-box u-flex u-row-center">
<view class="measuring-box-icon"> <u-icon name="jiliangqijujianguan" color="#e28ea3" custom-prefix="custom-icon" size="60" ></u-icon></view>
<view class="measuring-box-icon"><u-icon name="jiliangqijujianguan" color="#e28ea3" custom-prefix="custom-icon" size="60"></u-icon></view>
<view class="measuring-box-row u-padding-left-20">
<text class="measuring-box-row-num">900</text>
<text class="measuring-box-row-lab">计量器具</text>
<text class="measuring-box-row-lab">计量器具</text>
</view>
</view>
<view class="measuring-box u-flex u-row-center">
<view class="measuring-box-icon"> <u-icon name="hege" color="#3bdae2" custom-prefix="custom-icon" size="60" ></u-icon></view>
<view class="measuring-box-icon"><u-icon name="hege" color="#3bdae2" custom-prefix="custom-icon" size="60"></u-icon></view>
<view class="measuring-box-row u-padding-left-20">
<text class="measuring-box-row-num">9000</text>
<text class="measuring-box-row-lab">验合格</text>
<text class="measuring-box-row-lab">验合格</text>
</view>
</view>
</view>
@@ -22,29 +21,27 @@
</template>
<script setup>
import ChartCard from '@/components/chartCard.vue'
import ChartCard from '@/components/chartCard.vue';
</script>
<style lang="scss">
.measuring{
padding: 20rpx 0;
&-box{
flex: 1;
&-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;
}
.measuring {
padding: 20rpx 0;
&-box {
flex: 1;
&-row {
display: flex;
flex-direction: column;
&-lab {
font-size: 24rpx;
color: #999999;
margin-top: 6rpx;
}
&-num {
color: #333333;
font-size: 28rpx;
}
}
}
</style>
}
</style>
+32 -40
View File
@@ -1,70 +1,62 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="组织机构人">
<ChartCard margin="30rpx 0 0 0" title="企业和分支机构人">
<view class="org-person">
<view class="org-person-row">
<!-- <view class="org-person-row">
<view class="org-person-row_lab">
集团总数
</view>
<view class="org-person-row_num">9521</view>
</view>
</view> -->
<view class="u-flex">
<view class="org-person-row">
<view class="org-person-row_lab">
所企业总部人数
</view>
<view class="org-person-row_lab">企业质量管理人数</view>
<view class="org-person-row_num">9521</view>
</view>
<view class="org-person-row">
<view class="org-person-row_lab">
分支机构人数
</view>
<view class="org-person-row_lab">项目质量管理人数</view>
<view class="org-person-row_num">9521</view>
</view>
</view>
<view class="u-flex">
<view class="org-person-row">
<view class="org-person-row_lab">
质量管理人数
</view>
<view class="org-person-row_lab">分支机构质量管理人数</view>
<view class="org-person-row_num">9521</view>
</view>
<view class="org-person-row">
<view class="org-person-row_lab">
特种设备质保体系
</view>
<!-- <view class="org-person-row">
<view class="org-person-row_lab">特种设备质保体系</view>
<view class="org-person-row_num">9521</view>
</view>
</view> -->
</view>
</view>
</ChartCard>
</template>
<script setup>
import ChartCard from '@/components/chartCard.vue'
import ChartCard from '@/components/chartCard.vue';
</script>
<style lang="scss">
.org-person{
&-row{
flex: 1;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: flex-end;
padding: 20rpx 0;
&_lab{
width: 200rpx;
font-size: 24rpx;
color: #999999;
line-height: 1;
}
&_num{
width: calc(100% - 200rpx);
line-height: 1;
font-size: 28rpx;
color: #333333;
padding-left: 40rpx;
}
.org-person {
&-row {
flex: 1;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: flex-end;
padding: 20rpx 0;
&_lab {
// width: 200rpx;
font-size: 24rpx;
color: #999999;
line-height: 1;
}
&_num {
// width: calc(100% - 200rpx);
line-height: 1;
font-size: 28rpx;
color: #333333;
padding-left: 40rpx;
}
}
</style>
}
</style>
+1 -1
View File
@@ -1,5 +1,5 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="工程划分">
<ChartCard margin="30rpx 0 0 0" title="工程划分">
<view class="inspection ">
<qiun-data-charts type="column" :canvas2d="false" :opts="opts" :chartData="chartData" @getIndex="handleTap" />
</view>
+58 -63
View File
@@ -1,87 +1,82 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="安全隐患排查治理">
<ChartCard margin="30rpx 0 0 0" title="领导级质量检查数">
<view class="defect">
<u-subsection :list="list" :current="current" @change="handleChange"></u-subsection>
<view class="defect-main u-flex u-row-between u-margin-top-20">
<!-- <u-subsection :list="list" :current="current" @change="handleChange"></u-subsection> -->
<view class="defect-main u-flex u-row-between">
<view class="defect-box gb-all">
<text class="defect-box-lab">质量问题</text>
<text class="defect-box-num u-margin-top-20">4567</text>
<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-lab">企业检查数</text>
<text class="defect-box-num u-margin-top-20">20</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>
<text class="defect-box-lab">分支机构检查数</text>
<text class="defect-box-num u-margin-top-20">6</text>
</view>
</view>
</view>
</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';
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: calc((100% - 40rpx) / 3);
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
&-lab {
font-size: 24rpx;
color: #ffffff;
}
&-box {
width: calc((100% - 40rpx) / 3);
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);
}
</style>
.gb-rectified {
background: linear-gradient(to top right, #2488fa, #79baff);
}
</style>
+74
View File
@@ -0,0 +1,74 @@
<template>
<ChartCard margin="30rpx 0 0 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-box gb-rectified">
<text class="defect-box-lab">项目质量检查数</text>
<text class="defect-box-num u-margin-top-20">20</text>
</view>
</view>
</view>
</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 = () => {};
</script>
<style lang="scss">
.defect {
&-main {
height: 120rpx;
}
&-box {
width:100%;
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;
}
}
}
.gb-all {
background: linear-gradient(to top right, #9e9e9e, #dcdcdc);
}
.gb-not-rectified {
background: linear-gradient(to top right, #ffd626, #ff9f7d);
}
.gb-rectified {
background: linear-gradient(to top right, #2488fa, #79baff);
}
</style>
+3 -3
View File
@@ -1,12 +1,12 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="图纸会审/技术交底">
<ChartCard margin="30rpx 0 0 0" title="图纸会审交底">
<view class="education u-flex">
<view class="education-box">
<view class="education-box-lab">图纸会审()</view>
<view class="education-box-lab">图纸会审总数</view>
<view class="education-box-num u-margin-top-20">800</view>
</view>
<view class="education-box">
<view class="education-box-lab">设计交底()</view>
<view class="education-box-lab">设计交底总数</view>
<view class="education-box-num u-margin-top-20">800</view>
</view>
</view>
+62
View File
@@ -0,0 +1,62 @@
<template>
<ChartCard margin="30rpx 0 30rpx 0" title="领导级安全检查数">
<view class="big-crisis">
<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
},
yAxis: {
data: [
{
min: 0
}
]
},
extra: {
column: {
type: 'group',
width: 20,
activeBgColor: '#000000',
activeBgOpacity: 0.08
}
}
});
const chartData = ref({});
const handleTap = (e) => {
console.log(e);
};
onMounted(() => {
let res = {
categories: ['集团检查数', '企业检查数', '分支机构检查数'],
series: [
{
data: [35, 36,50]
}
]
};
chartData.value = JSON.parse(JSON.stringify(res));
});
</script>
<style lang="scss">
.big-crisis {
width: 100%;
height: 400rpx;
}
</style>
+47 -63
View File
@@ -1,43 +1,27 @@
<template>
<ChartCard margin="30rpx 0 0 0" title="焊接数">
<ChartCard margin="30rpx 0 0 0" title="焊接数">
<view class="weld">
<view class="weld-row u-padding-20">
<view class="weld-row-col u-flex">
<view class="weld-row-col_lab">
焊工总数
</view>
<view class="weld-row-col_num u-padding-left-18">
945281
</view>
<view class="weld-row-col_lab">在岗焊工总人数</view>
<view class="weld-row-col_num u-padding-left-18">945281</view>
</view>
</view>
<view class="weld-row1 u-margin-top-20">
<view class="weld-row1-col1 u-flex-col">
<view class="weld-row1-col1_lab">
总达因数
</view>
<view class="weld-row1-col1_num">
945281
</view>
<view class="weld-row1-col1_lab">总达因数</view>
<view class="weld-row1-col1_num">945281</view>
</view>
<view class="weld-row1-col1 u-flex-col">
<view class="weld-row1-col1_lab">
完成达因数
</view>
<view class="weld-row1-col1_num">
945281
</view>
<view class="weld-row1-col1_lab">完成达因数</view>
<view class="weld-row1-col1_num">945281</view>
</view>
<view class="weld-row1-col1 u-flex-col">
<view class="weld-row1-col1_lab">
总片数
</view>
<view class="weld-row1-col1_num">
945281
</view>
<view class="weld-row1-col1_lab">总拍片数</view>
<view class="weld-row1-col1_num">945281</view>
</view>
</view>
<view class="weld-row2 u-margin-top-20">
<!-- <view class="weld-row2 u-margin-top-20">
<view class="weld-row1-col1 u-flex-col">
<view class="weld-row1-col1_lab">
合格片数
@@ -54,53 +38,53 @@
33.00%
</view>
</view>
</view>
</view> -->
</view>
</ChartCard>
</template>
<script setup>
import ChartCard from '@/components/chartCard.vue'
import ChartCard from '@/components/chartCard.vue';
</script>
<style lang="scss">
.weld {
&-row {
&-col{
&_lab{
font-size: 28rpx;
color: #999999;
}
&_num{
font-size: 32rpx;
color: #333333;
}
.weld {
&-row {
&-col {
&_lab {
font-size: 28rpx;
color: #999999;
}
background-color: #F7FBFE;
}
&-row1{
display: grid;
grid-template-columns: repeat(3, calc((100% - 60rpx) / 3));
grid-column-gap: 30rpx;
&-col1{
padding: 20rpx;
background-color: #F7FBFE;
&_lab{
text-align: center;
font-size: 28rpx;
color: #999999;
}
&_num{
text-align: center;
font-size: 32rpx;
color: #333333;
}
&_num {
font-size: 32rpx;
color: #333333;
}
}
&-row2{
display: grid;
grid-template-columns: repeat(2, calc((100% - 30rpx) / 2));
grid-column-gap: 30rpx;
background-color: #f7fbfe;
}
&-row1 {
display: grid;
grid-template-columns: repeat(3, calc((100% - 60rpx) / 3));
grid-column-gap: 30rpx;
&-col1 {
padding: 20rpx;
background-color: #f7fbfe;
&_lab {
text-align: center;
font-size: 28rpx;
color: #999999;
}
&_num {
text-align: center;
font-size: 32rpx;
color: #333333;
}
}
}
</style>
&-row2 {
display: grid;
grid-template-columns: repeat(2, calc((100% - 30rpx) / 2));
grid-column-gap: 30rpx;
}
}
</style>
+3 -3
View File
@@ -1,5 +1,5 @@
<template>
<ChartCard margin="0 0 30rpx 0" title="危大工程管控数据">
<ChartCard margin="0 0 30rpx 0" title="危大工程">
<view class="big-crisis">
<qiun-data-charts type="column" :opts="opts" :canvas2d="false" :chartData="chartData" @getIndex="handleTap" />
</view>
@@ -44,9 +44,9 @@
onMounted(() => {
let res = {
categories: ["未开始", "进行中", "已完成", "培训人次", "作业人次"],
categories: ["已完成个数", "进行中个数", "作业人数", "培训人次"],
series: [{
data: [35, 36, 31, 33, 13]
data: [35, 36, 31, 33]
}]
};
chartData.value = JSON.parse(JSON.stringify(res));
+10 -9
View File
@@ -1,25 +1,25 @@
<template>
<ChartCard margin="0 0 30rpx 0" title="安全隐患排查治理">
<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 u-margin-top-20">
<view class="defect-box gb-all">
<!-- <u-subsection :list="list" :current="current" @change="handleChange"></u-subsection> -->
<view class="defect-main u-flex u-row-between">
<!-- <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> -->
<view class="defect-box gb-rectified">
<text class="defect-box-lab">整改闭环</text>
<text class="defect-box-lab">项目检查数</text>
<text class="defect-box-num u-margin-top-20">20</text>
</view>
<view class="defect-box gb-not-rectified">
<!-- <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>
<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>
</view> -->
</view>
</view>
</ChartCard>
@@ -56,7 +56,8 @@
}
&-box {
width: calc((100% - 40rpx) / 4);
width: 100%;
// width: calc((100% - 40rpx) / 4);
height: 100%;
display: flex;
flex-direction: column;
+2 -2
View File
@@ -1,5 +1,5 @@
<template>
<ChartCard margin="0 0 30rpx 0" title="教育培训">
<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>
@@ -49,7 +49,7 @@ const handleTap = (e) => {
onMounted(() => {
let res = {
categories: ['专项培训', '特种作业\n培训', '三级安全\n教育培训', '安全技术\n交底'],
categories: ['专项培训', '三级安全教育\n培训人次', '特种作业\n培训人次', '安全技术\n交底人次'],
series: [
{
data: [302265, 70770, 399175, 14851]
+53 -52
View File
@@ -1,5 +1,5 @@
<template>
<ChartCard margin="0 0 30rpx 0" title="应急管理数据" >
<ChartCard margin="0 0 30rpx 0" title="应急数据">
<view class="emergencyCard">
<qiun-data-charts type="column" :opts="opts" :canvas2d="false" :chartData="chartData" @getIndex="handleTap" />
</view>
@@ -7,64 +7,65 @@
</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,
rotateLabel: true,
fontSize: 10,
rotateAngle: -30
},
yAxis: {
data: [{
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,
rotateLabel: true,
fontSize: 10,
rotateAngle: -30
},
yAxis: {
data: [
{
min: 0
}]
},
extra: {
column: {
type: "group",
width: 20,
activeBgColor: "#000000",
activeBgOpacity: 0.08
}
]
},
extra: {
column: {
type: 'group',
width: 20,
activeBgColor: '#000000',
activeBgOpacity: 0.08
}
})
const chartData = ref({})
const handleTap = (e) => {
console.log(e)
}
onMounted(() => {
let res = {
categories: ["应急预案", "专项预案", "现场处置\n预案", "演练次数", "参演人数"],
series: [{
});
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)
}
};
chartData.value = JSON.parse(JSON.stringify(res));
})
],
formatter: function (value, index, series, opts) {
console.log(value);
console.log(index);
console.log(series);
console.log(opts);
}
};
chartData.value = JSON.parse(JSON.stringify(res));
});
</script>
<style lang="scss">
.emergencyCard {
width: 100%;
height: 400rpx;
}
</style>
.emergencyCard {
width: 100%;
height: 400rpx;
}
</style>
+95 -76
View File
@@ -1,89 +1,108 @@
<template>
<ChartCard :loading="loading" margin="0 0 30rpx 0" title="组织机构人员">
<ChartCard :loading="loading" margin="0 0 30rpx 0">
<view class="organizer">
<view class="row u-flex u-padding-20 u-margin-bottom-20">
<view class="row_li u-flex u-row-center"><text class="organizer-lab">集团总人数</text><text
class="organizer_num">13273</text></view>
<view class="row_li u-flex u-row-center"><text class="organizer-lab">总监</text><text
class="organizer_num">13273</text></view>
<view class="row_li u-flex u-row-center"><text class="organizer-lab">专职</text><text
class="organizer_num">13273</text></view>
<view class="row_li u-flex u-row-center"><text class="organizer-lab">企业</text><text
class="organizer_num">13273</text></view>
</view>
<view class="organizer-tit">分支机构</view>
<view class="row u-flex u-padding-20 u-margin-bottom-20">
<view class="row_li u-flex u-row-center"><text class="organizer-lab">总监</text><text
class="organizer_num">13273</text></view>
<view class="row_li u-flex u-row-center"><text class="organizer-lab">专职</text><text
class="organizer_num">13273</text></view>
</view>
<view class="organizer-tit">注安师</view>
<view class="row u-flex u-padding-20 u-margin-bottom-20">
<view class="row_li u-flex u-row-center"><text class="organizer-lab">在岗职业</text><text
class="organizer_num">13273</text></view>
<view class="organizer-tit">企业及分支机构人数</view>
<view class="row u-flex u-flex-wrap u-padding-20 u-margin-bottom-20">
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">企业总监</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">企业专职人员数</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">分支机构总监数</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">分支机构专职人员数</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">A证人数</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">B证人数</text>
<text class="organizer_num">13273</text>
</view>
</view>
<view class="organizer-tit">项目人数</view>
<view class="row u-flex u-padding-20 u-margin-bottom-20">
<view class="row_li u-flex u-row-center"><text class="organizer-lab">总监</text><text
class="organizer_num">13273</text></view>
<view class="row_li u-flex u-row-center"><text class="organizer-lab">专职</text><text
class="organizer_num">13273</text></view>
<view class="row_li u-flex u-row-center"><text class="organizer-lab">安全监护</text><text
class="organizer_num">13273</text></view>
</view>
<view class="organizer-tit">三类人员</view>
<view class="row u-flex u-padding-20">
<view class="row_li u-flex u-row-center"><text class="organizer-lab">A证</text><text
class="organizer_num">13273</text></view>
<view class="row_li u-flex u-row-center"><text class="organizer-lab">B证</text><text
class="organizer_num">13273</text></view>
<view class="row_li u-flex u-row-center"><text class="organizer-lab">C证</text><text
class="organizer_num">13273</text></view>
<view class="row u-flex u-flex-wrap u-padding-20 u-margin-bottom-20">
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">项目总监</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">专职安全管理人员(含分包)</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">安全监护人数</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">注安师数量</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">C证人数</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">特种作业人员数量</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">参建人数</text>
<text class="organizer_num">13273</text>
</view>
<view class="row_li u-flex u-row-center">
<text class="organizer-lab">安全工时</text>
<text class="organizer_num">13273</text>
</view>
</view>
</view>
</ChartCard>
</template>
<script setup>
import {ref} from 'vue'
import ChartCard from '@/components/chartCard.vue'
const loading = ref(false)
import { ref } from 'vue';
import ChartCard from '@/components/chartCard.vue';
const loading = ref(false);
</script>
<style lang="scss">
.organizer {
&-tit {
color: #2573cb;
width: 100%;
font-size: 28rpx;
background-color: #F7FBFE;
padding: 12rpx 20rpx 0;
}
&-lab {
color: #999999;
font-size: 24rpx;
}
&_num {
color: #333333;
font-size: 28rpx;
margin-top: 16rpx;
}
.row {
background-color: #F7FBFE;
&_li {
flex: 1;
display: flex;
flex-direction: column;
}
}
<style lang="scss" scoped>
.organizer {
width: 100%;
&-tit {
color: #2573cb;
width: 100%;
font-size: 28rpx;
background-color: #f7fbfe;
}
</style>
&-lab {
color: #999999;
font-size: 24rpx;
}
&_num {
color: #333333;
font-size: 28rpx;
margin-top: 4rpx;
}
.row {
background-color: #f7fbfe;
gap: 20rpx 0;
&_li {
width: 50%;
display: flex;
flex-direction: column;
}
}
}
</style>
+1 -1
View File
@@ -1,5 +1,5 @@
<template>
<ChartCard margin="0 0 30rpx 0" title="风险分级管控" >
<ChartCard margin="0 0 30rpx 0" title="四级风险数据" >
<view class="rish-ranking">
<qiun-data-charts type="pie" :opts="opts" :canvas2d="false" :chartData="chartData" />
</view>
+62
View File
@@ -0,0 +1,62 @@
<template>
<ChartCard margin="0 0 30rpx 0" title="领导级安全检查数">
<view class="big-crisis">
<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
},
yAxis: {
data: [
{
min: 0
}
]
},
extra: {
column: {
type: 'group',
width: 20,
activeBgColor: '#000000',
activeBgOpacity: 0.08
}
}
});
const chartData = ref({});
const handleTap = (e) => {
console.log(e);
};
onMounted(() => {
let res = {
categories: ['集团级检查数', '企业及分支机构检查数'],
series: [
{
data: [35, 36]
}
]
};
chartData.value = JSON.parse(JSON.stringify(res));
});
</script>
<style lang="scss">
.big-crisis {
width: 100%;
height: 400rpx;
}
</style>
+3 -3
View File
@@ -1,12 +1,12 @@
<template>
<ChartCard margin="0 0 30rpx 0" title="施工机具设备" >
<ChartCard margin="0 0 30rpx 0" title="机具管理" >
<view class="special-equip u-flex">
<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>
<text class="special-equip-box-row-lab">机具在用</text>
</view>
</view>
@@ -14,7 +14,7 @@
<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>
<text class="special-equip-box-row-lab">总机具在用总数</text>
</view>
</view>
</view>
+39 -37
View File
@@ -1,49 +1,51 @@
<template>
<ChartCard margin="0 0 30rpx 0" title="高风险作业许可" >
<view class="work u-flex">
<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-lab">许可</text>
<ChartCard margin="0 0 30rpx 0" title="作业许可">
<view class="work u-flex">
<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-lab">许可证总数</text>
</view>
</view>
<view class="work-box u-flex u-row-center">
<view class="work-box-icon">
<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-lab">高风险作业许可进行中数量</text>
</view>
</view>
</view>
<view class="work-box u-flex u-row-center">
<view class="work-box-icon"> <u-icon name="guanbi" color="#FFEB3B" 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-lab">关闭</text>
</view>
</view>
</view>
</ChartCard>
</template>
<script setup>
import ChartCard from '@/components/chartCard.vue'
import ChartCard from '@/components/chartCard.vue';
</script>
<style lang="scss">
.work{
padding: 20rpx 0;
&-box{
flex: 1;
&-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 lang="scss" scoped>
.work {
padding: 20rpx 0;
&-box {
flex: 1;
height: 100rpx;
&-row {
height: 100rpx;
display: flex;
flex-direction: column;
&-lab {
font-size: 24rpx;
color: #999999;
margin-top: 12rpx;
}
&-num {
color: #333333;
font-size: 28rpx;
}
}
}
</style>
}
</style>