UNPKG

sunmao-sdk

Version:

榫卯-开箱即用赋能-sdk

996 lines (816 loc) 36.8 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("antd/es/radio/style"); var _radio = _interopRequireDefault(require("antd/es/radio")); require("antd/es/config-provider/style"); var _configProvider = _interopRequireDefault(require("antd/es/config-provider")); require("antd/es/table/style"); var _table = _interopRequireDefault(require("antd/es/table")); var _SettingOutlined2 = _interopRequireDefault(require("@ant-design/icons/lib/icons/SettingOutlined")); require("antd/es/message/style"); var _message2 = _interopRequireDefault(require("antd/es/message")); require("antd/es/dropdown/style"); var _dropdown = _interopRequireDefault(require("antd/es/dropdown")); require("antd/es/menu/style"); var _menu = _interopRequireDefault(require("antd/es/menu")); require("antd/es/tooltip/style"); var _tooltip = _interopRequireDefault(require("antd/es/tooltip")); require("antd/es/popconfirm/style"); var _popconfirm = _interopRequireDefault(require("antd/es/popconfirm")); require("antd/es/button/style"); var _button = _interopRequireDefault(require("antd/es/button")); var _react = _interopRequireWildcard(require("react")); var _hooks = require("./hooks"); var _zh_CN = _interopRequireDefault(require("antd/es/locale/zh_CN")); require("./index.css"); var _utils = require("./utils"); var _widgets2 = _interopRequireDefault(require("./widgets")); var _more = _interopRequireDefault(require("../../assets/more.png")); var _FR = _interopRequireDefault(require("../FR")); var _commonUtils = require("../../utils/commonUtils"); var formUtils = _interopRequireWildcard(require("../../utils/formUtils")); var _reactResizable = require("react-resizable"); var _excluded = ["onResize", "onResizeStop", "width"], _excluded2 = ["searchConfig", "tableConfig", "actionConfig", "columns", "actionList", "buttonMenu", "pagination", "aclCheckPermissionResults", "tableTitle", "title"]; 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; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } // 定义头部组件 var ResizableTitle = function ResizableTitle(props) { var onResize = props.onResize, onResizeStop = props.onResizeStop, width = props.width, restProps = _objectWithoutProperties(props, _excluded); if (!width) { return /*#__PURE__*/_react.default.createElement("th", restProps); } return /*#__PURE__*/_react.default.createElement(_reactResizable.Resizable, { width: width, height: 0, handle: /*#__PURE__*/_react.default.createElement("span", { className: "react-resizable-handle", onClick: function onClick(e) { e.stopPropagation(); } }), onResizeStop: onResizeStop, onResize: onResize, draggableOpts: { enableUserSelectHack: false } }, /*#__PURE__*/_react.default.createElement("th", restProps)); }; var DEFAULT_PAGE_SIZE = 10; var useTable = function useTable(_schema, api) { // 这边可以useMemo一下 var schema = (0, _utils.buildSchema)(_schema, api) || {}; var _schema$searchConfig = schema.searchConfig, searchConfig = _schema$searchConfig === void 0 ? {} : _schema$searchConfig; // 模块级参数,可被覆盖、不可缺失 var initParams = (0, _react.useRef)({}); var _useSet = (0, _hooks.useSet)({ loading: false, search: searchConfig.initialValue, tab: searchConfig.tab, valid: [], data: [], selectedKeys: [], selectedRows: [], // 当允许多选,且有选中行时,为选中的所有的行的值 pagination: { current: 1, pageSize: DEFAULT_PAGE_SIZE } }), _useSet2 = _slicedToArray(_useSet, 2), state = _useSet2[0], set = _useSet2[1]; var pagination = state.pagination, tab = state.tab, valid = state.valid; var searchApi = (0, _react.useMemo)(function () { var _searchApi; try { if (!searchConfig.api) return; if ((0, _utils.isObj)(searchConfig.api)) { _searchApi = searchConfig.api.action; initParams.current = _objectSpread({}, searchConfig.initData); } else { var _searchConfig$api$tab; _searchApi = searchConfig.api[tab].action; initParams.current = _objectSpread(_objectSpread({}, searchConfig.initData), (_searchConfig$api$tab = searchConfig.api[tab]) === null || _searchConfig$api$tab === void 0 ? void 0 : _searchConfig$api$tab.params); // _tabParams属于静态传承 , 优先级高 } } catch (error) { set({ loading: false }); } return _searchApi; }, [tab, searchConfig]); var doSearch = function doSearch() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { current: 1, pageSize: pagination.pageSize, search: state.search }, _ref$current = _ref.current, current = _ref$current === void 0 ? 1 : _ref$current, _ref$pageSize = _ref.pageSize, pageSize = _ref$pageSize === void 0 ? pagination.pageSize : _ref$pageSize, _ref$search = _ref.search, search = _ref$search === void 0 ? state.search : _ref$search; var _pagination = { current: current, pageSize: pageSize }; if (valid === null || valid === void 0 ? void 0 : valid.length) return; set({ loading: true, selectedKeys: [], selectedRows: [] }); // let searchApi,_tabParams; 改至 useMemo // try { // if (!searchConfig.api) return; // if (isObj(searchConfig.api)) { // searchApi = searchConfig.api.action; // } else { // searchApi = searchConfig.api[tab].action; // _tabParams = searchConfig.api[tab].params; // _tabParams属于静态传承 , 优先级高 // } // } catch (error) { // set({ loading: false }); // } if (typeof searchApi === "function") { searchApi(_objectSpread(_objectSpread({ pageNo: _pagination.current }, (0, _commonUtils.splitParams)((0, _utils.filterParams)(_objectSpread(_objectSpread({}, initParams.current), search)))), _pagination)).then(function (res) { var data = res.data, total = res.total, pageSize = res.pageSize; set({ loading: false, data: data, pagination: _objectSpread(_objectSpread({}, _pagination), {}, { total: total, pageSize: pageSize || DEFAULT_PAGE_SIZE }) }); }).catch(function (err) { console.log(err); set({ loading: false }); }); } else { console.error("searchConfig.api中的action非函数", searchApi); set({ loading: false }); } }; var refresh = function refresh(current) { doSearch({ current: current || 1, pageSize: pagination.pageSize }); }; return { initParams: initParams.current, // 初始params值 state: state, set: set, schema: schema, doSearch: doSearch, refresh: refresh }; }; var TableRender = function TableRender(_ref2, ref) { var _schema = _ref2.schema, api = _ref2.api, widgets = _ref2.widgets, searchWidgets = _ref2.searchWidgets; var _useTable = useTable(_schema, api), state = _useTable.state, set = _useTable.set, schema = _useTable.schema, doSearch = _useTable.doSearch, refresh = _useTable.refresh, initParams = _useTable.initParams; var loading = state.loading, data = state.data, selectedKeys = state.selectedKeys, selectedRows = state.selectedRows, pagination = state.pagination, search = state.search, tab = state.tab; var finalParams = (0, _react.useMemo)(function () { return (0, _commonUtils.splitParams)((0, _utils.filterParams)(_objectSpread(_objectSpread({}, initParams), search))); }, [initParams, search]); var _schema$searchConfig2 = schema.searchConfig, searchConfig = _schema$searchConfig2 === void 0 ? {} : _schema$searchConfig2, _schema$tableConfig = schema.tableConfig, tableConfig = _schema$tableConfig === void 0 ? {} : _schema$tableConfig, _schema$actionConfig = schema.actionConfig, actionConfig = _schema$actionConfig === void 0 ? {} : _schema$actionConfig, _schema$columns = schema.columns, columns = _schema$columns === void 0 ? [] : _schema$columns, actionList = schema.actionList, buttonMenu = schema.buttonMenu, propsPagination = schema.pagination, aclCheckPermissionResults = schema.aclCheckPermissionResults, tableTitle = schema.tableTitle, title = schema.title, rest = _objectWithoutProperties(schema, _excluded2); var _useState = (0, _react.useState)(tableTitle), _useState2 = _slicedToArray(_useState, 2), lastTitle = _useState2[0], setTitle = _useState2[1]; var resizeColumns = tableConfig.resizeColumns, customColumns = tableConfig.customColumns, customSearch = tableConfig.customSearch, setShowCustomColumns = tableConfig.setShowCustomColumns, setShowCustomSearch = tableConfig.setShowCustomSearch, resizeTable = tableConfig.resizeTable, rowSelection = tableConfig.rowSelection, getCheckboxProps = tableConfig.getCheckboxProps, rowSelectionPropsCustomer = tableConfig.rowSelectionProps; var rowSelectionProps = rowSelection ? _objectSpread({ type: "checkbox", getCheckboxProps: getCheckboxProps, selectedRowKeys: selectedKeys, onChange: function onChange(keys, records) { set({ selectedKeys: keys, selectedRows: records }); } }, rowSelectionPropsCustomer) : null; var _widgets = _objectSpread(_objectSpread({}, _widgets2.default), widgets); var renderActionList = function renderActionList(record, list, DropItem) { return /*#__PURE__*/_react.default.createElement("div", { className: "tr-action-list", style: { display: "flex", justifyContent: "center" } }, list.map(function (item, idx) { var _item$content; var content = item.text; try { if (item.widget) { content = _widgets[item.widget](_objectSpread(_objectSpread({}, record), item)); } } catch (e) {} var disEval = false; try { disEval = item[item.disEval] || eval(item.disEval); } catch (_unused) {} var disabled = (0, _utils.parseFunctionValue)(item && item.disabled, record) || disEval; var btnHandle = function btnHandle() { return handleAction(item, _objectSpread(_objectSpread({}, finalParams), record), disabled); }; var _getBtnConfig = (0, _commonUtils.getBtnConfig)(disEval, item.funcType, item.aclPermissionCode, aclCheckPermissionResults), again = _getBtnConfig.again, btnProps = _getBtnConfig.btnProps; var btnStyle = {}; try { btnStyle = JSON.parse(item.btnStyle); } catch (e) {} var endBtn = again ? /*#__PURE__*/_react.default.createElement(_popconfirm.default, _extends({ key: idx.toString(), title: (item === null || item === void 0 ? void 0 : (_item$content = item.content) === null || _item$content === void 0 ? void 0 : _item$content.tips) || "确定进行该操作!", disabled: disabled, onConfirm: btnHandle }, btnProps), /*#__PURE__*/_react.default.createElement(_button.default, _extends({ type: "link", size: "small", style: { marginRight: 8 }, disabled: disabled }, btnStyle), item.text)) : /*#__PURE__*/_react.default.createElement(_button.default, _extends({ key: idx.toString(), type: "link", size: "small", style: { marginRight: 8 }, disabled: disabled, onClick: btnHandle }, btnStyle), item.text); return disabled ? /*#__PURE__*/_react.default.createElement(_tooltip.default, { title: item.disEvalTips || "禁用,不可点击" }, endBtn) : endBtn; }), DropItem); }; // 超过三个就展示下拉 var renderAction = function renderAction(text, record) { if (!actionList) return false; var actList = actionList.filter(function (item) { var isHidden = false; try { isHidden = record[item.isHidden] || eval(item.isHidden); } catch (_unused2) {} return !isHidden; }); var limit = actionConfig.showCount || 3; var len = actList.length; if (len <= limit) { return renderActionList(record, actList); } else { var firstFew = actList.slice(0, limit - 1); var dropList = actList.slice(limit - 1); var menu = /*#__PURE__*/_react.default.createElement(_menu.default, null, dropList.map(function (item, idx) { var _item$content2; var disEval = false; try { disEval = item[item.disEval] || eval(item.disEval); } catch (_unused3) {} var disabled = (0, _utils.parseFunctionValue)(item && item.disabled, record) || disEval; var btnHandle = function btnHandle() { return handleAction(item, _objectSpread(_objectSpread({}, finalParams), record), disabled); }; var _getBtnConfig2 = (0, _commonUtils.getBtnConfig)(disEval, item.funcType, item.aclPermissionCode, aclCheckPermissionResults), again = _getBtnConfig2.again, btnProps = _getBtnConfig2.btnProps; var btnStyle = {}; try { btnStyle = JSON.parse(item.btnStyle); } catch (e) {} var endBtn = /*#__PURE__*/_react.default.createElement(_menu.default.Item, { key: idx.toString(), disabled: disabled }, again ? /*#__PURE__*/_react.default.createElement(_popconfirm.default, _extends({ title: (item === null || item === void 0 ? void 0 : (_item$content2 = item.content) === null || _item$content2 === void 0 ? void 0 : _item$content2.tips) || "确定进行该操作!", disabled: disabled, onConfirm: btnHandle }, btnProps), /*#__PURE__*/_react.default.createElement(_button.default, _extends({ type: "link", size: "small", style: { marginRight: 8 }, disabled: disabled }, btnStyle), item.text)) : /*#__PURE__*/_react.default.createElement(_button.default, _extends({ type: "link", size: "small", style: { marginRight: 8 }, disabled: disabled, onClick: btnHandle }, btnStyle), item.text)); return disabled ? /*#__PURE__*/_react.default.createElement(_tooltip.default, { title: item.disEvalTips || "禁用,不可点击" }, endBtn) : endBtn; })); var DropItem = /*#__PURE__*/_react.default.createElement(_dropdown.default, { overlay: menu }, /*#__PURE__*/_react.default.createElement("a", { onClick: function onClick(e) { return e.preventDefault(); } }, /*#__PURE__*/_react.default.createElement("img", { alt: "more", style: { width: "15px" }, src: _more.default }))); return renderActionList(record, firstFew, DropItem); } }; // 操作区配置 var ActionList; var actionWidth = 60; // 预留宽度,避免挤压低于60, 尽量保证最窄 60px if (actionList === null || actionList === void 0 ? void 0 : actionList.length) { // 优化操作区按键width var len = actionList.length; // 实际显示按键数 var showCount = Math.min(len, actionConfig.showCount); // 按键边距 actionWidth += (showCount - 2) * 10; // 显示按键字数 var wordsCount = 0; for (var i = 0; i < showCount; i++) { wordsCount += actionList[i].text.length; } actionWidth += wordsCount * 15; ActionList = _objectSpread(_objectSpread({ title: "操作", width: actionWidth, align: "center", key: "sunmao_action" }, actionConfig), {}, { render: renderAction }); } // defaultColumns、cols 同步初始化 上级传入 columns var defaultColumns = (0, _react.useRef)(columns); var _useState3 = (0, _react.useState)(columns), _useState4 = _slicedToArray(_useState3, 2), cols = _useState4[0], setCols = _useState4[1]; // 用于动态显示宽度滑动 (0, _react.useMemo)(function () { // 上级传入 columns 变更后,重置 受控显示cols if (JSON.stringify(defaultColumns.current) != JSON.stringify(columns)) { defaultColumns.current = columns; setCols(columns); } }, [columns]); // 动态修改宽度 var handleResize = function handleResize(index) { return function (_, _ref3) { var size = _ref3.size; var newColumns = _toConsumableArray(cols); newColumns[index] = _objectSpread(_objectSpread({}, newColumns[index]), {}, { width: size.width }); setCols(newColumns); }; }; var handleResizeStop = function handleResizeStop(index) { return function (_, _ref4) { var size = _ref4.size; // 保存最新表头宽度数据 resizeTable(cols); }; }; var resizableColumns = { columns: [] }; // 根据resizeColumns组装 columns if (resizeColumns) { // 设置侦听函数 var mergeColumns = cols.map(function (col, index) { return _objectSpread(_objectSpread({}, col), {}, { onHeaderCell: function onHeaderCell(column) { return { width: Math.max(column.width, 80), onResize: handleResize(index), onResizeStop: handleResizeStop(index) }; } }); }); resizableColumns.columns = ActionList ? [].concat(_toConsumableArray(mergeColumns), [ActionList]) : mergeColumns; resizableColumns.components = { header: { cell: ResizableTitle } }; resizableColumns.scroll = { x: formUtils.getTableWidth(mergeColumns) + actionWidth }; } else { resizableColumns.columns = ActionList ? [].concat(_toConsumableArray(cols), [ActionList]) : cols; } (0, _react.useEffect)(function () { if (searchConfig.autoSearch) { // 设置,则自动刷新 doSearch(); } }, []); // eslint-disable-line var removeSearch = function removeSearch() { // 恢复默认 使用 initialValue ; initData为页面级参数、可被search覆盖,不可缺失 set({ search: searchConfig.initialValue }); searchConfig.autoSearch && doSearch({ search: searchConfig.initialValue }); }; var onTabChange = function onTabChange(e) { try { set({ tab: parseInt(e.target.value) }); // 切换即刷新 setTimeout(function () { doSearch(); }, 100); } catch (e) { console.error(e); } }; var handleTableChange = function handleTableChange(_ref5, // 分页 tableFilterParams, // 过滤 _ref6, // 排序 temp2) { var current = _ref5.current, pageSize = _ref5.pageSize; var order = _ref6.order, field = _ref6.field; // 初始化pagination传参 var params = { current: 1, pageSize: pageSize }; // 初始化排序传参 if (order && field) { // 排序类型 排序字段 params.search = _objectSpread(_objectSpread(_objectSpread({}, finalParams), search), {}, { // finalParams中过滤了 ‘’等空值字段,此处回填一下 sortOrder: order, sortField: field }, tableFilterParams); } else { // 设置过滤传参 params.search = _objectSpread(_objectSpread(_objectSpread({}, finalParams), search), tableFilterParams); } // 除页码变更,其余采用初始化传参 if (pagination.current !== current) { params.current = current; } // console.log("------handleTableChange", params); doSearch(params); }; var handleAction = function handleAction(item, record) { var disabled = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (disabled) return; if (item && item.action && typeof item.action === "function") { item.action(record, refresh, item); } else if (!item.widget) { console.error("传入的点击事件不是一个函数", item); } }; var handleMenuAction = function handleMenuAction(action, params) { if (typeof action === "function") { var _params$selectedKeys, _params$handleInfo; // 是否批量操作,批量操作无选中时拦截 if (!(params === null || params === void 0 ? void 0 : (_params$selectedKeys = params.selectedKeys) === null || _params$selectedKeys === void 0 ? void 0 : _params$selectedKeys.length) && (params === null || params === void 0 ? void 0 : (_params$handleInfo = params.handleInfo) === null || _params$handleInfo === void 0 ? void 0 : _params$handleInfo.interceptTips)) { _message2.default.error(params.handleInfo.interceptTips); return; } action(params); } else { console.error("传入的点击事件不是一个函数", action); } }; var handleSearch = function handleSearch() { return doSearch(); }; var getState = function getState() { return _objectSpread({}, state); }; // 开放给外部使用的方法和属性 (0, _react.useImperativeHandle)(ref, function () { return { setTitle: setTitle, refresh: refresh, setState: set, getState: getState }; }); var SearchBtn = function SearchBtn() { return /*#__PURE__*/_react.default.createElement("div", { className: "flex justify-end w-100" }, /*#__PURE__*/_react.default.createElement(_button.default, { className: "mr2", type: "primary", onClick: handleSearch }, "\u67E5\u8BE2"), /*#__PURE__*/_react.default.createElement(_button.default, { onClick: removeSearch }, "\u91CD\u7F6E"), customSearch && /*#__PURE__*/_react.default.createElement(_tooltip.default, { title: "\u53EF\u81EA\u5B9A\u4E49\u5C55\u793A\u67E5\u8BE2\u9879" }, /*#__PURE__*/_react.default.createElement(_SettingOutlined2.default, { className: "ml2", onClick: function onClick() { return setShowCustomSearch(true); } }))); }; var SearchFromSchema = searchConfig.schema ? _objectSpread({}, searchConfig.schema) : undefined; var showSearch = true; try { // 当查询项都隐藏或 无查询项时,隐藏搜索ui showSearch = Object.values(SearchFromSchema.propsSchema.properties).some(function (v) { return !v["ui:hidden"]; }); if (showSearch) { var calcWidth = function calcWidth(schema) { var width = 100; try { var wList = Object.values(schema.propsSchema.properties).filter(function (v) { return v["ui:hidden"] !== true; }).map(function (v) { return v["ui:width"]; }); var idx = wList.lastIndexOf(undefined); var effectiveList = wList.slice(idx + 1).map(function (item) { return Number(item.substring(0, item.length - 1)); }); var _len = effectiveList.reduce(function (a, b) { var sum = a + b; if (sum > 100) return Math.min(100, b); return sum; }, 0); width = 100 - _len; if (width < 10) { // 如果剩下太少了,就换行 width = 100; } return width + "%"; } catch (error) {} return width + "%"; }; SearchFromSchema.propsSchema.properties.searchBtn = { "ui:widget": "searchBtn", "ui:className": "search-btn", "ui:width": calcWidth(SearchFromSchema) }; } } catch (error) {} var renderTopBtn = function renderTopBtn(btn, idx) { var btnType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "default"; var text = btn.text, label = btn.label, funcType = btn.funcType, content = btn.content, eventRender = btn.renderFunc; var btnName = text || label; // 添加隐藏功能 var isHidden = false; try { isHidden = finalParams[btn.isHidden] || eval(btn.isHidden); if (isHidden) return null; } catch (_unused4) {} var params = { data: data, selectedKeys: selectedKeys, selectedRows: selectedRows, refresh: refresh, handleInfo: btn, search: _objectSpread(_objectSpread({}, finalParams), {}, { requestJson: JSON.stringify(finalParams) }) }; var disEval = false; try { disEval = finalParams[btn.disEval] || eval(btn.disEval); } catch (_unused5) {} var btnHandle = function btnHandle() { return handleMenuAction(btn.action, params); }; var _getBtnConfig3 = (0, _commonUtils.getBtnConfig)(disEval, btn.funcType, btn.aclPermissionCode, aclCheckPermissionResults), again = _getBtnConfig3.again, btnProps = _getBtnConfig3.btnProps; try { if ( /*#__PURE__*/_react.default.isValidElement(btn(params))) return /*#__PURE__*/_react.default.createElement("div", { style: { marginRight: 8 }, key: idx.toString() }, btn(params)); } catch (e) {} if (btn.widget) { try { return /*#__PURE__*/_react.default.createElement("div", { style: { marginRight: 8 }, key: idx.toString() }, _widgets[btn.widget](params)); } catch (e) {} } var btnStyle = {}; try { btnStyle = JSON.parse(btn.btnStyle); } catch (e) {} var endBtn; var buttonProps = _objectSpread({ style: { marginRight: 8 }, disabled: disEval, type: btnType }, btnStyle); if (funcType === "37") { var menu = /*#__PURE__*/_react.default.createElement(_menu.default, null, content.handleItems.map(function (item, idx) { var menuBtn = renderTopBtn(item, idx, "link"); return /*#__PURE__*/_react.default.createElement(_menu.default.Item, { key: idx.toString() }, menuBtn); })); endBtn = /*#__PURE__*/_react.default.createElement(_dropdown.default, { key: idx.toString(), overlay: menu, placement: "top" }, eventRender ? eventRender(btn, buttonProps) : /*#__PURE__*/_react.default.createElement(_button.default, { type: "primary", style: { marginRight: 8 } }, btnName)); } else if (again) { var _btn$content; endBtn = /*#__PURE__*/_react.default.createElement(_popconfirm.default, _extends({ key: idx.toString(), disabled: disEval, title: (btn === null || btn === void 0 ? void 0 : (_btn$content = btn.content) === null || _btn$content === void 0 ? void 0 : _btn$content.tips) || "确定进行该操作!", onConfirm: btnHandle }, btnProps), eventRender ? eventRender(btn, buttonProps) : /*#__PURE__*/_react.default.createElement(_button.default, buttonProps, btnName)); } else { var compProps = _objectSpread({ key: idx.toString(), onClick: btnHandle }, buttonProps); endBtn = eventRender ? eventRender(btn, compProps) : /*#__PURE__*/_react.default.createElement(_button.default, compProps, btnName); } return disEval ? /*#__PURE__*/_react.default.createElement(_tooltip.default, { title: btn.disEvalTips || "禁用,不可点击" }, endBtn) : endBtn; }; return /*#__PURE__*/_react.default.createElement(_configProvider.default, { locale: _zh_CN.default }, /*#__PURE__*/_react.default.createElement("div", { className: "" }, showSearch && /*#__PURE__*/_react.default.createElement("div", { className: "tr-search" }, searchConfig.searchTopRender && searchConfig.searchTopRender(finalParams), /*#__PURE__*/_react.default.createElement(_FR.default, _extends({}, SearchFromSchema, { formData: search, onChange: function onChange(v) { return set({ search: v }); }, onValidate: function onValidate(v) { return set({ valid: v }); }, widgets: _objectSpread({ searchBtn: SearchBtn }, searchWidgets) }))), /*#__PURE__*/_react.default.createElement("div", { className: "tr-table-wrapper" }, /*#__PURE__*/_react.default.createElement("div", { className: "tr-table-tabs" }, /*#__PURE__*/_react.default.createElement("h3", { className: "tr-table-title" }, lastTitle || title), /*#__PURE__*/_react.default.createElement(TableTabs, { tab: tab, api: searchConfig.api, onTabChange: onTabChange }), /*#__PURE__*/_react.default.createElement("div", { style: { display: "flex", flexDirection: "row-reverse", alignItems: "center", paddingRight: 8 } }, customColumns && /*#__PURE__*/_react.default.createElement(_tooltip.default, { title: "\u53EF\u81EA\u5B9A\u4E49\u5C55\u793A\u8868\u5217" }, /*#__PURE__*/_react.default.createElement(_SettingOutlined2.default, { onClick: function onClick() { return setShowCustomColumns(true); } })), buttonMenu && Array.isArray(buttonMenu) && buttonMenu.map(renderTopBtn))), /*#__PURE__*/_react.default.createElement(_table.default, _extends({ className: "components-table-demo-resizable-column", loading: loading, dataSource: data, onChange: handleTableChange, pagination: _objectSpread(_objectSpread({}, pagination), {}, { // onChange: handlePageChange, 改为 handleTableChange // showSizeChanger: false, showTotal: function showTotal(total) { return "\u5171 ".concat(total, " \u6761"); } }, propsPagination), rowSelection: rowSelectionProps }, rest, resizableColumns))))); }; var TableTabs = function TableTabs(_ref7) { var api = _ref7.api, tab = _ref7.tab, onTabChange = _ref7.onTabChange; var _tab = tab || 0; if (api && api.text) return /*#__PURE__*/_react.default.createElement("div", { className: "tr-single-tab" }, api.text); if (api && Array.isArray(api)) { if (api.length === 1) return /*#__PURE__*/_react.default.createElement("div", { className: "tr-single-tab" }, api[0].text); return /*#__PURE__*/_react.default.createElement(_radio.default.Group, { onChange: onTabChange, defaultValue: _tab.toString(), className: "mb2 full-flex" }, api.map(function (item, i) { return /*#__PURE__*/_react.default.createElement(_radio.default.Button, { key: item.text, value: i.toString() }, item.text); })); } return /*#__PURE__*/_react.default.createElement("div", { className: "tr-single-tab" }); // 给一个空的占位 }; var _default = /*#__PURE__*/(0, _react.forwardRef)(TableRender); exports.default = _default;