SkuTable компонент
На основе Layui — SkuTable компонент. Согласно конфигурации динамически генерируется sku таблица.
Соответствующая ветка v1. Данные таблицы проще. Для обработки данных в бэкенде см.: V1 версия PHP обработка пример кода.
— Правила/спецификации значений можно добавлять и удалять. — Строки спецификаций можно перетаскивать для сортировки. — Можно массово присваивать значения таблице SKU. — В таблицу SKU можно загружать изображения. — Если свойства атрибутов совпадают, можно включить объединение строк.
Онлайн-демонстрация:
— JQ22
— GitHub (приоритет обновления!)
Примечание: поскольку в примере вызываются локальные данные JSON, необходимо просматривать их в среде сервера. Прямой просмотр локального файла вызовет проблемы с междоменными запросами!
CREATE TABLE `product` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL COMMENT '商品标题' COLLATE 'utf8mb4_unicode_ci',
`cover` VARCHAR(100) NULL DEFAULT '' COMMENT '封面图' COLLATE 'utf8mb4_unicode_ci',
`category_id` INT(11) UNSIGNED NOT NULL COMMENT '分类id',
`sketch` VARCHAR(200) NULL DEFAULT '' COMMENT '简述' COLLATE 'utf8mb4_unicode_ci',
`intro` TEXT NOT NULL COMMENT '商品描述' COLLATE 'utf8mb4_unicode_ci',
`keywords` VARCHAR(200) NULL DEFAULT '' COMMENT '商品关键字' COLLATE 'utf8mb4_unicode_ci',
`tags` VARCHAR(200) NULL DEFAULT '' COMMENT '标签' COLLATE 'utf8mb4_unicode_ci',
`sales` INT(11) NOT NULL DEFAULT '0' COMMENT '虚拟购买量',
`real_sales` INT(10) NOT NULL DEFAULT '0' COMMENT '实际销量',
`total_sales` INT(11) NULL DEFAULT '0' COMMENT '总销量',
`price` DECIMAL(8,2) NOT NULL COMMENT '商品价格',
`market_price` DECIMAL(8,2) NULL DEFAULT '0.00' COMMENT '市场价格',
`cost_price` DECIMAL(19,2) NULL DEFAULT '0.00' COMMENT '成本价',
`stock` INT(11) NOT NULL DEFAULT '0' COMMENT '库存量',
`warning_stock` INT(11) NOT NULL DEFAULT '0' COMMENT '库存警告',
`covers` TEXT NOT NULL COMMENT '幻灯片' COLLATE 'utf8mb4_unicode_ci',
`is_attribute` ENUM('0','1') NULL DEFAULT '0' COMMENT '启用商品规格' COLLATE 'utf8mb4_unicode_ci',
`min_buy` INT(11) NOT NULL DEFAULT '1' COMMENT '最少买几件',
`max_buy` INT(11) NOT NULL DEFAULT '0' COMMENT '限购 0 不限购',
`view` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '商品点击数量',
`star` INT(10) UNSIGNED NOT NULL DEFAULT '5' COMMENT '好评星级',
`collect_num` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '收藏数量',
`comment_num` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '评价数',
`transmit_num` INT(11) NOT NULL DEFAULT '0' COMMENT '分享数',
`is_stock_visible` INT(1) NOT NULL DEFAULT '1' COMMENT '库存显示 0不显示1显示',
`is_hot` INT(1) NOT NULL DEFAULT '0' COMMENT '是否热销商品',
`is_recommend` INT(1) NOT NULL DEFAULT '0' COMMENT '是否推荐',
`is_new` INT(1) NOT NULL DEFAULT '0' COMMENT '是否新品',
`sale_date` INT(11) NULL DEFAULT '0' COMMENT '上下架时间',
`unit` VARCHAR(20) NULL DEFAULT '' COMMENT '商品单位' COLLATE 'utf8mb4_unicode_ci',
`video_url` VARCHAR(100) NULL DEFAULT '' COMMENT '展示视频' COLLATE 'utf8mb4_unicode_ci',
`supplier_id` INT(11) NULL DEFAULT '0' COMMENT '供货商id',
`is_open_commission` TINYINT(4) NULL DEFAULT '0' COMMENT '是否支持分销',
`sort` INT(11) NOT NULL DEFAULT '999' COMMENT '排序',
`status` TINYINT(4) NULL DEFAULT '1' COMMENT '商品状态 0下架,1正常,10违规(禁售)',
`state` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '审核状态 -1 审核失败 0 未审核 1 审核成功',
`create_time` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` INT(10) UNSIGNED NULL DEFAULT '0' COMMENT '更新时间',
`delete_time` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `price` (`price`),
INDEX `cate_id` (`category_id`),
INDEX `view` (`view`),
INDEX `star` (`star`),
INDEX `comment_num` (`comment_num`),
INDEX `sort` (`sort`)
) COMMENT='商品表' COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;
CREATE TABLE `product_spec` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`product_id` INT(11) NOT NULL COMMENT '商品id',
`title` VARCHAR(125) NOT NULL DEFAULT '' COMMENT '规格名称' COLLATE 'utf8mb4_unicode_ci',
`create_time` INT(10)
``` ### Товарная спецификация
```sql
CREATE TABLE `product_spec` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`product_id` INT(11) NOT NULL COMMENT 'Идентификатор товара',
`create_time` INT(10) UNSIGNED NULL DEFAULT '0' COMMENT 'Время создания',
`update_time` INT(10) UNSIGNED NULL DEFAULT '0' COMMENT 'Время обновления',
PRIMARY KEY (`id`),
INDEX `product_id` (`product_id`)
) COMMENT='Таблица товарной спецификации' COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;
CREATE TABLE `product_spec_value` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`product_id` INT(11) NOT NULL COMMENT 'Идентификатор товара',
`spec_id` INT(11) NOT NULL COMMENT 'Спецификация',
`title` VARCHAR(125) NOT NULL DEFAULT '' COMMENT 'Заголовок спецификации' COLLATE 'utf8mb4_unicode_ci',
`is_checked` TINYINT(4) NOT NULL DEFAULT '0' COMMENT 'Проверено',
`create_time` INT(10) UNSIGNED NULL DEFAULT '0' COMMENT 'Время создания',
`update_time` INT(10) UNSIGNED NULL DEFAULT '0' COMMENT 'Время обновления',
PRIMARY KEY (`id`)
) COMMENT='Таблица значений товарной спецификации' COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;
CREATE TABLE `product_sku` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`product_id` INT(11) UNSIGNED NULL DEFAULT '0' COMMENT 'Идентификатор товара',
`name` VARCHAR(600) NULL DEFAULT '' COMMENT 'Название SKU, например: красный-S-мужской' COLLATE 'utf8mb4_unicode_ci',
`picture` VARCHAR(200) NULL DEFAULT '' COMMENT 'Основное изображение' COLLATE 'utf8mb4_unicode_ci',
`price` DECIMAL(8,2) NOT NULL DEFAULT '0.00' COMMENT 'Цена',
`market_price` DECIMAL(8,2) NOT NULL DEFAULT '0.00' COMMENT 'Рыночная цена',
`cost_price` DECIMAL(8,2) NOT NULL DEFAULT '0.00' COMMENT 'Себестоимость',
`wholesale_price` DECIMAL(10,2) UNSIGNED NULL DEFAULT '0.00' COMMENT 'Оптовая цена',
`stock` INT(11) NOT NULL DEFAULT '0' COMMENT 'Количество на складе',
`code` VARCHAR(100) NULL DEFAULT '' COMMENT 'Код товара' COLLATE 'utf8mb4_unicode_ci',
`barcode` VARCHAR(100) NULL DEFAULT '' COMMENT 'Штрих-код товара' COLLATE 'utf8mb4_unicode_ci',
`product_weight` DECIMAL(8,2) NULL DEFAULT '0.00' COMMENT 'Вес товара',
`product_volume` DECIMAL(8,2) NULL DEFAULT '0.00' COMMENT 'Объём товара',
`sort` INT(11) NULL DEFAULT '1999' COMMENT 'Сортировка',
`data` VARCHAR(300) NULL DEFAULT '' COMMENT 'SKU-строка, например: 1-4-8' COLLATE 'utf8mb4_unicode_ci',
`status` TINYINT(4) NULL DEFAULT '1' COMMENT 'Статус [-1: удалено; 0: запрещено; 1: разрешено]',
`create_time` INT(10) UNSIGNED NULL DEFAULT '0' COMMENT 'Время создания',
`update_time` INT(10) UNSIGNED NULL DEFAULT '0' COMMENT 'Время обновления',
PRIMARY KEY (`id`),
INDEX `product_id` (`product_id`)
) COMMENT='Товарный SKU' COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; // Запрос успешно возвращён со статусом
requestSuccessCode: 200,
// Адрес интерфейса загрузки
uploadUrl: './json/upload.json',
// Конфигурация таблицы с данными по единому артикулу
singleSkuTableConfig: {
thead: [
{title: 'Цена продажи (юани)', icon: 'layui-icon-cols'},
{title: 'Рыночная цена (юани)', icon: 'layui-icon-cols'},
{title: 'Себестоимость (юани)', icon: 'layui-icon-cols'},
{title: 'Остаток', icon: 'layui-icon-cols'},
{title: 'Статус', icon: ''},
],
tbody: [
{type: 'input', field: 'price', value: '', verify: 'required|number', reqtext: 'Цена продажи не может быть пустой'},
{type: 'input', field: 'market_price', value: '0', verify: 'required|number', reqtext: 'Рыночная цена не может быть пустой'},
{type: 'input', field: 'cost_price', value: '0', verify: 'required|number', reqtext: 'Себестоимость не может быть пустой'},
{type: 'input', field: 'stock', value: '0', verify: 'required|number', reqtext: 'Остаток не может быть пустым'},
{type: 'select', field: 'status', option: [{key: 'Вкл.', value: '1'}, {key: 'Выкл.', value: '0'}], verify: 'required', reqtext: 'Статус не может быть пустым'}
]
},
// Конфигурация таблицы данных для нескольких артикулов
multipleSkuTableConfig: {
thead: [
{title: 'Изображение', icon: ''},
{title: 'Цена продажи (юани)', icon: 'layui-icon-cols'},
{title: 'Рыночная цена (юани)', icon: 'layui-icon-cols'},
{title: 'Себестоимость (юани)', icon: 'layui-icon-cols'},
{title: 'Остаток', icon: 'layui-icon-cols'},
{title: 'Статус', icon: ''}
],
tbody: [
{type: 'image', field: 'picture', value: '', verify: '', reqtext: ''},
{type: 'input', field: 'price', value: '', verify: 'required|number', reqtext: 'Цена продажи не может быть пустой'},
{type: 'input', field: 'market_price', value: '0', verify: 'required|number', reqtext: 'Рыночная цена не может быть пустой'},
{type: 'input', field: 'cost_price', value: '0', verify: 'required|number', reqtext: 'Себестоимость не может быть пустой'},
{type: 'input', field: 'stock', value: '0', verify: 'required|number', reqtext: 'Остаток не может быть пустым'},
{
type: 'select',
field: 'status',
option: [{key: 'Вкл.', value: '1'}, {key: 'Выкл.', value: '0'}],
verify: '',
reqtext: ''
}
]
},
// Идентификатор товара для использования со specDataUrl и skuDataUrl
productId: '',
// Данные о характеристиках товара, обычно получаемые из бэкенда
specData: [
{
id: "1",
title: "Цвет",
child: [
{id: "1", title: "Красный", checked: true},
{id: "2", title: "Жёлтый", checked: false},
{id: "3", title: "Синий", checked: false}
]
}, {
id: "2",
title: "Размер",
child: [
{id: "4", title: "S", checked: true},
{id: "5", title: "M", checked: true},
{id: "6", title: "L", checked: false},
{id: "7", title: "XL", checked: false}
]
}, {
id: "3",
title: "Стиль",
child: [
{id: "8", title: "Мужской стиль", checked: true},
{id: "9", title: "Женский стиль", checked: true}
]
}
],
// URL интерфейса для получения данных о характеристиках, если он пуст или не настроен, то используются данные из specData
// specDataUrl: './json/specData.json',
// Данные об артикулах
// При добавлении новых товаров это пустой объект
// При редактировании можно получить данные из бэкенда, они автоматически заполнят таблицу артикулов, можно удалить комментарии для просмотра эффекта
// Формат для нескольких артикулов
// skuData: {
// "skus[1-4-8][picture]": "https://www.baidu.com/img/flexible/logo/pc/result.png",
// "skus[1-4-8][price]":
*Примечание: в ответе могут быть неточности, так как некоторые фрагменты исходного текста невозможно перевести без контекста.* 100,
// "skus[1-4-8][market_price]": "200",
// "skus[1-4-8][cost_price]": "50",
// "skus[1-4-8][stock]": "18",
// "skus[1-4-8][status]": "0",
// "skus[1-4-9][picture]": "",
// "skus[1-4-9][price]": "0",
// "skus[1-4-9][market_price]": "0",
// "skus[1-4-9][cost_price]": "0",
// "skus[1-4-9][stock]": "0",
// "skus[1-4-9][status]": "1",
// "skus[1-5-8][picture]": "",
// "skus[1-5-8][price]": "0",
// "skus[1-5-8][market_price]": "0",
// "skus[1-5-8][cost_price]": "0",
// "skus[1-5-8][stock]": "0",
// "skus[1-5-8][status]": "1",
// "skus[1-5-9][picture]": "",
// "skus[1-5-9][price]": "0",
// "skus[1-5-9][market_price]": "0",
// "skus[1-5-9][cost_price]": "0",
// "skus[1-5-9][stock]": "0",
// "skus[1-5-9][status]": "1"
//},
//统一规格格式
//skuData: {
// 'price': '80',
// 'market_price': '100',
// 'cost_price': '60',
// 'stock': '999',
// 'status': '0',
//}
//获取SKU数据接口地址,如果为空或者不配置则使用skuData配置
//接口要求返回格式参考 skuData.json
//skuDataUrl: './json/skuData.json',
});
form.on('submit(submit)', function (data) {
//获取表单数据
console.log(data.field);
if (data.field.is_attribute == 1) {
//获取规格数据
console.log(obj.getSpecData());
var state = Object.keys(data.field).some(function (item, index, array) {
return item.startsWith('skus');
});
state ? layer.alert(JSON.stringify(data.field), {title: '提交的数据'}) : layer.msg('sku表数据不能为空', {icon: 5, anim: 6});
} else {
layer.alert(JSON.stringify(data.field), {title: '提交的数据'});
}
return false;
});
}); **Таблица «Система спецификаций значений»**
CREATE TABLE shop_base_product_type
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
merchant_id
int(10) unsigned DEFAULT '0' COMMENT 'Идентификатор продавца',
title
varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'Название типа',
sort
int(11) DEFAULT '999' COMMENT 'Сортировка',
spec_ids
varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'Связанные идентификаторы спецификаций',
status
tinyint(4) NOT NULL DEFAULT '1' COMMENT 'Статус (-1: удалено, 0: запрещено, 1: нормально)',
created_at
int(10) unsigned DEFAULT '0' COMMENT 'Время создания',
updated_at
int(10) unsigned DEFAULT '0' COMMENT 'Время обновления',
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Таблица типов товаров системы';
**Таблица «Тип товара системы»**
CREATE TABLE shop_base_product_type_attribute
(
id
int(11) unsigned NOT NULL AUTO_INCREMENT,
merchant_id
int(10) unsigned DEFAULT '0' COMMENT 'Идентификатор продавца',
product_type_id
int(11) NOT NULL COMMENT 'Идентификатор типа товара',
title
varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'Значение атрибута',
value
varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'Данные, соответствующие атрибуту',
type
int(11) NOT NULL DEFAULT '1' COMMENT 'Тип соответствия атрибута (1. текст, 2. один выбор, 3. несколько выборов)',
sort
int(11) NOT NULL DEFAULT '999' COMMENT 'Номер сортировки',
status
tinyint(4) NOT NULL DEFAULT '1' COMMENT 'Состояние (-1: удаленное, 0: запрещенное, 1: нормальное)',
created_at
int(10) unsigned DEFAULT '0' COMMENT 'Время создания',
updated_at
int(10) unsigned DEFAULT '0' COMMENT 'Время обновления',
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Значения атрибутов типов товаров системы';
**Таблица товаров**
CREATE TABLE shop_product
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
merchant_id
int(11) NOT NULL DEFAULT '0' COMMENT 'Код продавца',
name
varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Заголовок товара',
picture
varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Основное изображение товара',
cate_id
int(11) unsigned NOT NULL COMMENT 'Идентификатора категории товара',
brand_id
int(11) unsigned DEFAULT '0' COMMENT 'Бренд товара',
sketch
varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Краткое описание',
intro
text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Описание товара',
keywords
varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Ключевые слова',
tags
varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Теги',
marque
varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Модель товара',
barcode
varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Штрих-код',
sales
int(11) NOT NULL DEFAULT '0' COMMENT 'Виртуальные покупки',
real_sales
int(10) NOT NULL DEFAULT '0' COMMENT 'Фактические продажи',
total_sales
int(11) DEFAULT '0' COMMENT 'Общие продажи',
price
decimal(8,2) NOT NULL COMMENT 'Цена товара',
market_price
decimal(8,2) DEFAULT '0.00' COMMENT 'Рыночная цена',
cost_price
decimal(19,2) DEFAULT '0.00' COMMENT 'Себестоимость',
wholesale_price
decimal(10,2) unsigned DEFAULT '0.00' COMMENT 'Оптовая цена',
stock
int(11) NOT NULL DEFAULT '0' COMMENT 'Количество на складе',
warning_stock
int(11) NOT NULL DEFAULT '0' COMMENT 'Предупреждение о количестве на складе',
covers
text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Фоны',
posters
json DEFAULT NULL COMMENT 'Рекламные плакаты',
state
tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Статус проверки -1 проверка не пройдена 0 не проверено 1 проверка прошла успешно',
is_package
enum('0','1') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT 'Является ли это пакетом',
is_attribute
enum('0','1') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT 'Включить атрибут товара',
sort
int(11) NOT NULL DEFAULT '999' COMMENT 'Порядок сортировки',
product_status
tinyint(4) DEFAULT '1' COMMENT 'Товарный статус 0 снято с продажи, 1 нормально, 10 нарушение (запрет на продажу)',
shipping_type
tinyint(2) DEFAULT '1' COMMENT 'Способ доставки 1 бесплатная доставка 2 покупатель оплачивает доставку',
shipping_fee
decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT 'Стоимость доставки',
shipping_fee_id
int(11) NOT NULL DEFAULT '0' COMMENT 'ID шаблона доставки',
shipping_fee_type
int(11) NOT NULL DEFAULT '1' COMMENT 'Метод расчета 1. поштучно 2. по объему 3. по весу',
product_weight
decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT 'Вес товара',
product_volume
decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT
| Товарный атрибут | Тип | Описание |
| --- | --- | --- |
| `商品体积` | — | — |
| marketing_type | varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '促销类型' | Тип промоакции |
| marketing_id | int(11) NOT NULL DEFAULT '0' COMMENT '促销活动ID' | Идентификатор акции |
| marketing_price | decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品促销价格' | Промоцена товара |
| point_exchange_type | tinyint(3) NOT NULL DEFAULT '1' COMMENT '积分兑换类型' | Способ обмена баллов |
| point_exchange | int(11) NOT NULL DEFAULT '0' COMMENT '积分兑换' | Обмен баллов |
| max_use_point | int(11) NOT NULL DEFAULT '0' COMMENT '积分抵现最大可用积分数 0为不可使用' | Максимальное количество баллов для скидки |
| integral_give_type | int(1) NOT NULL DEFAULT '0' COMMENT '积分赠送类型 0固定值 1按比率' | Метод начисления баллов за покупку |
| give_point | int(11) NOT NULL DEFAULT '0' COMMENT '购买商品赠送积分' | Количество баллов за приобретение товара |
| min_buy | int(11) NOT NULL DEFAULT '1' COMMENT '最少买几件' | Минимальное количество покупок |
| max_buy | int(11) NOT NULL DEFAULT '0' COMMENT '限购 0 不限购' | Лимит на количество покупок |
| view | int(10) unsigned NOT NULL DEFAULT '0' COMMENT '商品点击数量' | Число просмотров товара |
| star | int(10) unsigned NOT NULL DEFAULT '5' COMMENT '好评星级' | Рейтинг товара |
| collect_num | int(10) unsigned NOT NULL DEFAULT '0' COMMENT '收藏数量' | Количество сохранений в избранное |
| comment_num | int(10) unsigned NOT NULL DEFAULT '0' COMMENT '评价数' | Количество отзывов |
| transmit_num | int(11) NOT NULL DEFAULT '0' COMMENT '分享数' | Число перепостов |
| province_id | int(10) unsigned DEFAULT '0' COMMENT '一级地区id' | Код региона первого уровня |
| city_id | int(10) unsigned DEFAULT '0' COMMENT '二级地区id' | Код региона второго уровня |
| area_id | int(10) DEFAULT '0' COMMENT '三级地区' | Код района |
| address_name | varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '地址' | Адрес |
| is_stock_visible | int(1) NOT NULL DEFAULT '1' COMMENT '库存显示 0不显示1显示' | Видимость товара на складе |
| is_hot | int(1) NOT NULL DEFAULT '0' COMMENT '是否热销商品' | Популярность товара |
| is_recommend | int(1) NOT NULL DEFAULT '0' COMMENT '是否推荐' | Рекомендованный товар |
| is_new | int(1) NOT NULL DEFAULT '0' COMMENT '是否新品' | Новый товар |
| is_bill | int(1) NOT NULL DEFAULT '0' COMMENT '是否开具增值税发票 1是,0否' | Наличие счёта-фактуры |
| product_type_id | int(11) NOT NULL DEFAULT '0' COMMENT '商品类型' | Вид товара |
| spec_data | text COLLATE utf8mb4_unicode_ci COMMENT '商品规格' | Спецификации товара |
| match_point | float DEFAULT '5' COMMENT '实物与描述相符(根据评价计算)' | Соответствие товара описанию |
| match_ratio | float DEFAULT '100' COMMENT '实物与描述相符(根据评价计算)百分比' | Процент соответствия товара описанию |
| sale_date | int(11) DEFAULT '0' COMMENT '上下架时间' | Дата поступления в продажу |
| is_virtual | tinyint(1) DEFAULT '0' COMMENT '是否虚拟商品' | Виртуальный товар |
| production_date | int(11) DEFAULT '0' COMMENT '生产日期' | Дата производства |
| shelf_life | int(11) DEFAULT '0' COMMENT '保质期' | Срок годности |
| is_open_presell | tinyint(4) DEFAULT '0' COMMENT '是否支持预售' | Возможность предзаказа |
| presell_time | int(11) DEFAULT '0' COMMENT '预售发货时间' | Время доставки предзаказа |
| presell_day | int(11) DEFAULT '0' COMMENT '预售发货天数' | Срок доставки предзаказа |
| presell_delivery_type | int(11) DEFAULT '1' COMMENT '预售发货方式1. 按照预售发货时间 2.按照预售发货天数' | Метод доставки предзаказа |
| presell_price | decimal(10,2) DEFAULT '0.00' COMMENT '预售金额' | Цена предзаказа |
| unit | varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '商品单位' | Единица измерения товара |
| video_url | varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '展示视频' | Ссылка на видео |
| supplier_id | int(11) DEFAULT '0' COMMENT '供货商id' | Поставщик |
| is_open_commission | tinyint(4) DEFAULT '0' COMMENT '是否支持分销' | Возможность участия в партнёрской программе |
| status | tinyint(4) DEFAULT '1' COMMENT '状态' | Статус товара |
| created_at | int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间' | Дата создания |
| updated_at | int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间' | Дата обновления |
**Таблица товарных атрибутов**
| Идентификатор | Торговый идентификатор | Идентификатор товара | Идентификатор типа атрибута | Название атрибута | Значение атрибута | Сортировка | Статус | Дата создания | Дата обновления |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
*Примечание: в запросе не хватает данных для полного перевода.* **Таблица «Товарный спецификатор»**
AUTO_INCREMENT,
merchant_id
int(10) unsigned DEFAULT '0' COMMENT 'Идентификатор продавца',
product_id
int(11) NOT NULL COMMENT 'Идентификатор товара',
spec_id
int(11) NOT NULL DEFAULT '0' COMMENT 'Идентификатора спецификации системы',
title
varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'Название спецификации',
sort
int(11) NOT NULL DEFAULT '999' COMMENT 'Сортировка',
status
tinyint(4) NOT NULL DEFAULT '1' COMMENT 'Статус (-1: удалено, 0: запрещено, 1: разрешено)',
created_at
int(10) unsigned DEFAULT '0' COMMENT 'Время создания',
updated_at
int(10) unsigned DEFAULT '0' COMMENT 'Дата обновления',
PRIMARY KEY (id
),
KEY product_supplier_attribute_name_product_id_index
(title
,product_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Таблица товарного спецификатора'
**Таблица «Значения товарных спецификаторов»**
CREATE TABLE shop_product_spec_value
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
merchant_id
int(10) DEFAULT '0' COMMENT 'Идентификатор продавца',
product_id
int(11) NOT NULL COMMENT 'Идентификатор товара',
spec_id
int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'Идентификатора спецификации системы',
spec_value_id
int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'Идентификатора значения спецификации системы',
title
varchar(125) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Заголовок атрибута',
data
varchar(125) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Значение атрибута',
sort
int(11) NOT NULL DEFAULT '999' COMMENT 'Сортировка',
status
tinyint(4) NOT NULL DEFAULT '1' COMMENT 'Статус (-1: удалено, 0: запрещено, 1: разрешено)',
created_at
int(10) unsigned DEFAULT '0' COMMENT 'Время создания',
updated_at
int(10) unsigned DEFAULT '0' COMMENT 'Дата обновления',
PRIMARY KEY (id
),
KEY product_attribute_and_option_sku_id_option_id_attribute_id_index
(base_spec_value_id
,base_spec_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Таблица значений товарных спецификаторов'
**Таблица «SKU товаров»**
CREATE TABLE shop_product_sku
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
merchant_id
int(10) unsigned DEFAULT '0' COMMENT 'Идентификатор продавца',
product_id
int(11) unsigned DEFAULT '0' COMMENT 'Идентификатор товара',
name
varchar(600) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Наименование SKU',
picture
varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Изображение',
price
decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT 'Цена',
market_price
decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT 'Рыночная цена',
cost_price
decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT 'Себестоимость',
wholesale_price
decimal(10,2) unsigned DEFAULT '0.00' COMMENT 'Оптовая цена',
stock
int(11) NOT NULL DEFAULT '0' COMMENT 'Количество на складе',
code
varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Код товара',
barcode
varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Штрих-код',
product_weight
decimal(8,2) DEFAULT '0.00' COMMENT 'Вес товара',
product_volume
decimal(8,2) DEFAULT '0.00' COMMENT 'Объём товара',
sort
int(11) DEFAULT '1999' COMMENT 'Сортировка',
data
varchar(300) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Данные SKU',
status
tinyint(4) DEFAULT '1' COMMENT 'Состояние (-1: удаление; 0: запрет; 1: разрешение)',
created_at
int(10) unsigned DEFAULT '0' COMMENT 'Время создания',
updated_at
int(10) unsigned DEFAULT '0' COMMENT 'Дата обновления',
PRIMARY KEY (id
),
KEY product_id
(product_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Таблица SKU товаров' ```
重置
var skuTableObj = skuTable.render({
isAttributeElemId: 'fairy-is-attribute',
productTypeElemId: 'fairy-product-type',
attributeTableElemId: 'fairy-attribute-table',
specTableElemId: 'fairy-spec-table',
skuTableElemId: 'fairy-sku-table',
//商品规格模式 0单规格 1多规格
mode: 0,
//是否开启sku表行合并
rowspan: true,
//图片上传接口
uploadUrl: './json/upload.json',
//获取商品类型接口
productTypeUrl: './json/productTypeData.json',
//获取商品类型下的规格和属性接口
attrSpecUrl: './json/attrSpecData.json',
//创建规格接口
specCreateUrl: './json/specCreate.json',
//删除规格接口
specDeleteUrl: './json/specDelete.json',
//创建规格值接口
specValueCreateUrl: './json/specValueCreate.json',
//删除规格值接口
specValueDeleteUrl: './json/specValueDelete.json',
//sku数据接口
skuDataUrl: './json/skuData.json',
//单规格SKU表配置
singleSkuTableConfig: {
thead: [
{title: '销售价(元)', icon: 'layui-icon-cols'},
{title: '市场价(元)', icon: 'layui-icon-cols'},
{title: '成本价(元)', icon: 'layui-icon-cols'},
{title: '库存', icon: 'layui-icon-cols'},
{title: '状态', icon: ''},
],
tbody: [
{type: 'input', field: 'price', value: '0', verify: 'required|number', reqtext: '销售价不能为空'},
{type: 'input', field: 'market_price', value: '0', verify: 'required|number', reqtext: '市场价不能为空'},
{type: 'input', field: 'cost_price', value: '0', verify: 'required|number', reqtext: '成本价不能为空'},
{type: 'input', field: 'stock', value: '0', verify: 'required|number', reqtext: '库存不能为空'},
{type: 'select', field: 'status', option: [{key: '启用', value: '1'}, {key: '禁用', value: '0'}], verify: 'required', reqtext: '状态不能为空'},
]
},
//多规格SKU表配置
multipleSkuTableConfig: {
thead: [
{title: '图片', icon: ''},
{title: '销售价(元)', icon: 'layui-icon-cols'},
{title: '市场价(元)', icon: 'layui-icon-cols'},
{title: '成本价(元)', icon: 'layui-icon-cols'},
{title: '库存', icon: 'layui-icon-cols'},
{title: '状态', icon: ''},
],
tbody: [
{type: 'image', field: 'picture', value: '', verify: '', reqtext: ''},
{type: 'input', field: 'price', value: '0', verify: 'required|number', reqtext: '销售价不能为空'},
{type: 'input', field: 'market_price', value: '0', verify: 'required|number', reqtext: '市场价不能为空'},
{type: 'input', field: 'cost_price', value: '0', verify: 'required|number', reqtext: '成本价不能为空'},
{type: 'input', field: 'stock', value: '0', verify: 'required|number', reqtext: '库存不能为空'},
{
type: 'select',
field: 'status',
option: [{key: '启用', value: '1'}, {key: '禁用', value: '0'}],
verify: '',
reqtext: ''
},
]
},
});
form.on('submit(submit)', function (data) {
// 获取表单数据
console.log(data.field);
if (skuTableObj.getMode() == 0) {
// 单规格
Это перевод исходного текста на русский язык. ```
layer.alert(JSON.stringify(data.field), {title: '提交的数据'});
} else {
//多规格
var state = Object.keys(data.field).some(function (item, index, array) {
return item.startsWith('skus');
});
state ? layer.alert(JSON.stringify(data.field), {title: '提交的数据'}) : layer.msg('sku表数据不能为空', {icon: 5, anim: 6});
}
return false;
});
});
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )