fastlion-amis
Version:
一种MIS页面生成工具
208 lines (207 loc) • 19.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var icons_1 = require("@ant-design/icons");
var antd_1 = require("antd");
var react_1 = tslib_1.__importStar(require("react"));
var Checkbox_1 = tslib_1.__importDefault(require("../Checkbox"));
var icons_2 = require("../icons");
var InputBox_1 = tslib_1.__importDefault(require("../InputBox"));
var ActionSheet_1 = tslib_1.__importDefault(require("./ActionSheet"));
var helper_1 = require("../../utils/helper");
var TabPane = antd_1.Tabs.TabPane;
var AdvancedModlePopup = function (props) {
var _a;
var filtercont = props.filtercont, filtersArr = props.filtersArr, filtersHeader = props.filtersHeader, hideAdvancedFilter = props.hideAdvancedFilter, handleOptionTransfer = props.handleOptionTransfer, renderChild = props.renderChild, filter = props.filter, handleActionDisplay = props.handleActionDisplay, addFilter = props.addFilter, onCheckbox = props.onCheckbox, caseSensitive = props.caseSensitive, showAdvancedOption = props.showAdvancedOption, limitStatus = props.limitStatus, topN = props.topN, changeTopN = props.changeTopN, changeLimitStatus = props.changeLimitStatus;
var limitInputRef = (0, react_1.useRef)(null);
// const [optionTransfer, setOptionTransfer] = useState<JSX.Element>(handleOptionTransfer())
var slot = {
left: react_1.default.createElement("div", { className: 'left-text', onClick: hideAdvancedFilter },
react_1.default.createElement(icons_2.Icon, { icon: "right-arrow-bold", className: "icon" })),
right: react_1.default.createElement("div", null)
};
var filtersRef = (0, react_1.useRef)(null);
// 配置查询表单
var _b = (0, react_1.useState)({
filterParam: false,
advancedParam: false,
}), queryStatus = _b[0], setQueryStatus = _b[1];
(0, react_1.useEffect)(function () {
if (filter) {
handleActionDisplay('0');
}
else
handleActionDisplay('1');
return;
}, []);
(0, react_1.useEffect)(function () {
handleInitQueryStatus();
}, [filter, filtersHeader]);
// 生成label,必填的带*
var genLabel = function (label, type) {
return react_1.default.createElement("span", null,
queryStatus[type] ? react_1.default.createElement("span", { style: { color: 'red' } }, "*") : null,
" ",
label);
};
// 初始化查询/高级查询必填逻辑
var handleInitQueryStatus = function () {
var _a = (filter !== null && filter !== void 0 ? filter : {}).body, body = _a === void 0 ? [] : _a;
var filterParamIsRequired = body === null || body === void 0 ? void 0 : body.some(function (item) { return item === null || item === void 0 ? void 0 : item.required; });
var advancedParamIsRequired = filtersHeader === null || filtersHeader === void 0 ? void 0 : filtersHeader.some(function (item) { return item === null || item === void 0 ? void 0 : item.required; });
setQueryStatus({
filterParam: filterParamIsRequired,
advancedParam: advancedParamIsRequired,
});
};
return (react_1.default.createElement("div", { className: 'advanced_drawer' },
react_1.default.createElement(antd_1.Tabs, { centered: true, tabBarExtraContent: slot, onTabClick: function (key, e) {
handleActionDisplay(key);
} },
filter && (filter === null || filter === void 0 ? void 0 : filter.body) && react_1.default.createElement(TabPane, { tab: genLabel('查询', 'filterParam'), key: "0", forceRender: true },
react_1.default.createElement("div", { className: 'advanced_drawer_filtersHeader' }, (_a = filter === null || filter === void 0 ? void 0 : filter.body) === null || _a === void 0 ? void 0 : _a.map(function (item) { return renderChild(item); }))),
((filtersArr === null || filtersArr === void 0 ? void 0 : filtersArr.length) > 0) && react_1.default.createElement(TabPane, { tab: genLabel('高级', 'advancedParam'), key: "1", forceRender: true },
react_1.default.createElement("div", { ref: filtersRef, className: 'advanced_drawer_filtersbody' },
(filtersHeader === null || filtersHeader === void 0 ? void 0 : filtersHeader.length) > 0 && react_1.default.createElement("div", { className: 'advanced_drawer_filtersHeader' }, filtersHeader.map(function (item) {
return renderChild(item);
})),
react_1.default.createElement(HandleAdvancedFilter, tslib_1.__assign({}, props))),
react_1.default.createElement("div", { className: "advanced_drawer_List_button add-button", onClick: function () {
addFilter();
if (filtersRef.current) {
setTimeout(function () {
// filtersRef.current?.scrollBy({ top: filtersRef.current.scrollHeight, behavior: 'smooth' })
filtersRef.current.scrollTop = filtersRef.current.scrollHeight;
}, 120);
}
} },
react_1.default.createElement(icons_1.PlusOutlined, null),
"\u65B0\u589E"),
react_1.default.createElement("div", { className: "advanced_drawer_List_button advanced_drawer_List_distinguish", onClick: function () { } },
react_1.default.createElement("label", { onChange: onCheckbox, style: { cursor: "pointer", marginRight: '16px' } },
react_1.default.createElement(Checkbox_1.default, { checked: caseSensitive }),
"\u533A\u5206\u5927\u5C0F\u5199"),
react_1.default.createElement("div", null,
react_1.default.createElement(Checkbox_1.default, { onChange: function (value) {
var _a;
if (value) {
(_a = limitInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
}
changeLimitStatus(value);
}, checked: limitStatus }, "\u4EC5\u67E5\u524D"),
react_1.default.createElement(antd_1.InputNumber, { ref: limitInputRef, size: 'small', min: 1, precision: 0, onChange: function (value) { return changeTopN(value || 0); }, style: { margin: '0 8px', width: '100px' }, value: topN }),
"\u9879"))),
((filtersArr === null || filtersArr === void 0 ? void 0 : filtersArr.length) > 0 && showAdvancedOption) && react_1.default.createElement(TabPane, { tab: '选项', key: "2", forceRender: true }, handleOptionTransfer()))));
};
var HandleAdvancedFilter = function (props) {
var filtersArr = props.filtersArr, filterOptions = props.filterOptions, changeRange = props.changeRange, changeNot = props.changeNot, changeField = props.changeField, filterObj = props.filterObj, deleteFilter = props.deleteFilter, renderChild = props.renderChild, env = props.env, isShowInputItem = props.isShowInputItem, rangeGenerator = props.rangeGenerator, notRange = props.notRange, emptyTimeSelected = props.emptyTimeSelected, selectEmptyTime = props.selectEmptyTime, translate = props.translate, filtersHeader = props.filtersHeader;
var options = filterOptions.map(function (item) { return (tslib_1.__assign(tslib_1.__assign({}, item), { value: item.value.split('--')[0] })); });
var selectList = [];
options.forEach(function (item) {
if (!selectList.some(function (i) { return i.value === item.value; })) {
selectList.push(item);
}
});
return react_1.default.createElement(react_1.default.Fragment, null,
(filtersHeader === null || filtersHeader === void 0 ? void 0 : filtersHeader.length) ? (react_1.default.createElement("div", { className: 'advanced_param_title-box' },
react_1.default.createElement("div", { className: 'title' }, "\u6761\u4EF6\u67E5\u8BE2"))) : null,
react_1.default.createElement(antd_1.List, { className: 'advanced_drawer_List', bordered: true, dataSource: filtersArr, renderItem: function (item, _index) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
var content = rangeGenerator(item);
var label = (_b = (_a = filterOptions.filter(function (items) { return items.value == item.field; })) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.label;
var dateOptions = selectList.filter(function (filItem) { return filItem.type && ['input-date', 'input-datetime', 'input-time', 'input-month', 'input-quarter', 'input-year'].includes(filItem.type); });
if (dateOptions.length) {
dateOptions.unshift({
label: translate('Select.emptyItem'),
value: 'advancedFilter.noneData'
});
}
return (react_1.default.createElement(antd_1.List.Item, { actions: [
!item.dateLine && react_1.default.createElement("span", { onClick: function () { filtersArr.length !== 1 && deleteFilter(_index); } },
react_1.default.createElement(icons_1.DeleteOutlined, null))
] },
item.dateLine && emptyTimeSelected ? react_1.default.createElement(AdvancedFilterAction, { handleOnClick: function (value) {
var _a;
changeRange(filterObj[value.value].type === 'lion-upload' ? 10 : ['input-date', 'input-month', 'input-datetime'].includes((_a = filterObj[value.value]) === null || _a === void 0 ? void 0 : _a.type) ? 7 : 2, _index);
changeField(value.value, _index);
}, Options: dateOptions, item: item, emptyTimeSelected: true, env: env, dete: true, allList: dateOptions, filtersArr: filtersArr })
: react_1.default.createElement(AdvancedFilterAction, { handleOnClick: function (value) {
var _a;
if (value.value === 'advancedFilter.noneData') {
selectEmptyTime === null || selectEmptyTime === void 0 ? void 0 : selectEmptyTime(_index);
}
else {
changeRange(filterObj[value.value].type === 'lion-upload' ? 10 : ['input-date', 'input-month', 'input-datetime'].includes((_a = filterObj[value.value]) === null || _a === void 0 ? void 0 : _a.type) ? 7 : 2, _index);
changeField(value.value, _index);
}
}, Options: item.dateLine ? dateOptions : selectList, item: item, env: env, dete: true, allList: filterOptions, filtersArr: filtersArr }),
react_1.default.createElement(AdvancedFilterAction, { handleOnClick: function (value) {
changeRange(value.value, _index);
changeNot(!!(value === null || value === void 0 ? void 0 : value.not), _index);
}, disabled: (item.dateLine && emptyTimeSelected) || notRange.includes((_c = filterObj[item.field]) === null || _c === void 0 ? void 0 : _c.type), Options: content, actionClassName: 'advanced-condition', item: item, env: env, dete: false }),
item.op == 12 && renderChild(tslib_1.__assign(tslib_1.__assign({}, (_d = filterObj[item.field]) === null || _d === void 0 ? void 0 : _d.dataTag), { name: item.field }), 'dataTag'),
isShowInputItem(item, (_e = filterObj[item.field]) === null || _e === void 0 ? void 0 : _e.type) ?
react_1.default.createElement("div", { className: "advanced_drawer_List_double ".concat(['radios', 'checkboxes'].includes((_f = filterObj[item.field]) === null || _f === void 0 ? void 0 : _f.type) ? 'advanced_drawer_List_radios' : '') }, item.op === 7 && (((_g = filterObj[item.field]) === null || _g === void 0 ? void 0 : _g.type) === 'input-number' || ((_h = filterObj[item.field]) === null || _h === void 0 ? void 0 : _h.isNumber))
?
((0, helper_1.isMobile)() ? react_1.default.createElement("div", null,
renderChild(tslib_1.__assign(tslib_1.__assign({}, filterObj[item.field]), { isMultipleValues: false, name: ((_j = filterObj[item.field]) === null || _j === void 0 ? void 0 : _j.name) + '-a8', label: undefined, domicile: { label: label } }), 'a', { placeholder: item.op === 7 ? '不限制' : undefined }),
renderChild(tslib_1.__assign(tslib_1.__assign({}, filterObj[item.field]), { isMultipleValues: false, name: ((_k = filterObj[item.field]) === null || _k === void 0 ? void 0 : _k.name) + '-b8', label: undefined, domicile: { label: label } }), 'b', { placeholder: item.op === 7 ? '不限制' : undefined })) : react_1.default.createElement(react_1.default.Fragment, null,
renderChild(tslib_1.__assign(tslib_1.__assign({}, filterObj[item.field]), { isMultipleValues: false, name: ((_l = filterObj[item.field]) === null || _l === void 0 ? void 0 : _l.name) + '-a8', label: undefined, domicile: { label: label } }), 'a'),
renderChild(tslib_1.__assign(tslib_1.__assign({}, filterObj[item.field]), { isMultipleValues: false, name: ((_m = filterObj[item.field]) === null || _m === void 0 ? void 0 : _m.name) + '-b8', label: undefined, domicile: { label: label } }), 'b')))
:
item.op === 7 && (((_o = filterObj[item.field]) === null || _o === void 0 ? void 0 : _o.type) === 'input-datetime' || ((_p = filterObj[item.field]) === null || _p === void 0 ? void 0 : _p.type) === 'input-date')
?
renderChild(tslib_1.__assign(tslib_1.__assign({}, filterObj[item.field]), { type: ((_q = filterObj[item.field]) === null || _q === void 0 ? void 0 : _q.type) + "-range", label: undefined, domicile: { label: label } }), undefined)
:
renderChild(tslib_1.__assign(tslib_1.__assign({}, filterObj[item.field]), { label: undefined, domicile: { label: label }, isNumber: (_r = filterObj[item.field]) === null || _r === void 0 ? void 0 : _r.isNumber, value: ((_t = (_s = filterObj === null || filterObj === void 0 ? void 0 : filterObj[item.field]) === null || _s === void 0 ? void 0 : _s.value) === null || _t === void 0 ? void 0 : _t.includes(',')) && ['input-date', 'input-datetime', 'input-time'].includes((_u = filterObj[item.field]) === null || _u === void 0 ? void 0 : _u.type) ? (_v = filterObj[item.field]) === null || _v === void 0 ? void 0 : _v.value.split(',')[0] : (_w = filterObj[item.field]) === null || _w === void 0 ? void 0 : _w.value, disabled: item.dateLine && emptyTimeSelected }), undefined)) : react_1.default.createElement("div", { className: 'advanced_drawer_List_double ' })));
} }));
};
var AdvancedFilterAction = function (props) {
var _a, _b;
var handleOnClick = props.handleOnClick, Options = props.Options, item = props.item, dete = props.dete, env = props.env, disabled = props.disabled, allList = props.allList, emptyTimeSelected = props.emptyTimeSelected, actionClassName = props.actionClassName;
var _c = (0, react_1.useState)(false), moreIsOpened = _c[0], setMoreIsOpened = _c[1];
var ref = (0, react_1.useRef)(null);
var _d = (0, react_1.useState)(''), value = _d[0], setValue = _d[1];
var _e = (0, react_1.useState)(Options), options = _e[0], setOptions = _e[1];
(0, react_1.useEffect)(function () {
var _a;
if (moreIsOpened) {
var element = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.querySelector("[data-id=\"".concat(item.field, "\"]"));
if (element) {
element.scrollIntoView();
}
}
}, [moreIsOpened]);
(0, react_1.useEffect)(function () {
if (value == '') {
setOptions(Options);
}
else {
setOptions(Options.filter(function (item) { return item.label.includes(value); }));
}
}, [value, Options]);
return react_1.default.createElement(ActionSheet_1.default, { className: 'advanced_drawer_List_Action', isOpened: moreIsOpened, actionClassName: actionClassName, round: true, container: env.getModalContainer, onHide: function (e) {
e.stopPropagation();
setMoreIsOpened(false);
}, popupContent: react_1.default.createElement("div", { className: 'advanced_drawer_List_popup', ref: ref },
react_1.default.createElement("div", { className: 'advanced_drawer_List_popup_title' },
react_1.default.createElement("label", null, "\u9009\u62E9".concat(dete ? '字段' : '条件')),
react_1.default.createElement("span", { className: "closeWrap-icon" },
react_1.default.createElement(icons_2.Icon, { icon: "close", onClick: function () { return setMoreIsOpened(false); } }))),
react_1.default.createElement("div", { className: 'advanced_drawer_List_popup_search' },
react_1.default.createElement(InputBox_1.default, { value: value, className: 'input-box', onChange: setValue, placeholder: '请输入关键字', clearable: false }, value !== '' ? (react_1.default.createElement("a", { onClick: function () { setValue(''); } },
react_1.default.createElement(icons_2.Icon, { icon: "close", className: "icon" }))) : (react_1.default.createElement(icons_2.Icon, { icon: "search", className: "icon" })))),
react_1.default.createElement("div", { className: 'advanced_drawer_List_popup_body' }, options.map(function (_item, index) {
var _a;
return react_1.default.createElement("div", { className: "advanced_drawer_List_popup_filter ".concat(_item.value == item.field ? 'advanced_drawer_List_popup_filter_text' : ''), "data-id": String(_item.value) + ((_a = _item.not) !== null && _a !== void 0 ? _a : ''), onClick: function () {
handleOnClick(_item);
setMoreIsOpened(false);
}, key: index }, _item.label);
}))) },
react_1.default.createElement("span", { onClick: function () { if (!disabled)
setMoreIsOpened(true); }, className: "advanced_drawer_List_popup_text ".concat(dete ? 'align_left' : '', " ").concat(disabled ? 'advanced_drawer_disabled' : '') }, (_b = (_a = (dete ? allList.filter(function (_item) { return emptyTimeSelected ? _item.value == 'advancedFilter.noneData' : item.field == _item.value; }) :
Options.filter(function (_item) { return item.not ? (_item.value == item.op && _item.not) :
(_item.value == item.op); }))) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.label));
};
exports.default = AdvancedModlePopup;
//# sourceMappingURL=./components/Lion/AdvancedModlePopup.js.map