<template>
|
<div class="scaleBar">
|
<div v-if="direction=='left'" class="scaleCon leftScale">
|
<div class="line"></div>
|
<div class="number">
|
<div class="split">{{computedMark("add",3)}}</div>
|
<div class="split">{{computedMark("add",2)}}</div>
|
<div class="split">{{computedMark("add",1)}}</div>
|
<div class="split active">{{value}}</div>
|
<div class="split">{{computedMark("sub",1)}}</div>
|
<div class="split">{{computedMark("sub",2)}}</div>
|
<div class="split">{{computedMark("sub",3)}}</div>
|
<div class="split">{{computedMark("sub",4)}}</div>
|
<div class="split">{{computedMark("sub",5)}}</div>
|
</div>
|
</div>
|
<div v-else class="scaleCon rightScale">
|
<div class="number">
|
<div class="split">{{computedMark("add",3)}}</div>
|
<div class="split">{{computedMark("add",2)}}</div>
|
<div class="split">{{computedMark("add",1)}}</div>
|
<div class="split active">{{value}}</div>
|
<div class="split">{{computedMark("sub",1)}}</div>
|
<div class="split">{{computedMark("sub",2)}}</div>
|
<div class="split">{{computedMark("sub",3)}}</div>
|
<div class="split">{{computedMark("sub",4)}}</div>
|
<div class="split">{{computedMark("sub",5)}}</div>
|
</div>
|
<div class="line"></div>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import FC from "../../assets/js/FC"
|
export default {
|
props: {
|
direction: {
|
type: String,
|
default: 'left'
|
},
|
value: {
|
type: Number
|
},
|
splitNum: {
|
type: Number
|
},
|
},
|
data() {
|
return {
|
|
}
|
},
|
methods: {
|
computedMark(type, multiple) {
|
switch (type) {
|
case "add":
|
return FC.add(this.value, FC.mul(multiple, this.splitNum))
|
break;
|
case "sub":
|
return FC.sub(this.value, FC.mul(multiple, this.splitNum))
|
break;
|
default:
|
break;
|
}
|
}
|
},
|
}
|
</script>
|
|
<style scoped>
|
.scaleCon {
|
height: 300px;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
}
|
|
.line {
|
width: 1px;
|
height: 300px;
|
background-color: #4b74da;
|
}
|
|
.number {
|
height: 300px;
|
display: flex;
|
justify-content: center;
|
flex-direction: column;
|
}
|
|
.split {
|
font-size: 12px;
|
color: #ffffff;
|
position: relative;
|
margin: 2px 0;
|
}
|
|
.split.active {
|
color: #ffe329;
|
font-weight: bold;
|
}
|
|
.leftScale .split {
|
padding-left: 20px;
|
}
|
|
.rightScale .split {
|
padding-right: 20px;
|
}
|
|
.leftScale .split::before {
|
display: block;
|
content: "";
|
width: 11px;
|
height: 1px;
|
background-color: #4b74da;
|
position: absolute;
|
left: 0;
|
top: 50%;
|
}
|
|
.rightScale .split::before {
|
display: block;
|
content: "";
|
width: 11px;
|
height: 1px;
|
background-color: #4b74da;
|
position: absolute;
|
right: 0;
|
top: 50%;
|
}
|
</style>
|