UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

178 lines (177 loc) 12.7 kB
"use strict"; 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