ggfwjsc/src/view/sy_table.vue

755 lines
18 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="module">
<div class="displayFlex left_bg">
<div class="title">基本公共服务</div>
<div class="lineEnd"></div>
<div class="tabPosition" v-for="(item, index) in data.tabPosition">
<div class="tabPositionBox">
<div class="img"><img :src="item.img" alt="" /></div>
<div class="tabsItem">
{{ item.name }}
</div>
</div>
<div
class="tabPositionminBox"
v-for="(item1, index1) in item.son"
:class="data.taps == item1.id ? 'tabPositionminBoxBgc' : ''"
@click="tapshow(index1)"
>
{{ item1.name }}
</div>
</div>
</div>
<div class="displayFlex right_bg">
<div class="formText">
<div class="formText_top">
<div class="yd_title left_1">
<div class="animate-border">
<i></i>
<i></i>
</div>
</div>
<div style="width: 97.5%; position: relative">
<div class="backgroundVirtual"></div>
<el-table
border
:data="data.tableData"
style="width: 100%; height: 280x"
class="table_border"
:row-style="rowState"
:header-cell-style="tableHeaderColor"
>
<el-table-column
prop="highFrequencyApp"
label="指标"
width="340"
align="center"
/>
<el-table-column
prop="targetValue"
label="2024年目标值(市)"
align="center"
/>
<el-table-column
prop="targetValue1"
label="2024年目标值(县)"
align="center"
/>
<el-table-column
prop="targetValue2"
label="半年度预计 完成值"
align="center"
/>
<el-table-column
prop="targetValue3"
label="半年度预计 全市排名"
align="center"
/>
<el-table-column
prop="targetValue4"
label="是否已达年度 目标"
align="center"
/>
<el-table-column
prop="targetValue5"
label="牵头单位"
align="center"
/>
<el-table-column
prop="targetValue6"
label="责任单位"
align="center"
/>
</el-table>
</div>
</div>
<div class="formText_bootom">
<div class="yd_title left_2">
<div class="animate-border">
<i></i>
<i></i>
</div>
</div>
<div class="tableBox">
<div
class="tableBoxTop"
:style="{ backgroundImage: 'url(' + item.Bj + ')' }"
v-for="(item, index) in data.tabPublicService"
>
<div class="tableBoxTops">
<div class="tableBoxCenter">
<img src="@/assets/sy-table/sy-table3.png" />
<div class="tableli">{{ item.name }}</div>
</div>
<div
class="tableBoxCenter1"
@click="goto('/home/index/table/details')"
>
详情
</div>
</div>
<div class="tableBoxTopa">{{ item.text }}</div>
<div class="progress-container">
<div
class="progress-bar"
:style="{ width: item.progress + '%' }"
>
<span>{{ item.progress }}%</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive } from "vue";
import icon1 from "@/assets/sy-table/sy-table9.png";
import icon2 from "@/assets/sy-table/sy-table10.png";
import icon3 from "@/assets/sy-table/sy-table11.png";
import icon4 from "@/assets/sy-table/sy-table12.png";
import icon5 from "@/assets/sy-table/sy-table13.png";
import icon6 from "@/assets/sy-table/sy-table14.png";
import icon7 from "@/assets/sy-table/sy-table15.png";
import icon8 from "@/assets/sy-table/sy-table16.png";
import icon9 from "@/assets/sy-table/sy-table17.png";
import icon10 from "@/assets/sy-table/sy-table18.png";
import icon11 from "@/assets/sy-table/sy-table19.png";
import Bj from "@/assets/sy-table/sy-table8.png";
import Bj1 from "@/assets/sy-table/sy-table7.png";
import Bj2 from "@/assets/sy-table/sy-table4.png";
import Bj3 from "@/assets/sy-table/sy-table5.png";
import Bj4 from "@/assets/sy-table/sy-table6.png";
import { useRouter, useRoute } from "vue-router";
const router = useRouter();
const routers = useRoute();
// 路由跳转
const goto = (url) => {
router.push({
path: `${url}`,
});
};
const data = reactive({
taps: "0",
taps1: "0",
tabPosition: [
{
id: "0",
name: "幼有所育",
img: icon1,
},
{
id: "1",
name: "学有所教",
img: icon2,
},
{
id: "2",
name: "老有所得",
img: icon3,
},
{
id: "3",
name: "病有所医",
img: icon4,
},
{
id: "4",
name: "老有所养",
img: icon5,
},
{
id: "5",
name: "住有所居",
img: icon6,
},
{
id: "6",
name: "弱有所扶",
img: icon7,
son: [
{
id: "0",
name: "社会救助服务",
},
{
id: "1",
name: "公共法律服务",
},
{
id: "2",
name: "扶残助残服务",
},
{
id: "3",
name: "儿童健康服务",
},
],
},
{
id: "7",
name: "军有所扶",
img: icon8,
},
{
id: "8",
name: "文有所化",
img: icon9,
},
{
id: "9",
name: "体有所育",
img: icon10,
},
{
id: "10",
name: "事有所便",
img: icon11,
},
],
tableData: [
{
highFrequencyApp: "最低生活保障标准金额(元)",
targetValue: ">13200",
targetValue1: ">13200",
targetValue2: "13200",
targetValue3: "暂未排名",
targetValue4: "",
targetValue5: "县民政局",
targetValue6: "县民政局",
},
{
highFrequencyApp: "社会救助服务联合体规范运行指数",
targetValue: "80",
targetValue1: "80",
targetValue2: "100",
targetValue3: "暂未排名",
targetValue4: "✓",
targetValue5: "县民政局",
targetValue6: "县医保局",
},
{
highFrequencyApp: "困难群众医疗费用综合保障率(%%)",
targetValue: ">83",
targetValue1: ">83",
targetValue2: "86.59(1-5月)",
targetValue3: "第2(1-5月)",
targetValue4: "",
targetValue5: "县民政局",
targetValue6: "县医保局",
},
{
highFrequencyApp: "群帮惠因难群体帮扶数(万人次)",
targetValue: "0.5960",
targetValue1: "0.05",
targetValue2: "0.0359",
targetValue3: "中等",
targetValue4: " ",
targetValue5: "县民政局",
targetValue6: "县总工会",
},
],
tabPublicService: [
{
id: "0",
name: "最低生活保障",
Bj: Bj,
text: "我县在册低保对象7374户9463人为低保对象发放最低生活保障金2023年共支出低保金9912.65万元",
progress: 95, //进度条
},
{
id: "1",
name: "重特困人员救助供养",
Bj: Bj1,
text: "我县特困供养对象329户331人2023年支出特困供养经费722.29万元",
progress: 95, //进度条
},
{
id: "2",
name: "医疗救助",
Bj: Bj2,
text: "我县医疗救助的对象为民攻部门认定的特困供养人员最低生活保障家庭成员最低生活保障边缘家庭成员包括纳入低保低边的因病致贫等支出型贫困对象",
progress: 95, //进度条
},
{
id: "3",
name: "临时救助",
Bj: Bj3,
text: "为数助对象发放临时救助金2023年共救助609户1036人数助225.39万元",
progress: 95, //进度条
},
{
id: "4",
name: "受灾人员救助",
Bj: Bj4,
text: "机构改革以来(2019年)我县自然灾害形势总体平稳未发生因灾亡人事故",
progress: 95, //进度条
},
],
});
const tapshow = (val) => {
// console.log(val);
data.taps = val;
};
// 服务表格样式
const tableHeaderColor = (arg) => {
return {
// paddingLeft: "10px",
letterSpacing: "1px",
fontSize: "15px",
height: "79px",
backgroundColor: "#455F8A",
color: "#fff",
border: "none",
textAlign: "center",
fontiWght: "500",
fontSize: "22px",
};
};
const rowState = (row) => {
if (row.rowIndex % 2 == 0) {
return {
letterSpacing: "1px",
fontSize: "19px",
height: "36px",
backgroundColor: "rgba(31, 63, 113, 1)",
color: "#fff",
};
} else if (row.rowIndex % 2 !== 0) {
return {
letterSpacing: "1px",
fontSize: "19px",
height: "36px",
backgroundColor: "rgba(43, 74, 121, 1)",
color: "#fff",
};
}
};
</script>
<style lang="scss" scoped>
.module {
width: 100%;
display: flex;
margin-top: 112px;
.displayFlex {
height: 100%;
display: flex;
flex-direction: column;
box-sizing: border-box;
.title {
font-size: 28px;
color: #ffffff;
text-align: left;
font-style: normal;
font-family: YouSheBiaoTiHei;
text-shadow: 0px 2px 4px rgba(56, 50, 50, 0.5);
}
.lineEnd {
height: 3px;
border-top: 1px solid #fff;
border-bottom: 1px dashed #fff;
margin: 17px 0;
}
.tabPosition {
display: flex;
flex-direction: column;
color: #ffffff;
font-size: 22px;
font-weight: 500;
letter-spacing: 1px;
img {
width: 18px;
height: 18px;
margin-right: 10px;
vertical-align: middle;
}
.tabPositionBox {
display: flex;
align-items: center;
margin: 12px 0 12px 19px;
cursor: pointer;
}
.tabPositionminBox {
display: flex;
align-items: center;
justify-content: center;
width: 200px;
height: 50px;
border-radius: 4px;
cursor: pointer;
// opacity: 0.45;
}
.tabPositionminBoxBgc {
background: rgba(73, 121, 191);
}
}
}
.left_bg {
// width: 642px;
width: 230px;
height: 943px;
box-sizing: border-box;
padding: 19px 17px;
// margin-right: 28px;
background: linear-gradient(
270deg,
rgba(3, 56, 127, 0.77) 0%,
rgba(3, 56, 127, 0.74) 100%
);
box-shadow: inset 0px 0px 56px 0px rgba(173, 221, 255, 0.5);
border-radius: 0px 24px 24px 0px;
backdrop-filter: blur(3px);
}
.right_bg {
width: 100%;
height: 943px;
margin: 40px 30px 0px 30px;
// background-color: pink;
.formText {
// .formText_top {
// }
.formText_bootom {
.tableBox {
display: flex;
flex-wrap: wrap;
:nth-child(3n).tableBoxTop {
margin-right: 0px;
}
.tableBoxTop {
width: 510px;
height: 210px;
// background-image: url(@/assets/sy-table/sy-table3.png);
background-repeat: no-repeat;
background-size: 100% 100%;
// background-color: pink;
padding: 15px 28px;
box-sizing: border-box;
margin-right: 20px;
margin-bottom: 20px;
position: relative; /* Add this */
.tableBoxTops {
display: flex;
align-items: center;
justify-content: space-between;
.tableBoxCenter {
display: flex;
align-items: center;
}
}
.tableBoxTopa {
width: 470px;
// height: 90px;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 22px;
color: #ffffff;
line-height: 30px;
text-align: left;
font-style: normal;
margin-top: 10px;
}
.progress-container {
position: absolute;
bottom: 2px;
left: 0px;
width: 100%;
height: 10px;
background-color: rgba(255, 255, 255, 0.2);
border-radius: 5px;
// overflow: hidden;
}
.progress-bar {
height: 100%;
background: linear-gradient(90deg, #31ffd8 0%, #00e5ff 100%);
border-radius: 0px 100px 100px 0px;
transition: width 0.3s ease;
position: relative;
}
.progress-bar span {
position: absolute;
right: -10px;
top: -30%;
transform: translateY(-50%);
color: #fff;
font-size: 18px;
}
}
img {
width: 24px;
height: 24px;
margin-right: 8px;
}
.tableli {
font-size: 26px;
color: #ffffff;
letter-spacing: 2px;
}
.tableBoxCenter1 {
width: 70px;
height: 29px;
background: rgba(255, 255, 255, 0.2);
border-radius: 15px;
border: 1px solid #ffffff6b;
color: #ffffff;
font-weight: 400;
font-size: 20px;
letter-spacing: 1px;
text-align: center;
cursor: pointer;
}
}
}
}
.backgroundVirtual {
position: absolute;
top: 0;
width: 100%;
height: 79px;
// background: linear-gradient(
// 270deg,
// rgba(0, 52, 131, 0.20) 0%,
// rgba(0, 32, 83, 0.30) 50%,
// rgba(0, 60, 131, 0.40) 100%
// );
box-shadow: inset 0px 0px 16px 0px rgba(173, 221, 255, 0.5);
backdrop-filter: blur(0px);
z-index: 99;
}
}
}
.left_1 {
background-image: url(@/assets/sy-table/sy-table1.png);
background-repeat: no-repeat;
background-size: 100% 100%;
margin-bottom: 30px;
// cursor: pointer;
}
.left_2 {
background-image: url(@/assets/sy-table/sy-table2.png);
background-repeat: no-repeat;
background-size: 100% 100%;
// cursor: pointer;
margin-bottom: 30px;
margin-top: 40px;
}
</style>
<style lang="scss" scoped>
:deep(.el-table) {
background: rgba(32, 64, 115, 1);
color: #ffffff;
--el-table-border-color: rgba(57, 107, 161);
--el-table-tr-bg-color: none;
--el-table-header-bg-color: none;
--el-table-header-text-color: none;
border: 1px solid #7aceff;
}
// :deep(.el-table tr) {
// background: linear-gradient(
// 270deg,
// rgba(0, 52, 131, 0.69) 0%,
// rgba(0, 32, 83, 0.77) 50%,
// rgba(0, 60, 131, 0.74) 100%
// );
// box-shadow: inset 0px 0px 56px 0px rgba(173, 221, 255, 0.5);
// backdrop-filter: blur(0px);
// }
.table {
:deep(.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf) {
border: none !important;
padding-left: 10px !important;
}
}
:deep(.el-table td.el-table__cell) {
padding: 12px 0px;
}
:deep(.el-table--enable-row-hover .el-table__body tr:hover > td) {
background-color: #2f4b74;
}
:deep(.el-table__empty-block) {
background-color: #122560;
}
:deep(.el-table .el-table__row) {
border-bottom: none;
}
.yd_title {
box-sizing: border-box;
width: 96%;
height: 31px;
position: relative;
overflow: hidden;
/* 利用伪元素和两个i元素产生4条线 */
.animate-border {
position: absolute;
top: 0px;
width: 100%;
height: 100%;
&::before,
&::after {
content: "";
position: absolute;
width: 100%;
height: 2px;
}
i {
position: absolute;
display: inline-block;
height: 100%;
width: 2px;
}
&::before {
top: 0;
left: -100%;
background-image: linear-gradient(
90deg,
transparent,
#03e9f4,
transparent
);
animation: one 4s linear infinite;
}
i:nth-child(1) {
top: -100%;
right: 0;
background-image: linear-gradient(
180deg,
transparent,
#03e9f4,
transparent
);
/* 动画名称 动画持续时间 动画渲染函数 动画延迟时间 动画执行次数 */
animation: two 4s linear 1s infinite;
}
&::after {
bottom: 0;
right: -100%;
background-image: linear-gradient(
-90deg,
transparent,
#03e9f4,
transparent
);
animation: three 4s linear 2s infinite;
}
i:nth-child(2) {
bottom: -100%;
left: 0;
background-image: linear-gradient(
360deg,
transparent,
#03e9f4,
transparent
);
animation: four 4s linear 3s infinite;
}
}
.text {
display: flex;
position: absolute;
font-size: 16px;
font-family: SourceHanSansCN;
font-weight: bold;
color: #ffffff;
position: absolute;
right: 5px;
top: 1px;
}
.gTitle {
position: absolute;
color: #acd1f1;
height: 100%;
display: flex;
align-items: center;
left: 156px;
}
.c {
width: 130px;
height: 42px;
cursor: pointer;
}
}
@keyframes one {
0% {
left: -100%;
}
50%,
100% {
left: 100%;
}
}
@keyframes two {
0% {
top: -100%;
}
50%,
100% {
top: 100%;
}
}
@keyframes three {
0% {
right: -100%;
}
50%,
100% {
right: 100%;
}
}
@keyframes four {
0% {
bottom: -100%;
}
50%,
100% {
bottom: 100%;
}
}
</style>