【NET】设置SKU路径

在做一个商城项目,之前并没有接触过,包括淘宝店铺

刚开始还有点没头绪,或者在SKU上相差了

商品有销售分类,类目,规格,属性

销售分类为商户自定义分类,可多选

类目为系统固定分类

规格为商品的规格,如,颜色,尺寸等

属性为商品的规格属性,如,红色,白色,黑色,均码等

在商品关联这项后,修改商品信息:

如修改XXX牌羊绒毛衣

根据类目=>规格=>属性

颜色:白色 黑色 红色 绿色 灰色 黄色 粉色 咖啡色

尺寸:XXS XS S M L XL XXL XXXL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
var skuManage = {
template: {
thead: '<thead><th>序号</th><th>组合规格</th><th>库存数量</th><th>商品价格(元)</th></thead>',
tr: '<tr></tr>',
td: '<td></td>',
input: '<input type="text" class="form-control" />'
},
selected: {},
add2Selected: function (key, value) {
var arr = [];
if (this.selected[key]) {
this.selected[key].push(value);
} else {
this.selected[key] = [value];
}
},
pop2Selected: function (key, value) {
this.selected[key].splice($.inArray(value, this.selected[key]), 1);
},
addSymbols: function (skas, choices) {
var result = [];
for (var i = 0, len = skas.length; i < len; i++) {
for (var j = 0, lenj = choices.length; j < lenj; j++) {
result.push(skas[i] + ':' + choices[j]);
}
}
return result;
},
symbols: function (arrs) {
var skas = arrs[0];
for (var i = 1, len = arrs.length; i < len; i++) {
skas = this.addSymbols(skas, arrs[i]);
}
return skas;
},
drawPaths: function (o) {
if (this.count(this.selected) > 1) {
o.empty().append(this.template.thead);
var keys_arr = this.objToArr(this.selected);
var keys = this.symbols(keys_arr);
for (var i = 0, len = keys.length ; i < len; i++) {
var value = [];
$.each(keys[i].split(':'), function (index, elem) {
var _forVal = $("#pv-" + elem + "").next('label')[0];
value.push($(_forVal).html());
})
o.append($(this.template.tr)
.append($(this.template.td).append(i + 1))
.append($(this.template.td).append(value.join(',')))
.append($(this.template.td).append($(this.template.input).attr('type', 'number').attr('attr-pv', keys[i]).attr('attr-pvt', 'count')))
.append($(this.template.td).append($(this.template.input).attr('type', 'number').attr('attr-pv', keys[i]).attr('attr-pvt', 'price')))
);
}
}
},
count: function (o) {
var t = typeof o;
if (t == 'string') {
return o.length;
} else if (t == 'object') {
var n = 0;
for (var i in o) {
n++;
}
return n;
}
return false;
},
objToArr: function (o) {
var keys = [];
$.each(o, function (i, row) {
var key = [];
$.each(row, function (index, element) {
key.push(element);
})
keys.push(key);
})
return keys;
}
}
$('.sku').click(function () {
var $self = $(this);
if ($self.is(':checked')) {
skuManage.add2Selected($self.attr('attr_porid'), $self.attr('attr_valid'));
} else {
skuManage.pop2Selected($self.attr('attr_porid'), $self.attr('attr_valid'));
}
skuManage.drawPaths($skuTable)
});

通过在属性上绑定事件,使之保存选中项到数组,在重新生成表格,如

选中了 白色,黑色,红色,S,L,M

那么就出现了 白色-S,白色—L,白色-M,黑色-S,黑色—L,黑色-M,红色-S,红色—L,红色-M,这几种情况

填写相应对应的库存和价格

保存最终的一个结果