You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
219 lines
5.3 KiB
219 lines
5.3 KiB
<template>
|
|
<div class="d-flex">
|
|
<svg style="position: absolute;" width="0" height="0">
|
|
<defs>
|
|
<linearGradient id="card-item-color" x1="50%" y1="0%" x2="50%" y2="100%">
|
|
<stop offset="0%" stop-color="#00000033"></stop>
|
|
<stop offset="100%" stop-color="#3eb29c66"></stop>
|
|
</linearGradient>
|
|
</defs>
|
|
</svg>
|
|
<dv-border-box-13 v-for="item in items" class="dv-box">
|
|
<div class="card">
|
|
<div class="card-left">
|
|
<p class="card__title">{{ item.text }}</p>
|
|
<p class="card__text">
|
|
<span class="card__text--num">{{ total(item.tag) }}</span>
|
|
<span class="card__text--unit">{{ item.unit }}</span>
|
|
</p>
|
|
</div>
|
|
<div class="card-right">
|
|
<SvgIcon :icon-class="item.icon" class="img"></SvgIcon>
|
|
|
|
<div class="img-base">
|
|
<div class="square3"></div>
|
|
<div class="square1"></div>
|
|
<div class="square2"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</dv-border-box-13>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import SvgIcon from "@/components/SvgIcon"
|
|
export default {
|
|
components: {
|
|
SvgIcon
|
|
},
|
|
data() {
|
|
return {
|
|
items: [
|
|
{
|
|
text: "资产总量",
|
|
num: 36650,
|
|
tag: "total",
|
|
unit: "平方",
|
|
icon: "zichan"
|
|
},
|
|
{
|
|
text: "土地资产",
|
|
num: 99966,
|
|
unit: "平方米",
|
|
tag: "land",
|
|
icon: "tudi"
|
|
},
|
|
{
|
|
text: "汇总数据",
|
|
num: 8888,
|
|
unit: "",
|
|
tag: "static",
|
|
icon: "fangwu"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
methods: {},
|
|
computed: {
|
|
total () {
|
|
return function(tag) {
|
|
let total = 0;
|
|
const [houses,lands] = this.$store.state.bigdata.assets
|
|
switch (tag) {
|
|
case "total":
|
|
total += houses.reduce((a,b) => a + parseFloat(b.dengjimianji ?? 0),0)
|
|
total += lands.reduce((a,b) => a + parseFloat(b.dengjimianji ?? 0),0)
|
|
return total.toFixed(2);
|
|
case "land":
|
|
total += lands.reduce((a,b) => a + parseFloat(b.dengjimianji ?? 0),0)
|
|
return total.toFixed(2);
|
|
case "static":
|
|
return `土地 ${lands.length}处,房产 ${houses.length}处`;
|
|
default:
|
|
return total.toFixed(2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.card {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
|
|
padding: 20px 22px;
|
|
&__title {
|
|
line-height: 2;
|
|
font-size: 22px;
|
|
font-weight: 600;
|
|
color: #73f3df;
|
|
padding: 6px 0;
|
|
}
|
|
&__text {
|
|
color: #fff;
|
|
font-size: 20px;
|
|
|
|
&--num {
|
|
font-size: 28px;
|
|
font-weight: 600;
|
|
padding-right: 6px;
|
|
}
|
|
}
|
|
& > .card-right {
|
|
z-index: 2;
|
|
position: relative;
|
|
top: 0;
|
|
& > .img {
|
|
color: #73f3e0;
|
|
width: 54px;
|
|
height: 54px;
|
|
z-index: 3;
|
|
transform: translate(-19px,-10px);
|
|
position: relative;
|
|
}
|
|
.img-base {
|
|
width: 100%;
|
|
perspective: 200px;
|
|
|
|
z-index: 1;
|
|
position: absolute;
|
|
left: -12px;
|
|
bottom: -14px;
|
|
|
|
.square1 {
|
|
background: linear-gradient(135deg, #00000066 ,#4fa497);
|
|
width: 40px;
|
|
height: 40px;
|
|
box-shadow: 0 0 2px 2px #7ddacd;
|
|
transform: rotateX(45deg) rotateZ(45deg)skew(-15deg, -15deg);
|
|
position: relative;
|
|
&::after {
|
|
content: "";
|
|
width: 146%;
|
|
height: 146%;
|
|
filter: drop-shadow(2px 2px 6px #9ce8de);
|
|
background: transparent;
|
|
border: 3px solid #25aba8;
|
|
position: absolute;
|
|
left: -22%;
|
|
top: -22%;
|
|
}
|
|
}
|
|
.square2 {
|
|
background: linear-gradient(135deg, #ffffff33 , #1da4a1);
|
|
width: 52px;
|
|
height: 50px;
|
|
transform: rotateX(45deg) rotateZ(45deg)skew(-15deg, -15deg);
|
|
box-shadow: 0 0 2px 2px #86bdb5;
|
|
position: absolute;
|
|
left: -6px;
|
|
top: -16px;
|
|
}
|
|
.square3 {
|
|
content: "";
|
|
width: 104px;
|
|
height: 46px;
|
|
background: linear-gradient(to bottom, #00000022 , #61b9ac66);
|
|
filter: drop-shadow(0 2px 6px #9ce8de);
|
|
position: absolute;
|
|
left: -32px;
|
|
bottom: 20px;
|
|
}
|
|
//&::before {
|
|
// content: "";
|
|
// width: 100%;
|
|
// height: 100%;
|
|
// background: linear-gradient(to bottom, #00000033 , #61b9ac);
|
|
// filter: drop-shadow(0 2px 6px #9ce8de);
|
|
// transform: translateY(-96%);
|
|
// position: absolute;
|
|
// left: 0%;
|
|
// top: 0;
|
|
//}
|
|
//.square1 {
|
|
// background: linear-gradient(to bottom, #00000033 ,#4fa497);
|
|
// width: 100%;
|
|
// height: 34px;
|
|
// box-shadow: 0 0 2px 2px #7ddacd;
|
|
// transform: rotateX(45deg);
|
|
// position: relative;
|
|
//
|
|
// &::after {
|
|
// content: "";
|
|
// width: 120%;
|
|
// height: 136%;
|
|
// filter: drop-shadow(0 4px 6px #9ce8de);
|
|
// background: transparent;
|
|
// border: 2px solid #7ddacd;
|
|
// position: absolute;
|
|
// left: -10%;
|
|
// top: -18%;
|
|
// }
|
|
//}
|
|
}
|
|
}
|
|
}
|
|
.dv-box + .dv-box {
|
|
margin-left: .5rem;
|
|
}
|
|
</style>
|
|
<style>
|
|
.dv-box path:nth-child(1) {
|
|
fill: url(#card-item-color);
|
|
}
|
|
</style>
|