dykj-outsource-12123/uni_modules/uni-ui/components/uni-title/uni-title.vue
2024-06-26 09:12:03 +08:00

171 lines
3.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="uni-title__box" :style="{'align-items':textAlign}">
<text class="uni-title__base" :class="['uni-'+type]" :style="{'color':color}">{{title}}</text>
</view>
</template>
<script>
/**
* Title 章节标题
* @description 章节标题通常用于记录页面标题使用当前组件uni-app 如果开启统计,将会自动统计页面标题
* @tutorial https://ext.dcloud.net.cn/plugin?id=1066
* @property {String} type = [h1|h2|h3|h4|h5] 标题类型
* @value h1 一级标题
* @value h2 二级标题
* @value h3 三级标题
* @value h4 四级标题
* @value h5 五级标题
* @property {String} title 章节标题内容
* @property {String} align = [left|center|right] 对齐方式
* @value left 做对齐
* @value center 居中对齐
* @value right 右对齐
* @property {String} color 字体颜色
* @property {Boolean} stat = [true|false] 是否开启统计功能呢如不填写type值默认为开启填写 type 属性,默认为关闭
*/
export default {
props: {
type: {
type: String,
default: ''
},
title: {
type: String,
default: ''
},
align: {
type: String,
default: 'left'
},
color: {
type: String,
default: '#333333'
},
stat: {
type: [Boolean, String],
default: ''
}
},
data() {
return {
};
},
computed: {
textAlign() {
let align = 'center';
switch (this.align) {
case 'left':
align = 'flex-start'
break;
case 'center':
align = 'center'
break;
case 'right':
align = 'flex-end'
break;
}
return align
}
},
watch: {
title(newVal) {
if (this.isOpenStat()) {
// 上报数据
if (uni.report) {
uni.report('title', this.title)
}
}
}
},
mounted() {
if (this.isOpenStat()) {
// 上报数据
if (uni.report) {
uni.report('title', this.title)
}
}
},
methods: {
isOpenStat() {
if (this.stat === '') {
this.isStat = false
}
let stat_type = (typeof(this.stat) === 'boolean' && this.stat) || (typeof(this.stat) === 'string' && this.stat !==
'')
if (this.type === "") {
this.isStat = true
if (this.stat.toString() === 'false') {
this.isStat = false
}
}
if (this.type !== '') {
this.isStat = true
if (stat_type) {
this.isStat = true
} else {
this.isStat = false
}
}
return this.isStat
}
}
}
</script>
<style scoped>
/* .uni-title {
} */
.uni-title__box {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
align-items: flex-start;
justify-content: center;
padding: 8px 0;
flex: 1;
}
.uni-title__base {
font-size: 15px;
color: #333;
font-weight: 500;
}
.uni-h1 {
font-size: 20px;
color: #333;
font-weight: bold;
}
.uni-h2 {
font-size: 18px;
color: #333;
font-weight: bold;
}
.uni-h3 {
font-size: 16px;
color: #333;
font-weight: bold;
/* font-weight: 400; */
}
.uni-h4 {
font-size: 14px;
color: #333;
font-weight: bold;
/* font-weight: 300; */
}
.uni-h5 {
font-size: 12px;
color: #333;
font-weight: bold;
/* font-weight: 200; */
}
</style>