| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | <!-- 装修商品组件:标题栏 --><template>	<view class="ss-title-wrap ss-flex ss-col-center" :class="[state.typeMap[data.textAlign]]" :style="[bgStyle, { marginLeft: `${data.space}px` }]">		<view class="title-content">			<!-- 主标题 -->			<view v-if="data.title" class="title-text" :style="[titleStyles]">{{ data.title }}</view>			<!-- 副标题 -->			<view v-if="data.description" :style="[descStyles]" class="sub-title-text">{{ data.description }}</view>		</view>		<!-- 查看更多 -->		<view v-if="data.more?.show" class="more-box ss-flex ss-col-center" @tap="sheep.$router.go(data.more.url)"			:style="{color: data.descriptionColor}">			<view class="more-text" v-if="data.more.type !== 'icon'">{{ data.more.text }} </view>			<text class="_icon-forward" v-if="data.more.type !== 'text'"></text>		</view>	</view></template><script setup>	/**	 * 标题栏	 */	import {		reactive,		computed	} from 'vue';	import sheep from '@/sheep';	// 数据	const state = reactive({		typeMap: {			left: 'ss-row-left',			center: 'ss-row-center',		},	});	// 接收参数	const props = defineProps({		// 装修数据		data: {			type: Object,			default: () => ({}),		},		// 装修样式		styles: {			type: Object,			default: () => ({}),		},	});	// 设置背景样式	const bgStyle = computed(() => {		// 直接从 props.styles 解构		const {			bgType,			bgImg,			bgColor		} = props.styles;		// 根据 bgType 返回相应的样式		return {			background: bgType === 'img' ? `url(${bgImg}) no-repeat top center / 100% 100%` : bgColor		};	});	// 标题样式	const titleStyles = {		color: props.data.titleColor,		fontSize: `${props.data.titleSize}px`,		textAlign: props.data.textAlign	};	// 副标题	const descStyles = {		color: props.data.descriptionColor,		textAlign: props.data.textAlign,		fontSize: `${props.data.descriptionSize}px`,		fontWeight: `${props.data.descriptionWeight}px`,	};</script><style lang="scss" scoped>	.ss-title-wrap {		height: 80rpx;		position: relative;		.title-content {			.title-text {				font-size: 30rpx;				color: #333;			}			.sub-title-text {				font-size: 22rpx;				color: #999;			}		}		.more-box {			white-space: nowrap;			font-size: 22rpx;			color: #999;			position: absolute;			top: 50%;			transform: translateY(-50%);			right: 20rpx;		}	}</style>
 |