parent
a49ae01807
commit
7df416ca96
@ -1,104 +1,104 @@
|
||||
<template>
|
||||
<div v-if="!item.hidden">
|
||||
<template
|
||||
v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
|
||||
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
|
||||
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
|
||||
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
|
||||
</el-menu-item>
|
||||
</app-link>
|
||||
</template>
|
||||
|
||||
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
|
||||
<template slot="title">
|
||||
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
|
||||
</template>
|
||||
<sidebar-item v-for="child in item.children" :key="child.path" :is-nest="true" :item="child"
|
||||
:base-path="resolvePath(child.path)" class="nest-menu" />
|
||||
</el-submenu>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import path from 'path'
|
||||
import {
|
||||
isExternal
|
||||
} from '@/utils/validate'
|
||||
import Item from './Item'
|
||||
import AppLink from './Link'
|
||||
import FixiOSBug from './FixiOSBug'
|
||||
|
||||
export default {
|
||||
name: 'SidebarItem',
|
||||
components: {
|
||||
Item,
|
||||
AppLink
|
||||
},
|
||||
mixins: [FixiOSBug],
|
||||
props: {
|
||||
// route object
|
||||
item: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
isNest: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
basePath: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
// To fix https://github.com/PanJiaChen/vue-admin-template/issues/237
|
||||
// TODO: refactor with render function
|
||||
this.onlyOneChild = null
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
hasOneShowingChild(children = [], parent) {
|
||||
const showingChildren = children.filter(item => {
|
||||
if (item.hidden) {
|
||||
return false
|
||||
} else {
|
||||
// Temp set(will be used if only has one showing child)
|
||||
this.onlyOneChild = item
|
||||
return true
|
||||
}
|
||||
})
|
||||
|
||||
// When there is only one child router, the child router is displayed by default
|
||||
if (showingChildren.length === 1) {
|
||||
return true
|
||||
}
|
||||
|
||||
// Show parent if there are no child router to display
|
||||
if (showingChildren.length === 0) {
|
||||
this.onlyOneChild = {
|
||||
...parent,
|
||||
path: '',
|
||||
noShowingChildren: true
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
},
|
||||
resolvePath(routePath) {
|
||||
if (isExternal(routePath)) {
|
||||
return routePath
|
||||
}
|
||||
if (isExternal(this.basePath)) {
|
||||
return this.basePath
|
||||
}
|
||||
return path.resolve(this.basePath, routePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.el-submenu__title i {
|
||||
color: #fff !important;
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<div v-if="!item.hidden">
|
||||
<template
|
||||
v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
|
||||
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
|
||||
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
|
||||
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
|
||||
</el-menu-item>
|
||||
</app-link>
|
||||
</template>
|
||||
|
||||
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
|
||||
<template slot="title">
|
||||
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
|
||||
</template>
|
||||
<sidebar-item v-for="child in item.children" :key="child.path" :is-nest="true" :item="child"
|
||||
:base-path="resolvePath(child.path)" class="nest-menu" />
|
||||
</el-submenu>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import path from 'path'
|
||||
import {
|
||||
isExternal
|
||||
} from '@/utils/validate'
|
||||
import Item from './Item'
|
||||
import AppLink from './Link'
|
||||
import FixiOSBug from './FixiOSBug'
|
||||
|
||||
export default {
|
||||
name: 'SidebarItem',
|
||||
components: {
|
||||
Item,
|
||||
AppLink
|
||||
},
|
||||
mixins: [FixiOSBug],
|
||||
props: {
|
||||
// route object
|
||||
item: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
isNest: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
basePath: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
// To fix https://github.com/PanJiaChen/vue-admin-template/issues/237
|
||||
// TODO: refactor with render function
|
||||
this.onlyOneChild = null
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
hasOneShowingChild(children = [], parent) {
|
||||
const showingChildren = children.filter(item => {
|
||||
if (item.hidden) {
|
||||
return false
|
||||
} else {
|
||||
// Temp set(will be used if only has one showing child)
|
||||
this.onlyOneChild = item
|
||||
return true
|
||||
}
|
||||
})
|
||||
|
||||
// When there is only one child router, the child router is displayed by default
|
||||
if (showingChildren.length === 1) {
|
||||
return true
|
||||
}
|
||||
|
||||
// Show parent if there are no child router to display
|
||||
if (showingChildren.length === 0) {
|
||||
this.onlyOneChild = {
|
||||
...parent,
|
||||
path: '',
|
||||
noShowingChildren: true
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
},
|
||||
resolvePath(routePath) {
|
||||
if (isExternal(routePath)) {
|
||||
return routePath
|
||||
}
|
||||
if (isExternal(this.basePath)) {
|
||||
return this.basePath
|
||||
}
|
||||
return path.resolve(this.basePath, routePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.el-submenu__title i {
|
||||
color: #fff !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -0,0 +1,52 @@
|
||||
<template>
|
||||
<div style="padding-top: 20px;">
|
||||
<el-form ref="form" :model="form" label-width="80px">
|
||||
<!-- <el-form-item label="到期时间">-->
|
||||
<!-- <el-col :span="11">-->
|
||||
<!-- <el-input-number v-model="form.warning" style="width: 100%;" class="input"></el-input-number>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="提醒时间">
|
||||
<el-col :span="11">
|
||||
<el-input-number v-model="form.remind" style="width: 100%;" class="input"></el-input-number>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="">确认</el-button>
|
||||
<el-button>取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
//warning: '',
|
||||
remind: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {},
|
||||
computed: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.input {
|
||||
position: relative;
|
||||
|
||||
&::after {
|
||||
content: '月';
|
||||
zoom: .95;
|
||||
font-weight: 600;
|
||||
|
||||
transform: translateX(calc(100% + 15px));
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -1,448 +1,448 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="boxlist">
|
||||
<div class="box box1">
|
||||
<div class="boxtitle">
|
||||
<span>经营统计</span>
|
||||
<i class="el-icon-data-line statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总计</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.business.server_money_total}}
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.business.nurse_money_total}}</span>
|
||||
<span>房产租赁金额</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.business.remain_money_total}}</span>
|
||||
<span>土地租赁金额</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box2">
|
||||
<div class="boxtitle">
|
||||
|
||||
<span>房产统计</span>
|
||||
<i class="el-icon-user statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总计</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.person_efficiency.server_time_total}}
|
||||
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
|
||||
<span>{{totaldata.person_efficiency.expect}}</span>
|
||||
<span>出租</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.person_efficiency.act}} </span>
|
||||
<span>闲置</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box3">
|
||||
<div class="boxtitle">
|
||||
<span>土地统计</span>
|
||||
<i class="el-icon-s-custom statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总计</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.customer.active}}
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.customer.add}}</span>
|
||||
<span>出租</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.customer.wash}}</span>
|
||||
<span>闲置</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box4">
|
||||
<div class="boxtitle">
|
||||
|
||||
<span>合同统计</span>
|
||||
<i class="el-icon-document statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总计</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">{{totaldata.order.server_total}}
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.order.cycle_total}}</span>
|
||||
<span>即将到期</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.order.unit_total}}</span>
|
||||
<span>进行中</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CountTo from 'vue-count-to'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
countsData: {
|
||||
type: Object
|
||||
},
|
||||
totaldata: {
|
||||
type: Object,
|
||||
default: {
|
||||
|
||||
"business": {
|
||||
"server_money_total": 0,
|
||||
"nurse_money_total": 0,
|
||||
"remain_money_total": 0
|
||||
},
|
||||
"person_efficiency": {
|
||||
"server_time_total": "0",
|
||||
"expect": 0,
|
||||
"act": 0
|
||||
},
|
||||
"customer": {
|
||||
"active": 0,
|
||||
"add": 0,
|
||||
"wash": 0
|
||||
},
|
||||
"order": {
|
||||
"server_total": 0,
|
||||
"cycle_total": 0,
|
||||
"unit_total": 0
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
CountTo
|
||||
},
|
||||
methods: {
|
||||
handleRoute(type) {
|
||||
this.$emit('handleRoute', type)
|
||||
},
|
||||
toCaculateper(f1, f2) {
|
||||
return ((f1 / (f2 == 0 ? 1 : f2)) * 100).toFixed(2) + "%"
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.boxlist {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.statIcon {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.index_icon {
|
||||
position: absolute;
|
||||
top: 1.25rem;
|
||||
right: 1.25rem;
|
||||
width: 3.5625rem;
|
||||
}
|
||||
|
||||
.index_bg {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
.boxcontentitem-small {
|
||||
font-size: 16px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
|
||||
.box {
|
||||
position: relative;
|
||||
width: 33%;
|
||||
margin-left: 0.5%;
|
||||
margin-right: 0.5%;
|
||||
margin-bottom: 2.375rem;
|
||||
box-shadow: 0px 8px 15px 0px rgba(212, 84, 32, 0.3100);
|
||||
border-radius: 8px;
|
||||
box-sizing: border-box;
|
||||
opacity: 0.8;
|
||||
padding: 1.25rem 0;
|
||||
|
||||
.boxcontentsubtitle {
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-size: 1.0625rem;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
||||
.boxfooter {
|
||||
font-size: 1.0625rem;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.boxtitle {
|
||||
font-size: 20px;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
padding: 0 1.25rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.boxcontent {
|
||||
display: flex;
|
||||
//justify-content: space-around;
|
||||
align-items: center;
|
||||
|
||||
.boxline {
|
||||
width: 1px;
|
||||
height: 4.0625rem;
|
||||
background: #FFFFFF00;
|
||||
opacity: 0.3;
|
||||
margin-left: 2.0625rem;
|
||||
margin-right: 2.0625rem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.boxcontentitem {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 19px;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
min-width: 100%;
|
||||
|
||||
.boxcontentitem-big {
|
||||
font-size: 2.625rem;
|
||||
font-family: Arial;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.box1 {
|
||||
background: linear-gradient(134deg, #019239, #64db92);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #64db92;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.bline {
|
||||
background: linear-gradient(to right, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0) 60%);
|
||||
height: 0.25rem;
|
||||
width: 100%;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
||||
.box2 {
|
||||
background: linear-gradient(134deg, #4486c4, #8bb1d5);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #8bb1d5;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.box3 {
|
||||
|
||||
background: linear-gradient(-55deg, #F6A868, #F4C59E);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #F4C59E;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.box4 {
|
||||
|
||||
background: linear-gradient(-55deg, #64A48E, #9ECABB);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #9ECABB;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-group {
|
||||
// margin-top: 18px;
|
||||
margin-left: -2% !important;
|
||||
margin-right: -3% !important;
|
||||
|
||||
.card-panel-col {
|
||||
margin: 0 2%;
|
||||
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-panel {
|
||||
height: 130px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
color: #666;
|
||||
text-align: center;
|
||||
// background: #fff;
|
||||
// box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
|
||||
// border-color: rgba(0, 0, 0, .05);
|
||||
|
||||
&:hover {
|
||||
.card-panel-icon-wrapper {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
// .icon-people {
|
||||
// background: #40c9c6;
|
||||
// }
|
||||
|
||||
// .icon-message {
|
||||
// background: #36a3f7;
|
||||
// }
|
||||
|
||||
// .icon-money {
|
||||
// background: #f4516c;
|
||||
// }
|
||||
|
||||
// .icon-shopping {
|
||||
// background: #34bfa3
|
||||
// }
|
||||
}
|
||||
|
||||
.icon-people {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-message {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-money {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-shopping {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.card-panel-icon-wrapper {
|
||||
float: right;
|
||||
margin: 22px 0 0 14px;
|
||||
padding: 16px;
|
||||
transition: all 0.38s ease-out;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.card-panel-icon {
|
||||
float: left;
|
||||
font-size: 42px;
|
||||
}
|
||||
|
||||
.card-panel-description {
|
||||
// float: right;
|
||||
font-weight: bold;
|
||||
margin: 16px 12px;
|
||||
|
||||
.card-panel-text {
|
||||
line-height: 25px;
|
||||
color: rgb(255, 255, 255);
|
||||
font-size: 26px;
|
||||
margin-bottom: 20px;
|
||||
width: 70%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: left;
|
||||
font-size: 19px;
|
||||
}
|
||||
|
||||
.card-panel-num {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width:550px) {
|
||||
.card-panel-description {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card-panel-icon-wrapper {
|
||||
float: none !important;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 !important;
|
||||
|
||||
.svg-icon {
|
||||
display: block;
|
||||
margin: 14px auto !important;
|
||||
float: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
<template>
|
||||
<div>
|
||||
<div class="boxlist">
|
||||
<div class="box box1">
|
||||
<div class="boxtitle">
|
||||
<span>经营统计</span>
|
||||
<i class="el-icon-data-line statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总计</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.business.server_money_total}}
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.business.nurse_money_total}}</span>
|
||||
<span>房产租赁金额</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.business.remain_money_total}}</span>
|
||||
<span>土地租赁金额</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box2">
|
||||
<div class="boxtitle">
|
||||
|
||||
<span>房产统计</span>
|
||||
<i class="el-icon-user statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总计</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.person_efficiency.server_time_total}}
|
||||
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
|
||||
<span>{{totaldata.person_efficiency.expect}}</span>
|
||||
<span>出租</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.person_efficiency.act}} </span>
|
||||
<span>闲置</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box3">
|
||||
<div class="boxtitle">
|
||||
<span>土地统计</span>
|
||||
<i class="el-icon-s-custom statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总计</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">
|
||||
{{totaldata.customer.active}}
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.customer.add}}</span>
|
||||
<span>出租</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.customer.wash}}</span>
|
||||
<span>闲置</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box box4">
|
||||
<div class="boxtitle">
|
||||
|
||||
<span>租赁台账</span>
|
||||
<i class="el-icon-document statIcon"></i>
|
||||
</div>
|
||||
<div class="bline"></div>
|
||||
<div class="boxcontentsubtitle">总计</div>
|
||||
<div class="boxcontent">
|
||||
<div class="boxcontentitem">
|
||||
<div class="boxcontentitem-big">{{totaldata.order.server_total}}
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-around;">
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.order.cycle_total}}</span>
|
||||
<span>即将到期</span>
|
||||
</div>
|
||||
<div class="boxcontentitem-small">
|
||||
<span>{{totaldata.order.unit_total}}</span>
|
||||
<span>进行中</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CountTo from 'vue-count-to'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
countsData: {
|
||||
type: Object
|
||||
},
|
||||
totaldata: {
|
||||
type: Object,
|
||||
default: {
|
||||
|
||||
"business": {
|
||||
"server_money_total": 0,
|
||||
"nurse_money_total": 0,
|
||||
"remain_money_total": 0
|
||||
},
|
||||
"person_efficiency": {
|
||||
"server_time_total": "0",
|
||||
"expect": 0,
|
||||
"act": 0
|
||||
},
|
||||
"customer": {
|
||||
"active": 0,
|
||||
"add": 0,
|
||||
"wash": 0
|
||||
},
|
||||
"order": {
|
||||
"server_total": 0,
|
||||
"cycle_total": 0,
|
||||
"unit_total": 0
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
CountTo
|
||||
},
|
||||
methods: {
|
||||
handleRoute(type) {
|
||||
this.$emit('handleRoute', type)
|
||||
},
|
||||
toCaculateper(f1, f2) {
|
||||
return ((f1 / (f2 == 0 ? 1 : f2)) * 100).toFixed(2) + "%"
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.boxlist {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.statIcon {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.index_icon {
|
||||
position: absolute;
|
||||
top: 1.25rem;
|
||||
right: 1.25rem;
|
||||
width: 3.5625rem;
|
||||
}
|
||||
|
||||
.index_bg {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
.boxcontentitem-small {
|
||||
font-size: 16px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
|
||||
.box {
|
||||
position: relative;
|
||||
width: 33%;
|
||||
margin-left: 0.5%;
|
||||
margin-right: 0.5%;
|
||||
margin-bottom: 2.375rem;
|
||||
box-shadow: 0px 8px 15px 0px rgba(212, 84, 32, 0.3100);
|
||||
border-radius: 8px;
|
||||
box-sizing: border-box;
|
||||
opacity: 0.8;
|
||||
padding: 1.25rem 0;
|
||||
|
||||
.boxcontentsubtitle {
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-size: 1.0625rem;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
||||
.boxfooter {
|
||||
font-size: 1.0625rem;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.boxtitle {
|
||||
font-size: 20px;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
padding: 0 1.25rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.boxcontent {
|
||||
display: flex;
|
||||
//justify-content: space-around;
|
||||
align-items: center;
|
||||
|
||||
.boxline {
|
||||
width: 1px;
|
||||
height: 4.0625rem;
|
||||
background: #FFFFFF00;
|
||||
opacity: 0.3;
|
||||
margin-left: 2.0625rem;
|
||||
margin-right: 2.0625rem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.boxcontentitem {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 19px;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
min-width: 100%;
|
||||
|
||||
.boxcontentitem-big {
|
||||
font-size: 2.625rem;
|
||||
font-family: Arial;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.box1 {
|
||||
background: linear-gradient(134deg, #019239, #64db92);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #64db92;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.bline {
|
||||
background: linear-gradient(to right, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0) 60%);
|
||||
height: 0.25rem;
|
||||
width: 100%;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
||||
.box2 {
|
||||
background: linear-gradient(134deg, #4486c4, #8bb1d5);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #8bb1d5;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.box3 {
|
||||
|
||||
background: linear-gradient(-55deg, #F6A868, #F4C59E);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #F4C59E;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.box4 {
|
||||
|
||||
background: linear-gradient(-55deg, #64A48E, #9ECABB);
|
||||
|
||||
.boxcline {
|
||||
width: 100%;
|
||||
background: #9ECABB;
|
||||
height: 0.125rem;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-group {
|
||||
// margin-top: 18px;
|
||||
margin-left: -2% !important;
|
||||
margin-right: -3% !important;
|
||||
|
||||
.card-panel-col {
|
||||
margin: 0 2%;
|
||||
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-panel {
|
||||
height: 130px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
color: #666;
|
||||
text-align: center;
|
||||
// background: #fff;
|
||||
// box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
|
||||
// border-color: rgba(0, 0, 0, .05);
|
||||
|
||||
&:hover {
|
||||
.card-panel-icon-wrapper {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
// .icon-people {
|
||||
// background: #40c9c6;
|
||||
// }
|
||||
|
||||
// .icon-message {
|
||||
// background: #36a3f7;
|
||||
// }
|
||||
|
||||
// .icon-money {
|
||||
// background: #f4516c;
|
||||
// }
|
||||
|
||||
// .icon-shopping {
|
||||
// background: #34bfa3
|
||||
// }
|
||||
}
|
||||
|
||||
.icon-people {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-message {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-money {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.icon-shopping {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.card-panel-icon-wrapper {
|
||||
float: right;
|
||||
margin: 22px 0 0 14px;
|
||||
padding: 16px;
|
||||
transition: all 0.38s ease-out;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.card-panel-icon {
|
||||
float: left;
|
||||
font-size: 42px;
|
||||
}
|
||||
|
||||
.card-panel-description {
|
||||
// float: right;
|
||||
font-weight: bold;
|
||||
margin: 16px 12px;
|
||||
|
||||
.card-panel-text {
|
||||
line-height: 25px;
|
||||
color: rgb(255, 255, 255);
|
||||
font-size: 26px;
|
||||
margin-bottom: 20px;
|
||||
width: 70%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: left;
|
||||
font-size: 19px;
|
||||
}
|
||||
|
||||
.card-panel-num {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width:550px) {
|
||||
.card-panel-description {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card-panel-icon-wrapper {
|
||||
float: none !important;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 !important;
|
||||
|
||||
.svg-icon {
|
||||
display: block;
|
||||
margin: 14px auto !important;
|
||||
float: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Loading…
Reference in new issue