@fle-ui/plus-goods-detail-drawer
Version:
@fle-ui/plus-goods-detail-drawer
189 lines (188 loc) • 9.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _antd = require("antd");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
/**
* 获取表头
* @param params 表头参数
* @returns 表头JSX元素
*/
var getThead = function getThead(_ref) {
var _ref$propertyNames = _ref.propertyNames,
propertyNames = _ref$propertyNames === void 0 ? [] : _ref$propertyNames,
_ref$thead = _ref.thead,
thead = _ref$thead === void 0 ? [] : _ref$thead;
return /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, propertyNames === null || propertyNames === void 0 ? void 0 : propertyNames.map(function (item, index) {
return /*#__PURE__*/_react.default.createElement("th", {
key: index
}, /*#__PURE__*/_react.default.createElement("span", null, item));
}), thead === null || thead === void 0 ? void 0 : thead.map(function (item) {
return /*#__PURE__*/_react.default.createElement("th", {
key: item.key,
style: {
textAlign: item.type === 'image' ? 'center' : 'left'
}
}, /*#__PURE__*/_react.default.createElement("span", null, item.name));
})));
};
/**
* 获取表内容
* @param params 表体参数
* @returns 表体JSX元素
*/
var getTbody = function getTbody(_ref2) {
var thead = _ref2.thead,
skuList = _ref2.skuList,
singleAttributeNum = _ref2.singleAttributeNum;
return /*#__PURE__*/_react.default.createElement("tbody", null, skuList === null || skuList === void 0 ? void 0 : skuList.map(function (item, i) {
var _item$cartesianSkuIte;
return /*#__PURE__*/_react.default.createElement("tr", {
key: i
}, (_item$cartesianSkuIte = item.cartesianSkuItem) === null || _item$cartesianSkuIte === void 0 ? void 0 : _item$cartesianSkuIte.map(function (name, x) {
if (!(i % singleAttributeNum) && !x) {
return /*#__PURE__*/_react.default.createElement("td", {
rowSpan: singleAttributeNum,
key: x
}, /*#__PURE__*/_react.default.createElement("span", {
className: "no-wrapper"
}, name));
} else if (!!x) {
return /*#__PURE__*/_react.default.createElement("td", {
rowSpan: 1,
key: x
}, /*#__PURE__*/_react.default.createElement("span", {
className: "no-wrapper"
}, name));
} else {
return null;
}
}), thead === null || thead === void 0 ? void 0 : thead.map(function (theadItem) {
if (!!theadItem.mergeRowSpan) {
return !(i % singleAttributeNum) ? theadItem.type === 'image' ? /*#__PURE__*/_react.default.createElement("td", {
key: theadItem.key,
rowSpan: singleAttributeNum,
style: {
textAlign: 'center'
}
}, /*#__PURE__*/_react.default.createElement(_antd.Image, {
src: item[theadItem.key],
width: Math.min(singleAttributeNum * 36, 90)
})) : /*#__PURE__*/_react.default.createElement("td", {
key: theadItem.key,
rowSpan: singleAttributeNum
}, item[theadItem.key] || '-') : null;
} else {
return theadItem.type === 'image' ? /*#__PURE__*/_react.default.createElement("td", {
key: theadItem.key,
style: {
textAlign: 'center'
}
}, /*#__PURE__*/_react.default.createElement(_antd.Image, {
width: 60,
src: item[theadItem.key]
})) : /*#__PURE__*/_react.default.createElement("td", {
key: theadItem.key
}, item[theadItem.key] || '-');
}
}));
}));
};
/**
* 商品SKU表格组件
*/
var GoodsSkuTable = function GoodsSkuTable(_ref3) {
var _ref3$thead = _ref3.thead,
thead = _ref3$thead === void 0 ? [] : _ref3$thead,
_ref3$skuPriceList = _ref3.skuPriceList,
skuPriceList = _ref3$skuPriceList === void 0 ? [] : _ref3$skuPriceList,
_ref3$skuList = _ref3.skuList,
skuList = _ref3$skuList === void 0 ? [] : _ref3$skuList;
var _skuList = skuList.map(function (item) {
var propertyNames = [],
cartesianSkuItem = [];
if (item === null || item === void 0 ? void 0 : item.specList) {
var specList = Array.isArray(item === null || item === void 0 ? void 0 : item.specList) ? item === null || item === void 0 ? void 0 : item.specList : JSON.parse((item === null || item === void 0 ? void 0 : item.specList) || '[]');
try {
specList.forEach(function (spec) {
propertyNames.push(spec === null || spec === void 0 ? void 0 : spec.name);
cartesianSkuItem.push(spec === null || spec === void 0 ? void 0 : spec.value);
});
} catch (error) {
console.log('解析规格列表失败:', error);
}
}
return _objectSpread(_objectSpread({}, item), {}, {
propertyNames: propertyNames,
cartesianSkuItem: cartesianSkuItem
}, skuPriceList.find(function (sku) {
return sku.skuPropertyOrder === item.skuPropertyOrder;
}));
});
var _specList = [];
_skuList === null || _skuList === void 0 ? void 0 : _skuList.forEach(function (item) {
if (item === null || item === void 0 ? void 0 : item.specList) {
var _specList2;
var specList = Array.isArray(item === null || item === void 0 ? void 0 : item.specList) ? item === null || item === void 0 ? void 0 : item.specList : JSON.parse((item === null || item === void 0 ? void 0 : item.specList) || '[]');
_specList = (_specList2 = _specList) === null || _specList2 === void 0 ? void 0 : _specList2.concat(specList);
}
});
/**
* 转换数组为属性组
* @param arr 规格列表
* @returns 属性组列表
*/
function transformArray(arr) {
var result = [];
var propertyNames = new Set();
arr.forEach(function (obj) {
return propertyNames.add(obj === null || obj === void 0 ? void 0 : obj.name);
});
propertyNames.forEach(function (propertyName) {
var attributes = [];
var uniqueValues = new Set(); // 使用 Set 对 value 去重
arr.forEach(function (obj) {
if (obj.name === propertyName && !uniqueValues.has(obj.value)) {
uniqueValues.add(obj.value);
attributes.push({
attribute: obj.value
});
}
});
result.push({
propertyName: propertyName,
attributes: attributes
});
});
return result;
}
var _attrList = transformArray(_specList);
var propertyNames = (_attrList === null || _attrList === void 0 ? void 0 : _attrList.length) ? _attrList.map(function (item) {
return item.propertyName;
}) : [];
var singleAttributeNum = propertyNames.length > 1 ? _attrList[_attrList.length - 1].attributes.filter(function (item) {
return !!item && !!item.attribute;
}).length : 1;
return /*#__PURE__*/_react.default.createElement("div", {
className: "fx__goods-sku-table"
}, /*#__PURE__*/_react.default.createElement("table", {
className: "form-table"
}, getThead({
thead: thead,
propertyNames: propertyNames
}), getTbody({
thead: thead,
singleAttributeNum: singleAttributeNum,
skuList: _skuList
})));
};
var _default = exports.default = GoodsSkuTable;