houzhongjian
2024-08-08 820397e43a0b64d35c6d31d2a55475061438593b
提交 | 用户 | 时间
820397 1 import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util'
H 2
3 /** 商品卡片属性 */
4 export interface ProductCardProperty {
5   // 布局类型:单列大图 | 单列小图 | 双列
6   layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol'
7   // 商品字段
8   fields: {
9     // 商品名称
10     name: ProductCardFieldProperty
11     // 商品简介
12     introduction: ProductCardFieldProperty
13     // 商品价格
14     price: ProductCardFieldProperty
15     // 商品市场价
16     marketPrice: ProductCardFieldProperty
17     // 商品销量
18     salesCount: ProductCardFieldProperty
19     // 商品库存
20     stock: ProductCardFieldProperty
21   }
22   // 角标
23   badge: {
24     // 是否显示
25     show: boolean
26     // 角标图片
27     imgUrl: string
28   }
29   // 按钮
30   btnBuy: {
31     // 类型:文字 | 图片
32     type: 'text' | 'img'
33     // 文字
34     text: string
35     // 文字按钮:背景渐变起始颜色
36     bgBeginColor: string
37     // 文字按钮:背景渐变结束颜色
38     bgEndColor: string
39     // 图片按钮:图片地址
40     imgUrl: string
41   }
42   // 上圆角
43   borderRadiusTop: number
44   // 下圆角
45   borderRadiusBottom: number
46   // 间距
47   space: number
48   // 商品编号列表
49   spuIds: number[]
50   // 组件样式
51   style: ComponentStyle
52 }
53 // 商品字段
54 export interface ProductCardFieldProperty {
55   // 是否显示
56   show: boolean
57   // 颜色
58   color: string
59 }
60
61 // 定义组件
62 export const component = {
63   id: 'ProductCard',
64   name: '商品卡片',
65   icon: 'fluent:text-column-two-left-24-filled',
66   property: {
67     layoutType: 'oneColBigImg',
68     fields: {
69       name: { show: true, color: '#000' },
70       introduction: { show: true, color: '#999' },
71       price: { show: true, color: '#ff3000' },
72       marketPrice: { show: true, color: '#c4c4c4' },
73       salesCount: { show: true, color: '#c4c4c4' },
74       stock: { show: false, color: '#c4c4c4' }
75     },
76     badge: { show: false, imgUrl: '' },
77     btnBuy: {
78       type: 'text',
79       text: '立即购买',
80       // todo: @owen 根据主题色配置
81       bgBeginColor: '#FF6000',
82       bgEndColor: '#FE832A',
83       imgUrl: ''
84     },
85     borderRadiusTop: 8,
86     borderRadiusBottom: 8,
87     space: 8,
88     spuIds: [],
89     style: {
90       bgType: 'color',
91       bgColor: '',
92       marginLeft: 8,
93       marginRight: 8,
94       marginBottom: 8
95     } as ComponentStyle
96   }
97 } as DiyComponent<ProductCardProperty>