@aliretail/react-materials-components
Version:
189 lines (156 loc) • 7.27 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _table = _interopRequireDefault(require("@alifd/next/lib/table"));
var _button = _interopRequireDefault(require("@alifd/next/lib/button"));
var _radio = _interopRequireDefault(require("@alifd/next/lib/radio"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var React = _interopRequireWildcard(require("react"));
var _SelectSKUDialog = _interopRequireDefault(require("./SelectSKUDialog"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var ModeMap = {
'1': '每个货品各拆成一单',
'2': '指定货品拆成一单,剩余货品自成一单',
// 一共两单
'3': '指定货品各拆成一单,剩余货品自成一单' // 一个n + 1单
};
var SplitMode = /*#__PURE__*/React.forwardRef(function (props, ref) {
// eslint-disable-next-line react/prop-types
var value = props.value,
onChange = props.onChange,
primaryKey = props.primaryKey,
onFetchGoodList = props.onFetchGoodList;
var _ref = value || {},
type = _ref.type,
goodIds = _ref.goodIds;
var _React$useState = React.useState(false),
visible = _React$useState[0],
setVisible = _React$useState[1];
var _React$useState2 = React.useState(false),
loading = _React$useState2[0],
setLoading = _React$useState2[1];
var _React$useState3 = React.useState([]),
goodList = _React$useState3[0],
setGoodList = _React$useState3[1];
/** radio 改变回调 */
var handleRadioChange = function handleRadioChange(v) {
onChange === null || onChange === void 0 ? void 0 : onChange({
goodIds: [],
type: v
});
};
/** 货品id 改变回调 */
var handleSKUChange = function handleSKUChange(ids) {
onChange === null || onChange === void 0 ? void 0 : onChange((0, _extends2["default"])({}, value, {
goodIds: ids
}));
};
var handleOpenSelectSku = function handleOpenSelectSku() {
setVisible(true);
setLoading(true);
onFetchGoodList().then(function (list) {
setGoodList(list);
})["finally"](function () {
setLoading(false);
});
};
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_radio["default"].Group, {
value: type,
ref: ref,
onChange: handleRadioChange
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_radio["default"], {
value: "1"
}, ModeMap[1])), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_radio["default"], {
value: "2"
}, ModeMap[2], ' ', type === '2' && /*#__PURE__*/React.createElement(_button["default"], {
type: "primary",
text: true,
size: "small",
onClick: handleOpenSelectSku
}, goodIds !== null && goodIds !== void 0 && goodIds.length ? '修改' : '选择', "\u8D27\u54C1"))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_radio["default"], {
value: "3"
}, ModeMap[3], ' ', type === '3' && /*#__PURE__*/React.createElement(_button["default"], {
type: "primary",
text: true,
size: "small",
onClick: handleOpenSelectSku
}, goodIds !== null && goodIds !== void 0 && goodIds.length ? '修改' : '选择', "\u8D27\u54C1")))), /*#__PURE__*/React.createElement(_SelectSKUDialog["default"], {
primaryKey: primaryKey,
loading: loading,
goodList: goodList,
type: ModeMap[type],
visible: visible,
onVisibleChange: setVisible,
goodIds: goodIds || [],
onGoodIdsChange: handleSKUChange
}), function () {
if (!(goodIds !== null && goodIds !== void 0 && goodIds.length)) {
return null;
}
var frontList = []; // 选中的
var backList = []; // 剩余的
goodList.forEach(function (g) {
if (goodIds.includes(g[primaryKey])) {
frontList.push(g);
} else {
backList.push(g);
}
});
return /*#__PURE__*/React.createElement(_table["default"], {
style: {
marginTop: 8
},
dataSource: frontList.concat(backList),
cellProps: function cellProps(rowIndex, colIndex) {
// 指定货品拆成一单,剩余货品自成一单,一共两单
if (type === '2') {
if (rowIndex === 0 && colIndex === 0) {
return {
rowSpan: frontList.length
};
}
if (rowIndex === frontList.length && colIndex === 0) {
return {
rowSpan: backList.length
};
}
} // 指定货品各拆成一单,剩余货品自成一单,一共n + 1单
if (type === '3') {
if (rowIndex === frontList.length && colIndex === 0) {
return {
rowSpan: backList.length
};
}
}
return {};
}
}, /*#__PURE__*/React.createElement(_table["default"].Column, {
title: "\u5E8F\u53F7",
cell: function cell(v, i) {
if (type === '2') {
if (i >= frontList.length) {
return i + 1 - (frontList.length - 1);
}
return i + 1;
}
return i + 1;
}
}), /*#__PURE__*/React.createElement(_table["default"].Column, {
title: "\u8D27\u54C1",
cell: function cell(v, i, record) {
var _record$good;
return record === null || record === void 0 ? void 0 : (_record$good = record.good) === null || _record$good === void 0 ? void 0 : _record$good.title;
}
}), /*#__PURE__*/React.createElement(_table["default"].Column, {
title: "\u8D27\u54C1\u7F16\u7801",
cell: function cell(v, i, record) {
var _record$good2, _record$good2$descrip;
return record === null || record === void 0 ? void 0 : (_record$good2 = record.good) === null || _record$good2 === void 0 ? void 0 : (_record$good2$descrip = _record$good2.description) === null || _record$good2$descrip === void 0 ? void 0 : _record$good2$descrip.slice(5);
}
}));
}());
});
var _default = SplitMode;
exports["default"] = _default;