商品页面的显示逻辑

v1.0.0
于肖磊 2024-08-22 15:26:13 +08:00
parent 9ffd40a2f4
commit 2ed25dcad5
1 changed files with 21 additions and 19 deletions

View File

@ -23,9 +23,7 @@
<div class="flex-col gap-10 top-title"> <div class="flex-col gap-10 top-title">
<div v-if="is_show('0')" :class="text_line" :style="trends_config('title')">{{ item.title }}</div> <div v-if="is_show('0')" :class="text_line" :style="trends_config('title')">{{ item.title }}</div>
<div v-if="show_content && is_show('1')" class="flex-row gap-5"> <div v-if="show_content && is_show('1')" class="flex-row gap-5">
<div class="one1 radius-sm size-9 pl-3 pr-3">{{ '满减活动' }}</div> <div v-for="(icon_data, icon_index) in item.plugins_view_icon_data" :key="icon_index" class="radius-sm size-9 pl-3 pr-3" :style="icon_style(icon_data)">{{ icon_data.name }}</div>
<div class="one2 radius-sm size-9 pl-3 pr-3">{{ '包邮' }}</div>
<div class="one3 radius-sm size-9 pl-3 pr-3">{{ '领劵' }}</div>
</div> </div>
</div> </div>
<div v-if="!['3', '4', '5'].includes(form.product_style)" class="flex-col gap-5 oh"> <div v-if="!['3', '4', '5'].includes(form.product_style)" class="flex-col gap-5 oh">
@ -37,7 +35,7 @@
</div> </div>
<div v-if="show_content && is_show('5')" class="size-10 flex"> <div v-if="show_content && is_show('5')" class="size-10 flex">
<span class="original-price-left"></span <span class="original-price-left"></span
><span class="original-price flex-1 text-line-1" ><span :class="['original-price text-line-1', { 'flex-1': form.is_price_solo }]"
>{{ item.show_original_price_symbol }}{{ item.min_original_price }} >{{ item.show_original_price_symbol }}{{ item.min_original_price }}
<template v-if="is_show('7')"> <template v-if="is_show('7')">
{{ item.show_original_price_unit }} {{ item.show_original_price_unit }}
@ -48,7 +46,8 @@
<div class="flex-row jc-sb align-e"> <div class="flex-row jc-sb align-e">
<div> <div>
<div v-if="show_content" class="flex-row align-c size-10"> <div v-if="show_content" class="flex-row align-c size-10">
<div v-if="is_show('3')" :class="['pr-5', {'br-r-e': is_show('3') && is_show('4')}]" :style="trends_config('sold_number')">{{ item.sales_count }}</div> <div v-if="is_show('3')" class="pr-5" :style="trends_config('sold_number')">{{ item.sales_count }}</div>
<!-- <div v-if="is_show('3')" :class="['pr-5', {'br-r-e': is_show('3') && is_show('4')}]" :style="trends_config('sold_number')">{{ item.sales_count }}</div> -->
<!-- <div v-if="is_show('4')" class="pl-5" :style="trends_config('score')">0</div> --> <!-- <div v-if="is_show('4')" class="pl-5" :style="trends_config('score')">0</div> -->
</div> </div>
</div> </div>
@ -122,6 +121,13 @@ const form = computed(() => props.value?.content || {});
const new_style = computed(() => props.value?.style || {}); const new_style = computed(() => props.value?.style || {});
// //
interface plugins_icon_data {
name: string;
bg_color: string;
br_color: string;
color: string;
url: string;
}
interface product_list { interface product_list {
title: string; title: string;
images: string; images: string;
@ -133,6 +139,7 @@ interface product_list {
show_price_symbol: string; show_price_symbol: string;
show_price_unit: string; show_price_unit: string;
sales_count: string; sales_count: string;
plugins_view_icon_data: plugins_icon_data[];
} }
const default_list = { const default_list = {
title: '华为荣耀畅享平板换屏服务 屏幕换外屏', title: '华为荣耀畅享平板换屏服务 屏幕换外屏',
@ -144,6 +151,7 @@ const default_list = {
sales_count: '1000', sales_count: '1000',
images: '', images: '',
new_url: [], new_url: [],
plugins_view_icon_data: []
}; };
const list = ref<product_list[]>([]); const list = ref<product_list[]>([]);
@ -312,6 +320,14 @@ const style_config = (typeface: string, size: number, color: string | object, ty
const button_gradient = () => { const button_gradient = () => {
return gradient_handle(new_style.value.shop_button_color, '90deg'); return gradient_handle(new_style.value.shop_button_color, '90deg');
}; };
// icon
const icon_style = (item: { bg_color: string; color: string; br_color: string; }) => {
let style = `background: ${item.bg_color};color: ${item.color};`;
if (!isEmpty(item.br_color)) {
style += `border: 1px solid ${item.br_color};`
}
return style;
}
// //
const style_container = computed(() => { const style_container = computed(() => {
if (props.isCommonStyle) { if (props.isCommonStyle) {
@ -350,20 +366,6 @@ const style_container = computed(() => {
height: v-bind(button_size); height: v-bind(button_size);
line-height: v-bind(button_size); line-height: v-bind(button_size);
} }
.one1 {
border: 1px solid #ea3323;
background: #ea3323;
color: #fff;
}
.one2 {
border: 1px solid #ea3323;
color: #ea3323;
}
.one3 {
border: 1px solid #ffc300;
color: #ffc300;
}
.two-columns { .two-columns {
width: calc((100% - v-bind(two_columns)) / 2); width: calc((100% - v-bind(two_columns)) / 2);
} }