UNPKG

@aliretail/react-materials-components

Version:
264 lines (231 loc) 10.1 kB
import _Dialog from "@alifd/next/es/dialog"; import _Message from "@alifd/next/es/message"; import _extends from "@babel/runtime/helpers/extends"; import React, { useState, useEffect } from 'react'; import * as PropTypes from 'prop-types'; import request from '@aliretail/react-universal-request'; import RelateMainModeTable from "./components/RelateMainModeTable"; import TABLE_COLUMNS_COM_MAP from "./utils/type"; var SettlementConfigurationTable = function SettlementConfigurationTable(props) { var columns = props.columns, _props$requestMap = props.requestMap, requestMap = _props$requestMap === void 0 ? {} : _props$requestMap, url = props.url, handleSave = props.handleSave, handleDelete = props.handleDelete, handleChange = props.handleChange; var table = requestMap.table, relateSelect = requestMap.relateSelect, deleted = requestMap.deleted, save = requestMap.save, disabled = requestMap.disabled; var selectUrl = url.selectUrl, tableUrl = url.tableUrl, deleteUrl = url.deleteUrl, saveUrl = url.saveUrl, disabledUrl = url.disabledUrl; var _useState = useState([]), dataSource = _useState[0], setDataSource = _useState[1]; // table列表数据 var _useState2 = useState([]), columnsList = _useState2[0], setColumnsList = _useState2[1]; // table列配置数据 var _useState3 = useState([]), relateSelectList = _useState3[0], setRelateSelectList = _useState3[1]; // table列配置的下拉数据 // 获取表格列表数据请求 var getTableDataSourceListApi = function getTableDataSourceListApi() { // if (!table?.apiCode || !table?.appCode) { // return; // } request({ url: tableUrl, method: 'post', type: 'json', appCode: table === null || table === void 0 ? void 0 : table.appCode, apiCode: table === null || table === void 0 ? void 0 : table.apiCode, data: _extends({}, table === null || table === void 0 ? void 0 : table.params), autoShowErrorMessage: true }).then(function (result) { if (result !== null && result !== void 0 && result.success && result !== null && result !== void 0 && result.result) { // 回填的数据组件除了switch组件不会被禁用 其他都会被禁用 isComponentDisabled就是这个禁用标识 var newResult = result === null || result === void 0 ? void 0 : result.result.map(function (item) { return _extends({}, item, { isComponentDisabled: true, isSave: true }); }); setDataSource(newResult); } else { _Message.error((result === null || result === void 0 ? void 0 : result.message) || '获取表格数据列表失败'); } }); }; // 获取关联主对象下拉列表数据 var getSelectDataSourceListApi = function getSelectDataSourceListApi() { // if (!relateSelect?.apiCode || !relateSelect?.appCode) { // return; // } request({ url: selectUrl, method: 'post', type: 'json', apiCode: relateSelect === null || relateSelect === void 0 ? void 0 : relateSelect.apiCode, appCode: relateSelect === null || relateSelect === void 0 ? void 0 : relateSelect.appCode, data: _extends({}, relateSelect === null || relateSelect === void 0 ? void 0 : relateSelect.params, table === null || table === void 0 ? void 0 : table.params), autoShowErrorMessage: true }).then(function (result) { if (result !== null && result !== void 0 && result.success && result !== null && result !== void 0 && result.result) { setRelateSelectList(result.result); getTableDataSourceListApi(); } else { _Message.error((result === null || result === void 0 ? void 0 : result.message) || '获取下拉数据列表失败'); } }); }; // 删除服务请求 var deleteApi = function deleteApi(value, index, record) { // if (!deleted?.appCode || !deleted?.apiCode) { // return; // } _Dialog.confirm({ content: '确认删除这条数据吗?', onOk: function onOk() { request({ url: deleteUrl, method: 'post', type: 'json', appCode: deleted === null || deleted === void 0 ? void 0 : deleted.appCode, apiCode: deleted === null || deleted === void 0 ? void 0 : deleted.apiCode, data: _extends({}, deleted === null || deleted === void 0 ? void 0 : deleted.params, table === null || table === void 0 ? void 0 : table.params, record), autoShowErrorMessage: true }).then(function (result) { if (result !== null && result !== void 0 && result.success && result !== null && result !== void 0 && result.result) { _Message.success('删除成功'); getTableDataSourceListApi(); handleDelete(value, index, record); } else { _Message.error((result === null || result === void 0 ? void 0 : result.message) || '删除失败'); } }); } }); }; // 保存服务请求 var saveApi = function saveApi(value, index, record) { // if (!save?.apiCode || !save?.appCode) { // return; // } request({ url: saveUrl, method: 'post', type: 'json', appCode: save === null || save === void 0 ? void 0 : save.appCode, apiCode: save === null || save === void 0 ? void 0 : save.apiCode, data: _extends({}, save === null || save === void 0 ? void 0 : save.params, table === null || table === void 0 ? void 0 : table.params, record), autoShowErrorMessage: true }).then(function (result) { if (result !== null && result !== void 0 && result.success && result !== null && result !== void 0 && result.result) { _Message.success('保存成功'); getTableDataSourceListApi(); handleSave(value, index, record); } else { _Message.error((result === null || result === void 0 ? void 0 : result.message) || '保存失败'); } }); }; // 启用/禁用服务请求 var disableApi = function disableApi(value, index, record) { // if (!disabled?.apiCode || !disabled?.appCode) { // return; // } var messageText = value ? '启用成功' : '禁用成功'; request({ url: disabledUrl, method: 'post', appCode: disabled === null || disabled === void 0 ? void 0 : disabled.appCode, apiCode: disabled === null || disabled === void 0 ? void 0 : disabled.apiCode, data: _extends({}, disabled === null || disabled === void 0 ? void 0 : disabled.params, table === null || table === void 0 ? void 0 : table.params, record), autoShowErrorMessage: true }).then(function (result) { if (result !== null && result !== void 0 && result.success && result !== null && result !== void 0 && result.result) { _Message.success(messageText); // getTableDataSourceListApi(); } else { _Message.error((result === null || result === void 0 ? void 0 : result.message) || messageText); } }); }; // 处理表格columns列配置列表数据 合并没有传cell回调的情况 如果有不进行合并 var dealColumnsList = function dealColumnsList() { var newColumnsList = columns === null || columns === void 0 ? void 0 : columns.map(function (item) { var TypeCom = TABLE_COLUMNS_COM_MAP[item.type]; var extraProps = {}; // 处理select组件以及switch组件情况 select需要传dataSource switch需要传其他配置 if (item.type === 'select') { extraProps.dataSource = relateSelectList; } else if (item.type === 'switch') { extraProps.checkedChildren = '已启用'; extraProps.unCheckedChildren = '已禁用'; extraProps.disabled = false; } else if (item.type === 'text') { extraProps.isPreview = true; } return _extends({ cell: function cell(value, index, record) { var type = item.type; return /*#__PURE__*/React.createElement(TypeCom, _extends({ value: value, checked: value, disabled: record.isComponentDisabled }, extraProps, { onChange: function onChange(val) { _onChange(val, index, record, item.dataIndex, type); } })); } }, item); }); setColumnsList(newColumnsList); }; useEffect(function () { getSelectDataSourceListApi(); dealColumnsList(); }, []); useEffect(function () { dealColumnsList(); }, [dataSource]); // 表格列组件onChange事件 (启用和禁用也需要调接口) var _onChange = function _onChange(value, index, record, dataIndex, type) { var newDataSource = Object.assign([], dataSource); newDataSource.forEach(function (item, idx) { if (idx === index) { item[dataIndex] = value; } }); setDataSource(newDataSource); // switch组件进行onChange需要发请求 不会禁用 if (type === 'switch' && record.isSave) { disableApi(value, index, record); } handleChange(value, index, record, dataIndex); }; // 操作列-保存操作 var onSave = function onSave(value, index, record) { saveApi(value, index, record); }; // 操作列-删除操作 var onDelete = function onDelete(value, index, record) { deleteApi(value, index, record); }; return /*#__PURE__*/React.createElement("div", { className: "aliretail-settlement-configurate-table" }, /*#__PURE__*/React.createElement(RelateMainModeTable, { columns: columnsList, dataSource: dataSource, relateSelectList: relateSelectList, setDataSource: setDataSource, onSave: onSave, onDelete: onDelete })); }; SettlementConfigurationTable.propTypes = { columns: PropTypes.arrayOf(PropTypes.any), requestMap: PropTypes.objectOf(PropTypes.any), url: PropTypes.objectOf(PropTypes.any) }; SettlementConfigurationTable.defaultProps = { columns: [], requestMap: {}, url: {} }; export default SettlementConfigurationTable;