|
|
|
<template>
|
|
|
|
<BorderRadiusImage
|
|
|
|
class="Card"
|
|
|
|
borderRadius="2px"
|
|
|
|
borderColor="linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0))"
|
|
|
|
borderWidth="2px"
|
|
|
|
>
|
|
|
|
<div class="info" :style="{ gap }">
|
|
|
|
<p v-for="(item, index) in keyMap" :key="index">
|
|
|
|
<span>{{ item.label }}: </span>
|
|
|
|
<span>
|
|
|
|
<slot :name="`form-${item.key}`" :data="cardData">
|
|
|
|
{{ getValue(item.key) }}{{ item.suffix }}
|
|
|
|
</slot>
|
|
|
|
</span>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="bottom" v-if="hasBtn">
|
|
|
|
<slot name="button">
|
|
|
|
<Button>
|
|
|
|
{{ buttonText }}
|
|
|
|
</Button>
|
|
|
|
</slot>
|
|
|
|
</div>
|
|
|
|
<!-- <div class="status" :style="{ background: 'linear-gradient(123deg, #00B3CC 0%, rgba(0, 179, 204, 0) 100%)' }">
|
|
|
|
<span class="text">正常</span>
|
|
|
|
</div> -->
|
|
|
|
</BorderRadiusImage>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import Button from "@screen/components/Buttons/Button.vue";
|
|
|
|
import BorderRadiusImage from "@screen/components/BorderRadiusImage.vue";
|
|
|
|
import { get as pathGet } from "lodash";
|
|
|
|
|
|
|
|
export default {
|
|
|
|
name: "Card",
|
|
|
|
components: {
|
|
|
|
Button,
|
|
|
|
BorderRadiusImage,
|
|
|
|
},
|
|
|
|
props: {
|
|
|
|
cardData: {
|
|
|
|
type: Object,
|
|
|
|
default: () => ({
|
|
|
|
source: "济菏运管中心",
|
|
|
|
location: "长清大学城收费站",
|
|
|
|
direction: "117.123456",
|
|
|
|
direction2: "37.12234",
|
|
|
|
state: 1,
|
|
|
|
}),
|
|
|
|
},
|
|
|
|
keyMap: {
|
|
|
|
type: Array,
|
|
|
|
default: () => [
|
|
|
|
{
|
|
|
|
key: "source",
|
|
|
|
label: "机构名称",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "location",
|
|
|
|
label: "机构地址",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "direction",
|
|
|
|
label: "经度",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "direction2",
|
|
|
|
label: "纬度",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "direction3",
|
|
|
|
label: "救援外协单位",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
buttonIcon: {
|
|
|
|
type: String,
|
|
|
|
default: "images/insert.svg",
|
|
|
|
},
|
|
|
|
buttonText: {
|
|
|
|
type: String,
|
|
|
|
default: "修改",
|
|
|
|
},
|
|
|
|
gap: {
|
|
|
|
type: String,
|
|
|
|
default: "6px",
|
|
|
|
},
|
|
|
|
hasBtn: {
|
|
|
|
type: Boolean,
|
|
|
|
default: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
stateMap: {
|
|
|
|
1: "confirmed",
|
|
|
|
2: "comfortable",
|
|
|
|
3: "congestion",
|
|
|
|
4: "normal",
|
|
|
|
},
|
|
|
|
};
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
getValue(key) {
|
|
|
|
return pathGet(this.cardData, key) ?? "-";
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.Card {
|
|
|
|
color: #fff;
|
|
|
|
display: flex;
|
|
|
|
background: #133242;
|
|
|
|
opacity: 1;
|
|
|
|
padding: 18px 12px;
|
|
|
|
gap: 12px;
|
|
|
|
height: 100%;
|
|
|
|
overflow: hidden;
|
|
|
|
position: relative;
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
.info {
|
|
|
|
flex: 1;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
// align-items: center;
|
|
|
|
// justify-content: space-between;
|
|
|
|
|
|
|
|
> p {
|
|
|
|
// height: 21px;
|
|
|
|
font-size: 14px;
|
|
|
|
// font-family: PingFang SC, PingFang SC;
|
|
|
|
font-weight: 400;
|
|
|
|
line-height: 21px;
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
& > :first-child {
|
|
|
|
margin-right: 6px;
|
|
|
|
flex: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
& > :last-child {
|
|
|
|
flex: 2;
|
|
|
|
color: #ffffff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.bottom {
|
|
|
|
display: flex;
|
|
|
|
justify-content: end;
|
|
|
|
gap: 9px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.status {
|
|
|
|
position: absolute;
|
|
|
|
right: 0;
|
|
|
|
top: 0;
|
|
|
|
width: 51px;
|
|
|
|
height: 51px;
|
|
|
|
clip-path: polygon(60% 0, 100% 39%, 100% 100%, 0 0);
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
|
|
.text {
|
|
|
|
transform: rotate(42deg);
|
|
|
|
display: block;
|
|
|
|
line-height: 30px;
|
|
|
|
}
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
content: "";
|
|
|
|
position: absolute;
|
|
|
|
background: linear-gradient(
|
|
|
|
-147deg,
|
|
|
|
#ffffff 0%,
|
|
|
|
rgba(255, 255, 255, 0) 0%,
|
|
|
|
#ffffff 46%,
|
|
|
|
rgba(255, 255, 255, 0) 100%
|
|
|
|
);
|
|
|
|
height: 1px;
|
|
|
|
width: 124%;
|
|
|
|
transform: rotate(45deg);
|
|
|
|
right: calc(-25% - 1px);
|
|
|
|
transform-origin: left top;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|