123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <template>
- <div
- style="width: 100%;height: 100%"
- class="bs-design-wrap"
- >
- <dv-border-box-7
- :id="'dataV' + config.code"
- :key="updateKey"
- :background-color="(config.border.gradientColor&&(config.border.gradientColor[0]||config.border.gradientColor[1]))?`url(#${borderBgId})`:'transparent'"
- :color="borderColor"
- >
- <div
- v-if="config.border.isTitle"
- class="element"
- :style="`
- color:${color};
- font-size:${config.border.fontSize}px;
- line-height:${config.border.titleHeight}px;
- height:${config.border.titleHeight};
- padding:0 0 0 20px`"
- >
- {{ config.title }}
- </div>
- </dv-border-box-7>
- </div>
- </template>
- <script>
- import { refreshComponentMixin } from 'data-room-ui/js/mixins/refreshComponent'
- import DvBorderBox7 from '@jiaminghi/data-view/lib/components/borderBox7/src/main.vue'
- import '@jiaminghi/data-view/lib/components/borderBox7/src/main.css'
- export default {
- name: 'Border7',
- components: {
- DvBorderBox7
- },
- mixins: [refreshComponentMixin],
- props: {
- // 卡片的属性
- config: {
- type: Object,
- default: () => ({})
- }
- },
- data () {
- return {
- borderBgId: `borderBg${this.config.code}`
- }
- },
- computed: {
- borderColor () {
- return this.config.border.borderMainColor ||
- this.config.border.borderSecondaryColor
- ? [
- this.config.border.borderMainColor,
- this.config.border.borderSecondaryColor
- ]
- : null
- },
- color () {
- return this.config.border.fontColor ? this.config.border.fontColor
- : '#fff'
- }
- },
- watch: {
- updateKey: {
- handler (val) {
- this.$nextTick(() => {
- this.changeColor()
- })
- },
- deep: true
- },
- 'config.border.gradientColor': {
- handler (val) {
- this.changeColor()
- },
- immediate: true
- },
- 'config.border.gradientDirection': {
- handler (val) {
- this.changeColor()
- },
- immediate: true
- },
- 'config.border.opacity': {
- handler (val) {
- this.changeColor()
- },
- immediate: true
- }
- },
- mounted () {
- this.changeColor()
- },
- methods: {
- changeColor () {
- if (!this.config.border.opacity) {
- this.config.border.opacity = 100
- }
- if (!this.config.border.gradientColor) return
- if (document.querySelector(`#dataV${this.config.code}`)) {
- const borderElement = document.querySelector(`#dataV${this.config.code}`).querySelector('.border') || document.querySelector(`#dataV${this.config.code}`)?.querySelector('.dv-border-svg-container')
- if (borderElement) {
- borderElement.style.opacity = (this.config.border.opacity / 100)
- borderElement.style.background = `linear-gradient(${this.config.border.gradientDirection},${this.config.border.gradientColor[0] ? this.config.border.gradientColor[0] : this.config.border.gradientColor[1]}, ${this.config.border.gradientColor[1] ? this.config.border.gradientColor[1] : this.config.border.gradientColor[0]})`
- }
- }
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .bs-design-wrap {
- position: absolute;
- width: 100%;
- height: 100%;
- // padding: 0 16px;
- background-color: transparent;
- border-radius: 4px;
- box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1);
- box-sizing: border-box;
- }
- /*滚动条样式*/
- ::v-deep ::-webkit-scrollbar {
- width: 4px;
- border-radius: 4px;
- height: 4px;
- }
- ::v-deep ::-webkit-scrollbar-thumb {
- background: #dddddd !important;
- border-radius: 10px;
- }
- </style>
|