sunmao-sdk
Version:
榫卯-开箱即用赋能-sdk
945 lines (805 loc) • 33.7 kB
JavaScript
import "antd/es/radio/style";
import _Radio from "antd/es/radio";
import "antd/es/config-provider/style";
import _ConfigProvider from "antd/es/config-provider";
import "antd/es/table/style";
import _Table from "antd/es/table";
import _SettingOutlined from "@ant-design/icons/es/icons/SettingOutlined";
import "antd/es/message/style";
import _message from "antd/es/message";
import "antd/es/dropdown/style";
import _Dropdown from "antd/es/dropdown";
import "antd/es/menu/style";
import _Menu from "antd/es/menu";
import "antd/es/tooltip/style";
import _Tooltip from "antd/es/tooltip";
import "antd/es/popconfirm/style";
import _Popconfirm from "antd/es/popconfirm";
import "antd/es/button/style";
import _Button from "antd/es/button";
var _excluded = ["onResize", "onResizeStop", "width"],
_excluded2 = ["searchConfig", "tableConfig", "actionConfig", "columns", "actionList", "buttonMenu", "pagination", "aclCheckPermissionResults", "tableTitle", "title"];
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; }
import React, { useEffect, useImperativeHandle, forwardRef, useMemo, useState, useRef } from "react";
import { useSet } from "./hooks";
import zhCN from "antd/es/locale/zh_CN"; // import "antd/dist/antd.css";
import "./index.css";
import { buildSchema, isObj, parseFunctionValue, filterParams } from "./utils";
import defaultWidgets from "./widgets";
import more from "../../assets/more.png";
import FR from "../FR";
import { getBtnConfig, splitParams } from "../../utils/commonUtils";
import * as formUtils from "../../utils/formUtils";
import { Resizable } from "react-resizable"; // 定义头部组件
var ResizableTitle = function ResizableTitle(props) {
var onResize = props.onResize,
onResizeStop = props.onResizeStop,
width = props.width,
restProps = _objectWithoutProperties(props, _excluded);
if (!width) {
return /*#__PURE__*/React.createElement("th", restProps);
}
return /*#__PURE__*/React.createElement(Resizable, {
width: width,
height: 0,
handle: /*#__PURE__*/React.createElement("span", {
className: "react-resizable-handle",
onClick: function onClick(e) {
e.stopPropagation();
}
}),
onResizeStop: onResizeStop,
onResize: onResize,
draggableOpts: {
enableUserSelectHack: false
}
}, /*#__PURE__*/React.createElement("th", restProps));
};
var DEFAULT_PAGE_SIZE = 10;
var useTable = function useTable(_schema, api) {
// 这边可以useMemo一下
var schema = buildSchema(_schema, api) || {};
var _schema$searchConfig = schema.searchConfig,
searchConfig = _schema$searchConfig === void 0 ? {} : _schema$searchConfig; // 模块级参数,可被覆盖、不可缺失
var initParams = useRef({});
var _useSet = 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 = useMemo(function () {
var _searchApi;
try {
if (!searchConfig.api) return;
if (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
}, splitParams(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 = useMemo(function () {
return splitParams(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 = 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({}, defaultWidgets), widgets);
var renderActionList = function renderActionList(record, list, DropItem) {
return /*#__PURE__*/React.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 = parseFunctionValue(item && item.disabled, record) || disEval;
var btnHandle = function btnHandle() {
return handleAction(item, _objectSpread(_objectSpread({}, finalParams), record), disabled);
};
var _getBtnConfig = 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.createElement(_Popconfirm, _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.createElement(_Button, _extends({
type: "link",
size: "small",
style: {
marginRight: 8
},
disabled: disabled
}, btnStyle), item.text)) : /*#__PURE__*/React.createElement(_Button, _extends({
key: idx.toString(),
type: "link",
size: "small",
style: {
marginRight: 8
},
disabled: disabled,
onClick: btnHandle
}, btnStyle), item.text);
return disabled ? /*#__PURE__*/React.createElement(_Tooltip, {
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.createElement(_Menu, null, dropList.map(function (item, idx) {
var _item$content2;
var disEval = false;
try {
disEval = item[item.disEval] || eval(item.disEval);
} catch (_unused3) {}
var disabled = parseFunctionValue(item && item.disabled, record) || disEval;
var btnHandle = function btnHandle() {
return handleAction(item, _objectSpread(_objectSpread({}, finalParams), record), disabled);
};
var _getBtnConfig2 = 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.createElement(_Menu.Item, {
key: idx.toString(),
disabled: disabled
}, again ? /*#__PURE__*/React.createElement(_Popconfirm, _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.createElement(_Button, _extends({
type: "link",
size: "small",
style: {
marginRight: 8
},
disabled: disabled
}, btnStyle), item.text)) : /*#__PURE__*/React.createElement(_Button, _extends({
type: "link",
size: "small",
style: {
marginRight: 8
},
disabled: disabled,
onClick: btnHandle
}, btnStyle), item.text));
return disabled ? /*#__PURE__*/React.createElement(_Tooltip, {
title: item.disEvalTips || "禁用,不可点击"
}, endBtn) : endBtn;
}));
var DropItem = /*#__PURE__*/React.createElement(_Dropdown, {
overlay: menu
}, /*#__PURE__*/React.createElement("a", {
onClick: function onClick(e) {
return e.preventDefault();
}
}, /*#__PURE__*/React.createElement("img", {
alt: "more",
style: {
width: "15px"
},
src: more
})));
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 = useRef(columns);
var _useState3 = useState(columns),
_useState4 = _slicedToArray(_useState3, 2),
cols = _useState4[0],
setCols = _useState4[1]; // 用于动态显示宽度滑动
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;
}
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)) {
_message.error(params.handleInfo.interceptTips);
return;
}
action(params);
} else {
console.error("传入的点击事件不是一个函数", action);
}
};
var handleSearch = function handleSearch() {
return doSearch();
};
var getState = function getState() {
return _objectSpread({}, state);
}; // 开放给外部使用的方法和属性
useImperativeHandle(ref, function () {
return {
setTitle: setTitle,
refresh: refresh,
setState: set,
getState: getState
};
});
var SearchBtn = function SearchBtn() {
return /*#__PURE__*/React.createElement("div", {
className: "flex justify-end w-100"
}, /*#__PURE__*/React.createElement(_Button, {
className: "mr2",
type: "primary",
onClick: handleSearch
}, "\u67E5\u8BE2"), /*#__PURE__*/React.createElement(_Button, {
onClick: removeSearch
}, "\u91CD\u7F6E"), customSearch && /*#__PURE__*/React.createElement(_Tooltip, {
title: "\u53EF\u81EA\u5B9A\u4E49\u5C55\u793A\u67E5\u8BE2\u9879"
}, /*#__PURE__*/React.createElement(_SettingOutlined, {
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 = getBtnConfig(disEval, btn.funcType, btn.aclPermissionCode, aclCheckPermissionResults),
again = _getBtnConfig3.again,
btnProps = _getBtnConfig3.btnProps;
try {
if ( /*#__PURE__*/React.isValidElement(btn(params))) return /*#__PURE__*/React.createElement("div", {
style: {
marginRight: 8
},
key: idx.toString()
}, btn(params));
} catch (e) {}
if (btn.widget) {
try {
return /*#__PURE__*/React.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.createElement(_Menu, null, content.handleItems.map(function (item, idx) {
var menuBtn = renderTopBtn(item, idx, "link");
return /*#__PURE__*/React.createElement(_Menu.Item, {
key: idx.toString()
}, menuBtn);
}));
endBtn = /*#__PURE__*/React.createElement(_Dropdown, {
key: idx.toString(),
overlay: menu,
placement: "top"
}, eventRender ? eventRender(btn, buttonProps) : /*#__PURE__*/React.createElement(_Button, {
type: "primary",
style: {
marginRight: 8
}
}, btnName));
} else if (again) {
var _btn$content;
endBtn = /*#__PURE__*/React.createElement(_Popconfirm, _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.createElement(_Button, buttonProps, btnName));
} else {
var compProps = _objectSpread({
key: idx.toString(),
onClick: btnHandle
}, buttonProps);
endBtn = eventRender ? eventRender(btn, compProps) : /*#__PURE__*/React.createElement(_Button, compProps, btnName);
}
return disEval ? /*#__PURE__*/React.createElement(_Tooltip, {
title: btn.disEvalTips || "禁用,不可点击"
}, endBtn) : endBtn;
};
return /*#__PURE__*/React.createElement(_ConfigProvider, {
locale: zhCN
}, /*#__PURE__*/React.createElement("div", {
className: ""
}, showSearch && /*#__PURE__*/React.createElement("div", {
className: "tr-search"
}, searchConfig.searchTopRender && searchConfig.searchTopRender(finalParams), /*#__PURE__*/React.createElement(FR, _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.createElement("div", {
className: "tr-table-wrapper"
}, /*#__PURE__*/React.createElement("div", {
className: "tr-table-tabs"
}, /*#__PURE__*/React.createElement("h3", {
className: "tr-table-title"
}, lastTitle || title), /*#__PURE__*/React.createElement(TableTabs, {
tab: tab,
api: searchConfig.api,
onTabChange: onTabChange
}), /*#__PURE__*/React.createElement("div", {
style: {
display: "flex",
flexDirection: "row-reverse",
alignItems: "center",
paddingRight: 8
}
}, customColumns && /*#__PURE__*/React.createElement(_Tooltip, {
title: "\u53EF\u81EA\u5B9A\u4E49\u5C55\u793A\u8868\u5217"
}, /*#__PURE__*/React.createElement(_SettingOutlined, {
onClick: function onClick() {
return setShowCustomColumns(true);
}
})), buttonMenu && Array.isArray(buttonMenu) && buttonMenu.map(renderTopBtn))), /*#__PURE__*/React.createElement(_Table, _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.createElement("div", {
className: "tr-single-tab"
}, api.text);
if (api && Array.isArray(api)) {
if (api.length === 1) return /*#__PURE__*/React.createElement("div", {
className: "tr-single-tab"
}, api[0].text);
return /*#__PURE__*/React.createElement(_Radio.Group, {
onChange: onTabChange,
defaultValue: _tab.toString(),
className: "mb2 full-flex"
}, api.map(function (item, i) {
return /*#__PURE__*/React.createElement(_Radio.Button, {
key: item.text,
value: i.toString()
}, item.text);
}));
}
return /*#__PURE__*/React.createElement("div", {
className: "tr-single-tab"
}); // 给一个空的占位
};
export default /*#__PURE__*/forwardRef(TableRender);