99 lines
2.3 KiB
Vue
99 lines
2.3 KiB
Vue
<!--进度组件-->
|
|
<template>
|
|
<div>
|
|
<!-- 三项非全0-->
|
|
<div class="progress" v-if="(data.allPayment + data.partPayment + data.notPayment) !== 0">
|
|
<!-- 将全部付款和部分付款放入一个div中-->
|
|
<div class="full-and-partial"
|
|
:style="{width: (data.allPayment + data.partPayment)/(data.allPayment + data.partPayment + data.notPayment) * 100 + '%'}">
|
|
<!-- 全部付款-->
|
|
<div :style="{width: data.allPayment/(data.allPayment + data.partPayment) * 100 + '%'}"
|
|
class="progress-item pay-in-full" v-if="data.allPayment !== 0">
|
|
{{ data.allPayment }}
|
|
</div>
|
|
<!-- 部分付款-->
|
|
<div :style="{width: data.partPayment/(data.allPayment + data.partPayment) * 100 + '%'}"
|
|
class="progress-item partial-payment" v-if="data.partPayment !== 0">
|
|
{{ data.partPayment }}
|
|
</div>
|
|
</div>
|
|
<div :style="{width: data.notPayment/(data.allPayment + data.partPayment + data.notPayment) * 100 + '%'}"
|
|
class="progress-item non-payment" v-if="data.notPayment !== 0">
|
|
{{ data.notPayment }}
|
|
</div>
|
|
</div>
|
|
<!-- 三项均为0-->
|
|
<div class="progress progress-null" v-else>0</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'ProgressBar',
|
|
props: {
|
|
/**
|
|
* 进度字段,
|
|
* {
|
|
* allPayment: 10, // 已付全款
|
|
* partPayment: 10, // 部分付款
|
|
* notPayment: 10, // 未付款
|
|
* }
|
|
*/
|
|
data: {
|
|
type: Object,
|
|
required: false,
|
|
default: () => {
|
|
return {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="less">
|
|
.progress {
|
|
border-radius: 10px;
|
|
background: #e8e8e8;
|
|
height: 20px;
|
|
width: 100%;
|
|
display: flex;
|
|
overflow: hidden;
|
|
|
|
&-null {
|
|
justify-content: center;
|
|
}
|
|
}
|
|
|
|
.no-display {
|
|
display: none;
|
|
}
|
|
|
|
.full-and-partial {
|
|
background: linear-gradient(0deg, #0075a9 0%, #008dcc 100%);
|
|
display: flex;
|
|
border-radius: 10px;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.progress-item {
|
|
height: 20px;
|
|
border-radius: 10px;
|
|
color: white;
|
|
line-height: 20px;
|
|
text-align: center;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.pay-in-full {
|
|
background: linear-gradient(0deg, #069f99 0%, #07b1aa 100%);
|
|
}
|
|
|
|
.partial-payment {
|
|
background: linear-gradient(0deg, #0075a9 0%, #008dcc 100%);
|
|
}
|
|
|
|
.non-payment {
|
|
color: #57635e;
|
|
background: #e8e8e8;
|
|
}
|
|
</style> |