nsn-comp
Version:
NSN核心组件
88 lines (74 loc) • 2.21 kB
JavaScript
import "antd/es/switch/style";
import _Switch from "antd/es/switch";
import { StatusEnum } from "nsn-enum";
import { NStr, NType } from "nsn-util";
import React from "react";
import { refreshStatus } from '../../_util';
var getToggleNType = function getToggleNType(columnsProps) {
var _ref = columnsProps || {},
status = _ref.status;
var toggleType = undefined;
if (NType.isString(status)) {
toggleType = status;
} else if (NType.isNotUndefined(status)) {
toggleType = status === null || status === void 0 ? void 0 : status.dtype;
}
return toggleType;
};
var onSubmitStatus = function onSubmitStatus(comp, record) {
// 此状态设置,为了渲染表格行StatusColumn中的loading状态
comp.setState({
record: record
}); //
var _comp$props = comp.props,
dispatch = _comp$props.dispatch,
table = _comp$props.table;
var columnsProps = table.columnsProps;
var toggleType = getToggleNType(columnsProps);
if (dispatch && toggleType) {
dispatch({
message: {
success: true
},
type: toggleType,
payload: {
id: record.id
},
callback: function callback(_ref2) {
var success = _ref2.success;
comp.setState({
record: undefined
});
if (success) {
refreshStatus(comp, record);
}
}
});
}
};
/**
* 渲染状态列
*/
var StatusColumn = function StatusColumn(props) {
var comp = props.comp,
record = props.record;
var toggleRecord = comp.state.record;
var _comp$props2 = comp.props,
table = _comp$props2.table,
loading = _comp$props2.loading;
var columnsProps = table.columnsProps;
var toggleType = getToggleNType(columnsProps); //
var toggleLoading = false;
if (toggleType) {
toggleLoading = loading.effects[toggleType];
}
return React.createElement(_Switch, {
size: "small",
loading: toggleLoading && record.id === (toggleRecord === null || toggleRecord === void 0 ? void 0 : toggleRecord.id),
onChange: function onChange() {
return onSubmitStatus(comp, record);
},
checked: NStr.isEqual(record['status'], StatusEnum.NORMAL)
});
};
export { StatusColumn };