Files
CNCEC_APP/pages/index/board/index.vue
T
2026-08-17 11:01:21 +08:00

244 lines
10 KiB
Vue

<template>
<view class="custom-wrap u-padding-30">
<view class="custom-tabs u-flex box-shadow">
<view :class="['custom-tabs-tab', tabIndx ? '' : 'custom-tabs-tab_active']" @click="handleChangeTab(0)">
<u-icon name="anquan" custom-prefix="custom-icon" size="80" />
<text class="u-margin-top-20">安全生产数据</text>
</view>
<view :class="['custom-tabs-tab', tabIndx ? 'custom-tabs-tab_active' : '']" @click="handleChangeTab(1)">
<u-icon name="zhiliang" custom-prefix="custom-icon" size="80" />
<text class="u-margin-top-20">质量焊接数据</text>
</view>
</view>
<u-transition :show="tabIndx === 0" name="slide-right">
<view v-if="tabIndx == 0">
<!-- 顶部定位数据 -->
<ProjectCard :projectInfoData="safetySignboardData?.ProjectInfo" />
<view style="margin-top: -60rpx; padding: 0 20rpx 40rpx">
<template>
<!-- 企业及分支机构人数 -->
<OrganizerCard :orgData="safetySignboardData?.Org" :projectInfoData="safetySignboardData.ProjectInfo" />
<!-- 危大工程数 -->
<BigCrisisCard :dangerousProjectData="dangerousProjectData" />
<!-- 四级风险数据 -->
<RiskRankingCard :riskClassificationData="riskClassificationData" />
<!-- 作业许可数 -->
<WorkCard :licensesData="safetySignboardData?.Licenses" />
<!-- 培训数据 -->
<EducationCard :educationData="educationData" />
<!-- 领导级安全检查数 -->
<SafetyCard :hsseProblemData="hsseProblemData" :hsseProblemDataNum="hsseProblemDataNum" />
<!-- 项目安全检查数据 -->
<DefectTreatmentCard :hsseProblem="safetySignboardData?.HsseProblem" />
<!-- 应急数据 -->
<EmergencyCard :emergencyData="emergencyData" />
<!-- 机具管理 -->
<SpecialEquipCard :costEquipmentData="safetySignboardData?.CostEquipment" />
<!-- 安全工时 -->
<!-- <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 :qmsOrgData="qualityWeldingData?.QmsOrg" />
<!-- 人员报验培训及交底数 -->
<EducationCard1 :qmsEducation="qualityWeldingData?.QmsEducation" />
<!-- 星级标准化工地建设 -->
<!-- <StarLevelCard /> -->
<!-- 计量器具数 -->
<MeasuringCard :qmsMeasuringInstruments="qualityWeldingData.QmsMeasuringInstruments" />
<!-- 设备材料及机具报验数 -->
<EquipmentCard :qmsInspectionData="qualityWeldingData?.QmsInspection" />
<!-- 工程划分数 -->
<ProjectItem :projectDivisionData="projectDivisionData" />
<!-- 领导级质量检查数 -->
<SafetyCards :qualityProblemData="qualityProblemData" :qualityProblemDatas="qualityProblemDatas" />
<!-- 项目质量检查数 -->
<QualityCard :qualityProblemData="qualityWeldingData?.QualityProblem" />
<!-- 控制点验收数 -->
<AcceptanceData :controlPointAcceptanceData="controlPointAcceptanceData" />
<!-- 优质工程数 -->
<HighQuality :awardStatsData="awardStatsData" />
<!-- QC活动数 -->
<QCActivity :awardStatsData="awardStatsData" />
<!-- 施工方案数 -->
<ConstructionScheme :constructSolutionData="constructSolutionData" />
<!-- 图纸会审及交底数 -->
<ReviewAndBriefing :comprehensiveData="qualityWeldingData?.Comprehensive" />
<!-- 焊接数 -->
<WeldingData :hjData="qualityWeldingData?.HjData" />
<!-- 报验记录 -->
<!-- <InspectionRecord /> -->
</view>
</u-transition>
</view>
</template>
<script setup>
import { defineAsyncComponent, ref, onMounted } from 'vue';
import { getSafetySignboard, getQualityWelding } from '@/api/moduleApi/index.js';
import { isLoggedIn } from '@/utils';
import { useUserStore } from '@/store';
/* 加载组件
-------------------------------------------------------------*/
// 安全
import ProjectCard from './safe/projectCard.vue';
import SafeHoursCard from './safe/safeHoursCard.vue';
import OrganizerCard from './safe/organizerCard.vue';
import EducationCard from './safe/educationCard.vue';
import DefectTreatmentCard from './safe/defectTreatmentCard.vue';
import CostCard from './safe/costCard.vue';
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';
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';
let userStore = useUserStore();
const safeComponent = ref([2, 7, 8, 9, 3, 11, 4, 10, 6, 1, 5]);
const tabIndx = ref(0);
const handleChangeTab = (idx) => {
tabIndx.value = idx;
};
//总数据
let safetySignboardData = ref({});
// 危大工程数据
let dangerousProjectData = ref([]);
// 四级风险数据
let riskClassificationData = ref([]);
// 培训数据
let educationData = ref([]);
// 领导级安全检查数
let hsseProblemData = ref([]);
let hsseProblemDataNum=ref([])
// 应急数据
let emergencyData = ref([]);
const getSafetySignboardData = async () => {
let { userInfo } = userStore;
let res = await getSafetySignboard();
safetySignboardData.value = res;
// 危大工程数据
dangerousProjectData.value = [res.DangerousProject.FinishedNum, res.DangerousProject.ConstructionNum, res.DangerousProject.OperativesNum, res.DangerousProject.TrainPersonNum];
// 四级风险数据
riskClassificationData.value = [
{ name: '重大风险', value: res.RiskClassification.HighRiskNum, labelText: `重大风险:${res.RiskClassification.HighRiskNum}` },
{ name: '较大风险', value: res.RiskClassification.MediumRiskNum, labelText: `较大风险:${res.RiskClassification.MediumRiskNum}` },
{ name: '一般风险', value: res.RiskClassification.GeneralRiskNum, labelText: `一般风险:${res.RiskClassification.GeneralRiskNum}` },
{ name: '低风险', value: res.RiskClassification.LowRiskNum, labelText: `低风险:${res.RiskClassification.LowRiskNum}` }
];
// 培训数据
educationData.value = [res.Education.SpecialTrainNum, res.Education.SafeTrainNum, res.Education.SpecialOperationTrainNum, res.Education.HseTechnicalNum];
// 领导级安全检查数
//未完成
hsseProblemData.value = [res.HsseProblem.GroupProblemNotCompletedNum, res.HsseProblem.UnitProblemNotCompletedNum + res.HsseProblem.BranchProblemNotCompletedNum];
//总数
hsseProblemDataNum.value = [res.HsseProblem.GroupProblemNum, res.HsseProblem.UnitProblemNum + res.HsseProblem.BranchProblemNum];
// 应急数据
emergencyData.value = [
res.Emergency.CompanyComprehensivePlanNum,
res.Emergency.CompanySpecialPlanNum,
res.Emergency.CompanyOnSiteDisposalPlan,
res.Emergency.CompanyDrillNum,
res.Emergency.CompanyDrillPersonNum
];
};
//质量看板指标
let qualityWeldingData = ref({});
//工程划分数
let projectDivisionData = ref([]);
// 领导级质量检查数
let qualityProblemData = ref([]);
let qualityProblemDatas=ref([])
// 控制点验收数
let controlPointAcceptanceData = ref({
//关键工序、特殊过程、隐蔽工程等合格率
QualifiedRateList: [],
//关键工序、特殊过程、隐蔽工程等验收数
AcceptNumList: [],
// 关键工序、特殊过程、隐蔽工程等合格数
QualifiedList: [],
// 单位工程、分部工程、分项工程合格率
EngineerQualifiedRateList: [],
// 单位工程、分部工程、分项工程验收数
EngineerAcceptNumList: [],
// 单位工程、分部工程、分项工程合格数
EngineerQualifiedList: []
});
// 优质工程
let awardStatsData = ref({
qualityEngineering: [],
qc: []
});
// 施工方案数
let constructSolutionData = ref([]);
const getQualityWeldingData = async () => {
let { userInfo } = userStore;
let res = await getQualityWelding();
qualityWeldingData.value = res;
console.log('质量看板指标', res);
// 工程划分数
projectDivisionData.value = [res.ProjectDivision.UnitProjectNum, res.ProjectDivision.SubProjectNum, res.ProjectDivision.SubdivisionalWorksNum];
// 领导级质量检查数
qualityProblemData.value = [res.QualityProblem.GroupProblemNum, res.QualityProblem.UnitProblemNum, res.QualityProblem.BranchProblemNum];
qualityProblemDatas.value = [res.QualityProblem.GroupProblemNotCompletedNum, res.QualityProblem.UnitProblemNotCompletedNum, res.QualityProblem.BranchProblemNotCompletedNum];
// 控制点验收数
controlPointAcceptanceData.value = {
QualifiedRateList: res.QualifiedRateList,
AcceptNumList: res.AcceptNumList,
QualifiedList: res.QualifiedList,
EngineerQualifiedRateList: res.EngineerQualifiedRateList,
EngineerAcceptNumList: res.EngineerAcceptNumList,
EngineerQualifiedList: res.EngineerQualifiedList
};
// 优质工程
Object.assign(awardStatsData.value, {
qualityEngineering: [res.AwardStats.LubanNum, res.AwardStats.GuoyouNum, res.AwardStats.ProvinceNum, res.AwardStats.CityNum],
qc: [res.AwardStats.QcProvinceNum, res.AwardStats.QcGroupNum, res.AwardStats.QcEnterpriseNum]
});
// 施工方案
constructSolutionData.value = [
res.ConstructSolution.ConstructSolutionNum,
res.ConstructSolution.ConstructSolutionProjectApproveNum,
res.ConstructSolution.ConstructSolutionUnitApproveNum
];
console.log('+++++++++++++', awardStatsData.value);
};
onMounted(() => {
if (!isLoggedIn()) {
return;
}
getSafetySignboardData();
getQualityWeldingData();
});
</script>
<style lang="scss"></style>