UNPKG

@aliretail/react-materials-components

Version:
301 lines (266 loc) 10.3 kB
import _NumberPicker from "@alifd/next/es/number-picker"; import _Button from "@alifd/next/es/button"; import _extends from "@babel/runtime/helpers/extends"; import _Field from "@alifd/next/es/field"; import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized"; import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import _Table from "@alifd/next/es/table"; import React from 'react'; import PropTypes from 'prop-types'; import FilterSelectorDialog from "../FilterSelectorDialog"; import { resetData, getNeedValidateField, formFieldKey, getFieldErrs, fieldChange } from "./config/data-adaptor"; var TableColumn = _Table.Column; var StockTableEdit = /*#__PURE__*/function (_React$Component) { _inheritsLoose(StockTableEdit, _React$Component); // 即便 ts 声明了 StockTableEditProps,这里还是要提供 IPropsTypes,用于 react 报错提示 function StockTableEdit(props) { var _this; _this = _React$Component.call(this, props) || this; _this.changeData = function (rows) { var _this$props = _this.props, isPreview = _this$props.isPreview, value = _this$props.value, filterDialogProps = _this$props.filterDialogProps; if (isPreview) { return; } var _ref = filterDialogProps || {}, primaryKey = _ref.primaryKey; var rowKey = primaryKey || 'id'; var newData = resetData({ dataSource: value, rowKey: rowKey, rows: rows }); _this.props.onChange(newData); _this.fileds.setValue(formFieldKey, []); newData.forEach(function (item, index) { _this.fileds.addArrayValue(formFieldKey, index, item); }); }; _this.onFieldChange = function (name, val) { var _this$props2 = _this.props, value = _this$props2.value, _this$props2$onChange = _this$props2.onChange, onChange = _this$props2$onChange === void 0 ? function () {} : _this$props2$onChange, _this$props2$onNumber = _this$props2.onNumberChange, onNumberChange = _this$props2$onNumber === void 0 ? function () {} : _this$props2$onNumber; var _ref2 = fieldChange(name, val, value) || {}, data = _ref2.value, record = _ref2.record, dataIndex = _ref2.dataIndex; onChange(data); onNumberChange(val, dataIndex, record); }; _this.fileds = new _Field(_assertThisInitialized(_this), { parseName: true, onChange: _this.onFieldChange }); return _this; } var _proto = StockTableEdit.prototype; _proto.componentDidCatch = function componentDidCatch(e) { console.warn(e); } // 校验方法 ; _proto.validate = function validate(callBack) { var _this$props3 = this.props, columns = _this$props3.columns, value = _this$props3.value; this.fileds.validate(getNeedValidateField(columns, value), callBack); } // 外部检验,返回错误信息 ; _proto.setErrors = function setErrors(errs) { var _this$fileds = this.fileds, filedSetErrors = _this$fileds.setErrors, getErrors = _this$fileds.getErrors; var currentError = getErrors(); var needSetErrs = getFieldErrs(errs, currentError); filedSetErrors(needSetErrs); } // 删除 ; _proto.deleteData = function deleteData(id) { var _this$props4 = this.props, isPreview = _this$props4.isPreview, value = _this$props4.value; if (isPreview) { return; } this.fileds.deleteArrayValue(formFieldKey, id); var newData = Array.isArray(value) ? value.filter(function (item, index) { return index !== id; }) : []; this.props.onChange(newData); } // 库存信息修改 ; _proto.getButtonDom = function getButtonDom() { var _this$props5 = this.props, topRight = _this$props5.topRight, buttonProps = _this$props5.buttonProps, isPreview = _this$props5.isPreview, filterDialogProps = _this$props5.filterDialogProps, buttonText = _this$props5.buttonText, tableData = _this$props5.value, _this$props5$topRight = _this$props5.topRightLeftExtContent, topRightLeftExtContent = _this$props5$topRight === void 0 ? null : _this$props5$topRight, _this$props5$topRight2 = _this$props5.topRightRightExtContent, topRightRightExtContent = _this$props5$topRight2 === void 0 ? null : _this$props5$topRight2; if (isPreview) { return ''; } if (topRight !== undefined) { return topRight; } return /*#__PURE__*/React.createElement(React.Fragment, null, topRightLeftExtContent, /*#__PURE__*/React.createElement(FilterSelectorDialog, _extends({ mode: "multiple", hasTableBorder: false, openType: "dialog", dialogHeight: 616, dialogWidth: 600, loadType: "page", columns: [], filterConfigList: [], onSelected: function onSelected() {} }, filterDialogProps || {}, { onChange: this.changeData, selectedRowList: tableData || [] }), /*#__PURE__*/React.createElement(_Button, _extends({ // disabled={isPreview} type: "secondary" }, buttonProps || {}), buttonText)), topRightRightExtContent); }; _proto.render = function render() { var _this2 = this; var _this$props6 = this.props, title = _this$props6.title, columns = _this$props6.columns, isPreview = _this$props6.isPreview, needDelete = _this$props6.needDelete, className = _this$props6.className, tableProps = _this$props6.tableProps, tableData = _this$props6.value, _this$props6$onNumber = _this$props6.onNumberInputBlur, onNumberInputBlur = _this$props6$onNumber === void 0 ? function () {} : _this$props6$onNumber, _this$props6$onNumber2 = _this$props6.onNumberInputFoucs, onNumberInputFoucs = _this$props6$onNumber2 === void 0 ? function () {} : _this$props6$onNumber2, numberStep = _this$props6.numberStep; var hasColumns = Array.isArray(columns) && columns.length > 0; var hasDelete = !isPreview && needDelete && hasColumns; var _this$fileds2 = this.fileds, init = _this$fileds2.init, getError = _this$fileds2.getError; return /*#__PURE__*/React.createElement("div", { className: "aliretail-stock-table-edit" + (className ? " " + className : ''), "data-name": "AliretailStockTableEdit" }, /*#__PURE__*/React.createElement("div", { className: "aliretail-stock-table-edit-head" }, /*#__PURE__*/React.createElement("span", { className: "table-edit-title" }, title), /*#__PURE__*/React.createElement("div", { className: "table-edit-extra" }, this.getButtonDom())), /*#__PURE__*/React.createElement(_Table, _extends({ dataSource: tableData, hasBorder: false }, tableProps || {}), hasColumns ? columns.map(function (item) { if (item === void 0) { item = {}; } var _item = item, cell = _item.cell, type = _item.type, dataIndex = _item.dataIndex, rules = _item.rules; var newCell = cell; if (typeof cell !== 'function' && type === 'inputNumber') { newCell = function newCell(value, index, record) { if (record === void 0) { record = {}; } if (isPreview) { return value; } var fieldKey = formFieldKey + "." + index + "." + dataIndex; var errMessage = getError(fieldKey); var step = Number(numberStep) || 1; return /*#__PURE__*/React.createElement("div", { className: "edit-table-number" + (errMessage ? ' edit-table-number-error' : '') }, /*#__PURE__*/React.createElement(_NumberPicker, _extends({ type: "inline" }, init(fieldKey, { rules: rules }), { min: 0, step: step, value: value, onBlur: function onBlur() { onNumberInputBlur(value, dataIndex, record); }, onFocus: function onFocus() { onNumberInputFoucs(value, dataIndex, record); } })), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "edit-table-error" }, errMessage)); }; } if (newCell) { return /*#__PURE__*/React.createElement(TableColumn, _extends({}, _extends({}, item, { cell: newCell, type: undefined, rules: undefined }), { key: dataIndex })); } return /*#__PURE__*/React.createElement(TableColumn, _extends({}, item, { key: dataIndex, type: undefined, rules: undefined })); }) : null, hasDelete ? /*#__PURE__*/React.createElement(TableColumn, { title: "\u64CD\u4F5C", align: "right", cell: function cell(value, index) { return /*#__PURE__*/React.createElement("span", { onClick: function onClick() { return _this2.deleteData(index); }, className: "table-edit-delete" + (isPreview ? ' table-edit-delete-disabled' : '') }, "\u5220\u9664"); }, key: "delete" }) : null)); }; return StockTableEdit; }(React.Component); StockTableEdit.propTypes = { title: PropTypes.string, columns: PropTypes.array, topRight: PropTypes.any, buttonProps: PropTypes.any, className: PropTypes.string, isPreview: PropTypes.bool, filterDialogProps: PropTypes.any, needDelete: PropTypes.bool, onChange: PropTypes.any, tableProps: PropTypes.any, value: PropTypes.array, buttonText: PropTypes.string, paginationClassName: PropTypes.string, pageSizeList: PropTypes.array, status: PropTypes.string }; StockTableEdit.defaultProps = { title: '明细信息', needDelete: true, isPreview: false, onChange: function onChange() {}, tableProps: {}, buttonText: '添加货品', pageSizeList: [20, 50, 100], onNumberChange: function onNumberChange() {}, onNumberInputBlur: function onNumberInputBlur() {}, onNumberInputFoucs: function onNumberInputFoucs() {}, numberStep: 1 }; export default StockTableEdit;