fastlion-amis
Version:
一种MIS页面生成工具
201 lines (200 loc) • 12.8 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.LionCellImgRenderer = exports.LionCellImg = void 0;
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importDefault)(require("react"));
var factory_1 = require("../../../../factory");
var Popover_1 = (0, tslib_1.__importDefault)(require("antd/lib/Popover"));
var LabelPrint_1 = require("../../LabelPrint");
var CellPopover_1 = (0, tslib_1.__importDefault)(require("./CellPopover"));
var LodopFuncs_1 = require("../../../../utils/print/LodopFuncs");
var utils_1 = require("../../utils/utils");
var helper_1 = require("../../../../utils/helper");
var errImg = 'data:image/png;base64,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';
var LionCellImg = /** @class */ (function (_super) {
(0, tslib_1.__extends)(LionCellImg, _super);
function LionCellImg(props) {
var _a, _b, _c;
var _this = _super.call(this, props) || this;
_this.baseURL = '';
_this.matchPdfImg = function (str) {
return /(.jpe?)g|(.png)|(.pdf)/i.test(str);
};
// 打印
_this.handleLabelPrint = function () {
var list = _this.files.filter(function (_, mediaIndex) { return _this.state.selectList.includes(mediaIndex); });
// if (!this.matchPdfImg(current?.title)) {
// return;
// }
_this.setState({
ctx: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, _this.state.ctx), { items: list, rows: list, selectedItems: list, unSelectedItems: [] })
}, function () {
var LODOP = (0, LodopFuncs_1.getLodop)();
if (LODOP) {
_this.setState({
_print_visible: true
});
}
});
};
// 选中操作
_this.handleSelect = function (type) {
// let indexList = [...new Array(this.state.files.length).keys()]
var indexList = [];
_this.state.files.map(function (item, index) {
if (!item.err) {
indexList.push(index);
}
});
switch (type) {
case 'all':
_this.setState({
selectList: indexList
});
break;
case 'invert':
var invertList = indexList.filter(function (item) { return !_this.state.selectList.includes(item); });
_this.setState({
selectList: invertList
});
break;
case 'clear':
_this.setState({
selectList: []
});
break;
default: break;
}
};
_this.initFiles = _this.initFiles.bind(_this);
_this.handleImageError = _this.handleImageError.bind(_this);
_this.handleCheckMedia = _this.handleCheckMedia.bind(_this);
_this.handlePreviewMedia = _this.handlePreviewMedia.bind(_this);
_this.handleLabelPrint = _this.handleLabelPrint.bind(_this);
_this.handleSelect = _this.handleSelect.bind(_this);
_this.handleDownloadMedia = _this.handleDownloadMedia.bind(_this);
_this.baseURL = (_c = (_b = (_a = props.env) === null || _a === void 0 ? void 0 : _a.axiosInstance) === null || _b === void 0 ? void 0 : _b.defaults) === null || _c === void 0 ? void 0 : _c.baseURL;
process.env.NODE_ENV === 'development' && (_this.baseURL = 'https://saasdev.fastlion.cn/saas');
var files = _this.initFiles();
_this.state = {
files: files,
selectList: [],
visible: false,
_print_visible: false,
ctx: {
items: [],
rows: [],
selectedItems: [],
unSelectedItems: [],
ids: ''
}
};
return _this;
}
LionCellImg.prototype.initFiles = function () {
var _this = this;
var files = [];
var value = this.props.value;
if (value) {
var fileMd5 = value.value, fileList = value.info;
if (fileMd5 && Array.isArray(fileList) && fileList.length) {
this.files = fileList; // 存一个原数据,打印用
var fileMd5List_1 = fileMd5.split(',');
files = fileList.map(function (item, index) {
return {
value: fileMd5List_1[index],
src: _this.baseURL + (item.thumbnailAddr || (item === null || item === void 0 ? void 0 : item.addr)),
originalSrc: _this.baseURL + item.preview,
downloadSrc: _this.baseURL + (item === null || item === void 0 ? void 0 : item.addr),
title: item.name || '',
};
});
}
}
return files;
};
LionCellImg.prototype.componentDidUpdate = function (prevProps) {
if (prevProps.value !== this.props.value) {
this.setState({
files: this.initFiles()
}, function () {
// console.log(this.state.files)
});
}
};
// 下载
LionCellImg.prototype.handleDownloadMedia = function () {
var _a = this.state, files = _a.files, selectList = _a.selectList;
files.filter(function (_, mediaIndex) { return selectList.includes(mediaIndex); }).map(function (item) {
(0, utils_1.downloadFile)(item.downloadSrc, item.title);
});
};
LionCellImg.prototype.handleImageLoaded = function (el, index) {
};
// 错误处理
LionCellImg.prototype.handleImageError = function (el, index) {
var files = this.state.files.concat();
var file = files[index];
file.src = errImg;
file.err = true;
files.splice(index, 1, file);
this.setState({ files: files });
};
LionCellImg.prototype.handleCheckMedia = function (index) {
var list = this.state.selectList.concat();
var findIndex = list.findIndex(function (item) { return item === index; });
if (~findIndex) {
list = list.filter(function (item) { return item !== index; });
}
else {
list.push(index);
}
this.setState({ selectList: list });
};
LionCellImg.prototype.handlePreviewMedia = function (index) {
var onImageEnlarge = this.props.onImageEnlarge;
var files = this.state.files;
onImageEnlarge && onImageEnlarge({
src: files[index].src,
originalSrc: files[index].originalSrc,
index: index,
list: files
});
};
LionCellImg.prototype.render = function () {
var _this = this;
var _a = this.props, cx = _a.classnames, popOverContainer = _a.popOverContainer;
var _b = this.state, selectList = _b.selectList, files = _b.files;
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("div", { className: cx('Cell-img') }, files && files.length
? react_1.default.createElement(Popover_1.default, { content: react_1.default.createElement(CellPopover_1.default, { mediaList: files, selectList: selectList, printMedia: this.handleLabelPrint, downloadMedia: this.handleDownloadMedia, selectMedia: this.handleSelect, checkMedia: this.handleCheckMedia, previewMedia: this.handlePreviewMedia }), trigger: (0, helper_1.isMobile)() ? [] : 'hover',
// trigger="click"
placement: 'bottom', destroyTooltipOnHide: true, getPopupContainer: popOverContainer, overlayClassName: 'table-media-format-popover' },
react_1.default.createElement("div", { className: cx('Cell-img-wrapper') }, files.map(function (item, index) {
return react_1.default.createElement("img", { key: item.value || index, src: item.src, className: cx('Cell-img'),
// onLoad={(e) => this.handleImageLoaded(e, index)}
onError: function (e) { return _this.handleImageError(e, index); } });
})))
: "-"),
this.state._print_visible && react_1.default.createElement(LabelPrint_1.ModalPrint, (0, tslib_1.__assign)({ type: "lion-print" }, this.props, { isFilePrint: true, isSingleFilePrint: true, ctx: this.state.ctx, show: this.state._print_visible, onHide: function () { _this.setState({ _print_visible: false }); } }))));
};
LionCellImg.defaultProps = {
title: '附件图片'
};
return LionCellImg;
}(react_1.default.Component));
exports.LionCellImg = LionCellImg;
var LionCellImgRenderer = /** @class */ (function (_super) {
(0, tslib_1.__extends)(LionCellImgRenderer, _super);
function LionCellImgRenderer() {
return _super !== null && _super.apply(this, arguments) || this;
}
LionCellImgRenderer = (0, tslib_1.__decorate)([
(0, factory_1.Renderer)({
type: 'lion-cell-img'
})
], LionCellImgRenderer);
return LionCellImgRenderer;
}(LionCellImg));
exports.LionCellImgRenderer = LionCellImgRenderer;
//# sourceMappingURL=./renderers/Lion/Table/LionCellImg/LionCellImg.js.map
;