fastlion-amis
Version:
一种MIS页面生成工具
178 lines (177 loc) • 12.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var antd_1 = require("antd");
var react_1 = tslib_1.__importStar(require("react"));
var cross_1 = require("../cross");
var lodash_1 = require("lodash");
exports.default = (function (props) {
var columns = props.columns, getAllData = props.getAllData, data = props.data, staticRecords = props.staticRecords, initValues = props.initValues, calcNum = props.calcNum, defaultNum = props.defaultNum, resetNum = props.resetNum, name = props.name, handleChange = props.handleChange, setLoading = props.setLoading;
var _a = (0, react_1.useState)(initValues.rowFields), rowFields = _a[0], setRowFields = _a[1];
var _b = (0, react_1.useState)(initValues.colFields), colFields = _b[0], setColFields = _b[1];
var _c = (0, react_1.useState)(initValues.valueFields), valueFields = _c[0], setValueFields = _c[1];
var _d = (0, react_1.useState)(initValues.dataRange), dataRange = _d[0], setDataRange = _d[1];
var _e = (0, react_1.useState)(initValues.countSum), countSum = _e[0], setCountSum = _e[1];
var _f = (0, react_1.useState)(initValues.valuePosition), valuePosition = _f[0], setValuePosition = _f[1];
(0, react_1.useEffect)(function () {
console.log(rowFields);
}, [rowFields]);
(0, react_1.useEffect)(function () {
calcNum > 0 && handleOk();
}, [calcNum]);
(0, react_1.useEffect)(function () {
defaultNum > 0 && handleDefault();
}, [defaultNum]);
(0, react_1.useEffect)(function () {
onChange({ rowFields: rowFields, colFields: colFields, valueFields: valueFields, dataRange: dataRange, countSum: countSum, valuePosition: valuePosition });
}, [rowFields, colFields, valueFields, dataRange, countSum, valuePosition]);
var onChange = function (data) {
crossDataRef.current = data;
};
var handleChangeData = function (type, items) {
var checkFn = function (datas) {
return datas.map(function (data) {
var target = items.find(function (item) { return item.name == data.name; });
return target ? tslib_1.__assign(tslib_1.__assign({}, data), { checked: target.checked }) : data;
});
};
var hideFn = function (datas) {
return datas.map(function (data) {
var target = items.find(function (item) { return item.name == data.name; });
return target ? tslib_1.__assign(tslib_1.__assign({}, data), { hidden: target.checked }) : data;
});
};
if (type == 0) {
setRowFields(checkFn);
setColFields(hideFn);
setValueFields(hideFn);
}
else if (type == 1) {
setColFields(checkFn);
setRowFields(hideFn);
setValueFields(hideFn);
}
else if (type == 2) {
setValueFields(checkFn);
setRowFields(hideFn);
setColFields(hideFn);
}
};
var getData = function (dataRange, showFields) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var items;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(dataRange == 0)) return [3 /*break*/, 1];
return [2 /*return*/, Promise.resolve(data.items)];
case 1:
if (!(dataRange == 1)) return [3 /*break*/, 2];
return [2 /*return*/, Promise.resolve(data.selectedItems)];
case 2: return [4 /*yield*/, getAllData(showFields)];
case 3:
items = (_a.sent()).items;
if (Array.isArray(items)) {
return [2 /*return*/, items];
}
return [2 /*return*/, []];
}
});
}); };
var crossDataRef = (0, react_1.useRef)();
var handleOk = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var rowFields_1, colFields_1, valueFields_1, dataRange_1, countSum_1, valueInCol_1, showFields, _a, crossColumns, datas, cross, countColumns;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!crossDataRef.current) return [3 /*break*/, 2];
rowFields_1 = crossDataRef.current.rowFields.filter(function (field) { return !field.hidden && field.checked; });
colFields_1 = crossDataRef.current.colFields.filter(function (field) { return !field.hidden && field.checked; });
valueFields_1 = crossDataRef.current.valueFields.filter(function (field) { return !field.hidden && field.checked; });
if (valueFields_1.length == 0) {
antd_1.message.warning('请选择值');
return [2 /*return*/];
}
dataRange_1 = crossDataRef.current.dataRange;
countSum_1 = crossDataRef.current.countSum;
valueInCol_1 = crossDataRef.current.valuePosition == 'col';
setLoading(true);
showFields = tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], rowFields_1, true), colFields_1, true), valueFields_1, true).map(function (field) { return field.name; });
return [4 /*yield*/, getData(dataRange_1, showFields).then(function (datas) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var crossColumns;
return tslib_1.__generator(this, function (_a) {
if (datas.length > 10000) {
antd_1.message.warning('数据行数大于10000条,请重新选择');
return [2 /*return*/, [[], []]];
}
crossColumns = valueInCol_1 ? (0, cross_1.buildCrossColumn1)(rowFields_1, colFields_1, datas, true) : (0, cross_1.buildCrossColumn)(rowFields_1, colFields_1, valueFields_1, datas, countSum_1, true);
if (crossColumns.length > 1000) {
antd_1.message.warning('交叉制表结果列数大于1000,请重新选择');
return [2 /*return*/, [[], []]];
}
return [2 /*return*/, [crossColumns, datas]];
});
}); }).catch(function () { return [[], []]; }).finally(function () {
setLoading(false);
})];
case 1:
_a = _b.sent(), crossColumns = _a[0], datas = _a[1];
if (crossColumns.length > 0) {
cross = {
columnFields: colFields_1.map(function (field) { return ({ name: field.name }); }),
rowFields: rowFields_1.map(function (field) { return ({ name: field.name }); }),
valueFields: valueFields_1.map(function (field) { return field.name; }).join(','),
positionType: valueInCol_1 ? 1 : 0
};
countColumns = countSum_1 ? valueFields_1.map(function (field) { return ({ name: field.name, label: field.label, formula: 'SUM', type: 'formula', rule: '合计' }); }) : [];
handleChange({ cross: cross, crossColumns: crossColumns, datas: datas, countColumns: countColumns });
staticRecords(141);
}
_b.label = 2;
case 2: return [2 /*return*/];
}
});
}); };
var handleDefault = function () {
var _a, _b, _c;
if (crossDataRef.current && name) {
var rowFields_2 = (0, lodash_1.flatMap)((_a = crossDataRef.current.rowFields) !== null && _a !== void 0 ? _a : [], function (field) { return !field.hidden && field.checked ? field.name : []; });
var colFields_2 = (0, lodash_1.flatMap)((_b = crossDataRef.current.colFields) !== null && _b !== void 0 ? _b : [], function (field) { return !field.hidden && field.checked ? field.name : []; });
var valueFields_2 = (0, lodash_1.flatMap)((_c = crossDataRef.current.valueFields) !== null && _c !== void 0 ? _c : [], function (field) { return !field.hidden && field.checked ? field.name : []; });
var value = JSON.stringify(tslib_1.__assign(tslib_1.__assign({}, crossDataRef.current), { rowFields: rowFields_2, colFields: colFields_2, valueFields: valueFields_2 }));
localStorage.setItem("cross_".concat(name), value);
antd_1.message.success('保存成功');
}
};
var renderItem = function (type, datas) {
return (react_1.default.createElement("div", { className: "common-select-container", style: { height: '100%', width: 'calc(33% - 8px)' } },
react_1.default.createElement("div", { className: "sel-top" },
react_1.default.createElement("span", null, type == 0 ? '行' : type == 1 ? '列' : '值'),
react_1.default.createElement("div", { className: 'sel-btn-group' },
react_1.default.createElement("span", { className: "btn", onClick: function () { return handleChangeData(type, datas.filter(function (data) { return !data.hidden; }).map(function (data) { return ({ name: data.name, checked: true }); })); } }, "\u5168\u9009"),
react_1.default.createElement("span", { className: "btn", onClick: function () { return handleChangeData(type, datas.filter(function (data) { return !data.hidden; }).map(function (data) { return ({ name: data.name, checked: !data.checked }); })); } }, "\u53CD\u9009"),
react_1.default.createElement("span", { className: "btn", onClick: function () { return handleChangeData(type, datas.filter(function (data) { return !data.hidden; }).map(function (data) { return ({ name: data.name, checked: false }); })); } }, "\u4E0D\u9009"))),
react_1.default.createElement("div", { className: "sel-body", style: { height: 420, overflow: 'auto' } }, datas.map(function (item) { return (!item.hidden && react_1.default.createElement("div", { key: item.name, className: "checkbox-container" },
react_1.default.createElement(antd_1.Checkbox, { key: item.name, checked: item.checked, onChange: function (e) { return handleChangeData(type, [{ name: item.name, checked: e.target.checked }]); } }, item.label))); }))));
};
var renderBody = function () {
return react_1.default.createElement("div", null,
react_1.default.createElement("div", { className: "select-wrapper-group-container" },
renderItem(0, rowFields),
renderItem(1, colFields),
renderItem(2, valueFields)),
react_1.default.createElement(antd_1.Row, { className: "operate-wrapper", style: { marginTop: 12 } },
react_1.default.createElement(antd_1.Col, { span: 4 },
react_1.default.createElement("span", null, "\u6570\u636E\u8303\u56F4")),
react_1.default.createElement(antd_1.Col, { span: 10 },
react_1.default.createElement(antd_1.Radio.Group, { onChange: function (e) { return setDataRange(e.target.value); }, value: dataRange },
react_1.default.createElement(antd_1.Radio, { value: 0 }, "\u5F53\u524D\u9875"),
react_1.default.createElement(antd_1.Radio, { value: 1 }, "\u9009\u4E2D"),
react_1.default.createElement(antd_1.Radio, { value: 2 }, "\u5168\u90E8"))),
react_1.default.createElement(antd_1.Col, { span: 3 },
react_1.default.createElement(antd_1.Checkbox, { checked: valuePosition == 'col', onChange: function (e) { return setValuePosition(e.target.checked ? 'col' : 'row'); } }, "\u8F6C\u7F6E")),
react_1.default.createElement(antd_1.Col, { span: 6 },
react_1.default.createElement(antd_1.Checkbox, { checked: countSum, onChange: function (e) { return setCountSum(e.target.checked); } }, "\u751F\u6210\u5408\u8BA1\u503C"))));
};
return renderBody();
});
//# sourceMappingURL=./renderers/Table/ProcessToolsModal/Crosstics.js.map