@ywfe/materials-design
Version:
YwDesign for lowcode
388 lines (384 loc) • 13 kB
text/typescript
import { IPublicTypeComponentMetadata, IPublicTypeSnippet } from '@alilc/lowcode-types';
const TableGoodsInfoMeta: IPublicTypeComponentMetadata = {
componentName: 'TableGoodsInfo',
title: '商品信息',
docUrl: '',
screenshot: '',
devMode: 'proCode',
group: '基础组件',
category: '表格子元素',
npm: {
package: '@ywfe/materials-design',
version: '0.1.0',
exportName: 'TableInfo',
main: 'src/index.tsx',
destructuring: true,
subName: '',
},
configure: {
props: [
{
title: '商品信息',
name: 'value',
setter: {
componentName: 'ObjectSetter',
props: {
config: {
title: '基本信息',
display: 'block',
type: 'group',
items: [
{
name: 'tooltip.value',
title: { label: '商品Id', tip: '选择商品ID字段' },
isRequired: false,
supportVariable: false,
setter: {
componentName: 'MixedSetter',
props: {
setters: ['VariableSetter'],
},
},
},
{
name: 'imgUrl',
title: { label: '商品图片', tip: '选择商品图片字段' },
supportVariable: false,
setter: {
componentName: 'MixedSetter',
props: {
setters: ['VariableSetter'],
},
},
},
{
name: 'emptyText',
title: { label: '商品缺省文案', tip: '输入商品缺省文案' },
setter: 'StringSetter',
defaultValue: '-',
},
{
name: 'isEmpty',
title: { label: '空数据', tip: '是否空数据' },
supportVariable: false,
setter: {
componentName: 'MixedSetter',
props: {
setters: ['VariableSetter'],
},
},
},
{
name: 'price',
title: { label: '商品价格', tip: '商品价格' },
supportVariable: false,
setter: {
componentName: 'MixedSetter',
props: {
setters: ['VariableSetter'],
},
},
},
// {
// name: 'price',
// title: { label: '商品价格', tip: '商品价格' },
// setter: 'ArraySetter',
// defaultValue: null,
// extraProps: {
// setValue: (target, value) => {
// console.log('------', value);
// if (!value || !value?.length) {
// target.parent.setPropsValue('price', null);
// }
// },
// },
// },
{
name: 'title',
title: '商品名称',
setter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'value',
title: { label: '名称', tip: '名称' },
supportVariable: false,
setter: {
componentName: 'MixedSetter',
props: {
setters: ['VariableSetter'],
},
},
},
{
name: 'tooltip',
title: { label: '悬浮提示', tip: '是否开启商品名称悬浮提示' },
setter: 'BoolSetter',
defaultValue: true,
},
{
name: 'onClick',
title: { label: '查看详情', tip: 'onClick | 是否点击查看详情' },
setter: 'FunctionSetter',
},
{
name: 'tag',
title: { label: '标签', tip: '商品标签' },
setter: {
componentName: 'SlotSetter',
hideParams: true,
title: '商品标签',
initialValue: {
type: 'JSSlot',
params: ['text', 'record'],
value: [
// {
// componentProps: 'YwTag',
// props: {
// text: '新品',
// color: '#07C160',
// },
// },
],
},
},
},
],
},
},
},
},
],
},
},
},
},
// {
// name: '_priceInfo',
// title: '商品价格',
// setter: {
// componentName: 'ObjectSetter',
// props: {
// config: {
// items: [
// {
// name: '_price',
// title: { label: '精确价格', tip: '商品精确价格' },
// setter: 'StringSetter',
// },
// {
// name: '_min_price',
// title: { label: '最低价格', tip: '商品最低价格' },
// setter: 'StringSetter',
// },
// {
// name: '_max_price',
// title: { label: '最高价格', tip: '商品最高价格' },
// setter: 'StringSetter',
// },
// ],
// },
// },
// },
// extraProps: {
// setValue: (target, value) => {
// if (value) {
// const { _price, _min_price, _max_price } = value;
// target.parent.setPropValue('value.price', {
// type: 'JSExpression',
// value: `[this.record.${_min_price || _price}, this.record.${_max_price} || ""]`,
// });
// }
// },
// },
// },
{
name: 'value.tags',
title: '商品标签',
// YwTag 补充后再加
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
title: {
label: '标签文字',
tip: 'value | 标签文字',
},
name: 'value',
description: '标签文字',
isRequired: true,
setter: {
componentName: 'MixedSetter',
props: {
setters: ['VariableSetter'],
},
},
},
{
title: {
label: '是否显示',
tip: 'visible | 是否显示',
},
name: 'visible',
defaultValue: true,
supportVariable: false,
setter: {
componentName: 'MixedSetter',
props: {
setters: ['VariableSetter'],
},
},
},
{
title: {
label: '颜色',
},
name: 'color',
supportVariable: false,
setter: {
componentName: 'MixedSetter',
props: {
setters: ['VariableSetter'],
},
},
},
],
},
},
initialValue: {
value: '正价',
},
},
},
defaultValue: [],
},
},
{
name: 'value.items',
title: '商品描述',
// YwTag 补充后再加
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
title: '名称',
name: 'label',
setter: 'StringSetter',
},
{
title: { label: '字段', tip: '选择需要显示的字段' },
name: 'value',
setter: 'StringSetter',
},
{
title: '行数',
name: 'row',
setter: 'NumberSetter',
defaultValue: 1,
},
{
title: '悬浮提示',
name: 'tooltip',
setter: 'BoolSetter',
},
{
title: '可复制',
name: 'isCopy',
setter: 'BoolSetter',
},
],
},
},
initialValue: () => {
return {
label: '名称',
value: '字段',
row: 1,
tooltip: false,
isCopy: false,
visible: true, // 为了修复添加一项时 visible找不到报错的问题
};
},
},
},
},
},
],
supports: {
style: true,
},
component: {},
},
};
const snippets: IPublicTypeSnippet[] = [
{
title: '商品详情',
screenshot: 'https://yw-fed-static.oss-cn-hangzhou.aliyuncs.com/lowcode/goodsDetail',
schema: {
componentName: 'TableGoodsInfo',
props: {
type: 'goods', // 默认商品详情
emptyText: '-',
value: {
isEmpty: false,
emptyText: '未匹配商品信息',
imgUrl:
'https://daichongtest.oss-cn-hangzhou.aliyuncs.com/goods/config/2022/07/0e363d69-5988-4325-96d2-4eda40daa90b.jpg',
// price: ['23.00', '11111.00'], // price:'23.00',
title: {
value: '商品名称商品名称商品名称商品名称商品名称商品名称商品名称',
tooltip: true,
// tag: <YwTag text="新品" color="#07C160" />, // 商品标题标签
onClick: () => {},
},
// 默认
tooltip: {
label: '商品ID',
isCopy: true,
},
// tags: [
// { color: '#0B8746', value: '合格一等品' },
// { color: '#EF813E', bizName: 'amount', value: ['佣金', '18.00%'] },
// { value: '零售', visible: true, tooltip: { value: '这是个没人用的功能' } },
// { value: '正价' },
// { value: '快手CPS' },
// { value: '已质检', visible: true, tooltip: { value: '这是个没人用的功能' } },
// { value: '组合品' },
// ],
items: [
{
label: '规格',
value: '34234324324234',
row: 1,
isCopy: true,
onClick: () => {},
visible: () => true,
},
{
label: '',
tooltip: true,
value: '黑色S 仅100件',
visible: () => true,
},
],
},
},
},
},
];
export default {
...TableGoodsInfoMeta,
snippets,
};