313 lines
8.0 KiB
Vue
Raw Normal View History

2024-04-20 17:26:03 +08:00
<template>
<div class="leftTop">
2024-04-21 14:15:04 +08:00
<div class="header">
2024-04-27 22:50:10 +08:00
<div class="hLeft" @click="dialogVisible = true">人员履职情况分析</div>
2024-04-21 14:15:04 +08:00
<div class="hRight">
2024-04-27 22:50:10 +08:00
<el-date-picker
style="width: 85%"
v-model="dateRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:size="size"
/>
2024-04-21 14:15:04 +08:00
</div>
</div>
2024-04-22 23:02:06 +08:00
<div class="content">
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
2024-04-27 13:41:13 +08:00
<el-tab-pane :label="'整改人'" name="first"></el-tab-pane>
<el-tab-pane :label="'检查人'" name="second"></el-tab-pane>
<el-tab-pane :label="'按分包单位分析'" name="third"></el-tab-pane>
2024-04-22 23:02:06 +08:00
</el-tabs>
<div class="tabList">
<div>排名</div>
2024-04-27 13:41:13 +08:00
<div v-if="activeIndex === '0' || activeIndex === '1'">姓名</div>
2024-04-28 16:48:53 +08:00
<div v-if="activeIndex === '2'">分包单位</div>
2024-04-27 13:41:13 +08:00
<div v-if="activeIndex === '0' || activeIndex === '2'">整改数量</div>
<div v-if="activeIndex === '1'">发起隐患处</div>
2024-04-22 23:02:06 +08:00
<div>整改率</div>
<div>及时整改率</div>
</div>
<div class="listBox">
<el-scrollbar height="150">
<div v-for="(item, index) in tabList" :key="index" class="listStyle">
<div>{{ item.sortLine }}</div>
2024-04-28 16:48:53 +08:00
<div v-if="activeIndex === '0' || activeIndex === '1'">{{ item.name }}</div>
<div v-if="activeIndex === '2'">{{item.company}}</div>
<div v-if="activeIndex === '0' || activeIndex === '2'">{{item.count}}</div>
<div v-if="activeIndex === '1'">{{item.count}}</div>
<div>{{item.immediateRate}}</div>
<div>{{item.immediateRate}}</div>
2024-04-22 23:02:06 +08:00
</div>
</el-scrollbar>
<div class="notoDta" v-if="tabList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div>
</div>
2024-04-27 22:50:10 +08:00
<el-dialog v-model="dialogVisible" title="人员履职情况分析(整改人)" width="1200" >
<div class="dialogContainer">
<div class="tabList">
<div>姓名</div>
<div>整改总数</div>
<div>超期整改数</div>
<div>超期未整改数</div>
<div>整改率</div>
<div>及时整改率</div>
</div>
<div class="listBox">
2024-04-28 01:15:21 +08:00
<el-scrollbar height="350">
2024-04-27 22:50:10 +08:00
<div v-for="(item, index) in tabList" :key="index" class="listStyle">
<div>{{ item.name }}</div>
<div>{{ item.count }}</div>
<div>{{ item.count }}</div>
2024-04-28 16:48:53 +08:00
<div>{{ 0 }}</div>
2024-04-27 22:50:10 +08:00
<div>{{ item.rate }}</div>
<div>{{ item.immediateRate }}</div>
</div>
</el-scrollbar>
<div class="notoDta" v-if="tabList.length == 0">
<img src="@/assets/images/noData.png" alt="" />
<p>暂无数据</p>
</div>
</div>
</div>
</el-dialog>
2024-04-20 17:26:03 +08:00
</div>
</template>
<script setup lang="ts">
import { GlobalStore } from "@/stores";
import { ref, onMounted, watch } from "vue";
import { getStageOption } from "@/api/modules/projectOverview";
2024-04-27 22:50:10 +08:00
import type { TabsPaneContext, ElMessageBox } from "element-plus";
2024-04-20 17:26:03 +08:00
2024-04-27 22:50:10 +08:00
const dialogVisible = ref(false);
const activeName = ref("first");
const activeIndex = ref("1" as any);
let dateRange = ref([] as any);
2024-04-20 17:26:03 +08:00
2024-04-22 23:02:06 +08:00
const handleClick = (tab: TabsPaneContext, event: Event) => {
2024-04-27 22:50:10 +08:00
activeIndex.value = tab.index;
console.log("activeIndex", activeIndex.value);
};
2024-04-22 23:02:06 +08:00
const tabList = [
2024-04-28 16:48:53 +08:00
{ sortLine: "1", name: "谢明泉", count: "2", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "2", name: "王福明", count: "2", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "3", name: "张启程", count: "2", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "4", name: "李渊海", count: "2", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "5", name: "黄明昌", count: "1", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "6", name: "叶文远", count: "2", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "7", name: "丁明昌", count: "1", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "8", name: "黄石明", count: "1", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "9", name: "肖明远", count: "1", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "10", name: "张冠名", count: "1", rate: "100%", immediateRate: "100%",company:'分包单位' },
{ sortLine: "11", name: "石慧生", count: "1", rate: "100%", immediateRate: "100%",company:'分包单位' },
2024-04-27 22:50:10 +08:00
];
onMounted(async () => {});
2024-04-20 17:26:03 +08:00
</script>
<style lang="scss" scoped>
.leftTop {
2024-04-21 14:15:04 +08:00
background: url("@/assets/images/commandScreen/card-left-top.png") no-repeat;
// background-color: #fff;
background-size: 100% 100%;
2024-04-20 17:26:03 +08:00
width: 100%;
2024-04-27 22:50:10 +08:00
height: 35%;
.header {
2024-04-21 14:15:04 +08:00
// width: 100%;
// height: 100%;
display: flex;
// align-items: center;
justify-content: space-between;
padding: 20px 20px;
2024-04-22 23:02:06 +08:00
border-bottom: 1px solid #0059ff;
2024-04-27 22:50:10 +08:00
.hLeft {
2024-04-21 14:15:04 +08:00
width: 50%;
color: white;
}
2024-04-27 22:50:10 +08:00
.hRight {
2024-04-21 14:15:04 +08:00
width: 50%;
2024-04-20 17:26:03 +08:00
}
}
2024-04-27 22:50:10 +08:00
.content {
2024-04-22 23:02:06 +08:00
padding: 0 20px;
2024-04-27 22:50:10 +08:00
::v-deep .el-tabs__item {
2024-04-22 23:02:06 +08:00
color: #fff;
}
2024-04-27 22:50:10 +08:00
::v-deep .el-tabs__nav-wrap::after {
background-color: rgba(255, 0, 0, 0);
2024-04-22 23:02:06 +08:00
}
.tabList {
display: flex;
width: 100%;
height: 14%;
// background: url("@/assets/images/dustNoise/rightBottom.png") no-repeat;
background-color: #00224f;
background-size: 100% 100%;
left: 75.5%;
top: 75%;
color: #fff;
font-size: 14px;
line-height: 30px;
justify-content: space-around;
text-align: center;
div {
width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.listBox {
// height: 10%;
.listStyle {
display: flex;
justify-content: space-around;
color: #fff;
height: 12%;
line-height: 25px;
font-size: 12px;
text-align: center;
div {
width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.listStyle:hover {
background: #003c84;
}
}
.notoDta {
top: 40%;
width: 30%;
left: 35%;
text-align: center;
position: absolute;
img {
width: 40%;
margin: 5% 30%;
}
p {
color: #fff;
font-size: 14px;
margin: -6% 37%;
}
}
}
2024-04-20 17:26:03 +08:00
}
2024-04-27 09:47:16 +08:00
::v-deep .el-input__inner {
color: #fff;
}
::v-deep .el-select .el-input .el-select__caret {
color: #fff;
}
::v-deep .el-input__wrapper {
width: 85%;
height: 0%;
background: #0d2956;
}
::v-deep .el-range-separator {
color: #ccc;
font-size: 10px;
}
::v-deep .el-range-input {
color: #ccc;
font-size: 10px;
}
2024-04-27 22:50:10 +08:00
.dialogContainer {
padding: 0 50px;
2024-04-28 01:15:21 +08:00
// height: 600px;
2024-04-27 22:50:10 +08:00
::v-deep .el-tabs__item {
color: #fff;
}
::v-deep .el-tabs__nav-wrap::after {
background-color: rgba(255, 0, 0, 0);
}
.tabList {
display: flex;
width: 100%;
height: 14%;
background: url("@/assets/images/dustNoise/rightBottom.png") no-repeat;
// background-color: #00224f;
background-size: 100% 100%;
left: 75.5%;
top: 75%;
color: #fff;
font-size: 14px;
line-height: 30px;
justify-content: space-around;
text-align: center;
div {
width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.listBox {
// height: 10%;
.listStyle {
display: flex;
justify-content: space-around;
color: #fff;
height: 12%;
line-height: 25px;
font-size: 12px;
text-align: center;
div {
width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.listStyle:hover {
background: #003c84;
}
}
.notoDta {
top: 40%;
width: 30%;
left: 35%;
text-align: center;
position: absolute;
img {
width: 40%;
margin: 5% 30%;
}
p {
color: #fff;
font-size: 14px;
margin: -6% 37%;
}
}
}
::v-deep .el-dialog{
background: url("@/assets/images/commandScreen/dialog-bg.png") no-repeat;
// background-color: #fff;
background-size: 100% 100%;
2024-04-28 01:15:21 +08:00
margin-top: 12%;
2024-04-27 22:50:10 +08:00
}
::v-deep .el-dialog__headerbtn{
2024-04-28 01:15:21 +08:00
right: 35px;
top: 25px;
2024-04-27 22:50:10 +08:00
}
::v-deep .el-dialog .el-dialog__header .el-dialog__title{
2024-04-28 01:15:21 +08:00
margin-left: 30px;
margin-top: 10px;
2024-04-27 22:50:10 +08:00
font-size: 18px;
color: #fff;
2024-04-28 01:15:21 +08:00
position: absolute;
}
::v-deep el-dialog__header{
margin-top: 20px;
2024-04-27 22:50:10 +08:00
}
2024-04-20 17:26:03 +08:00
</style>