oak-general-business/lib/pages/article2/upsert/web.js

152 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var jsx_runtime_1 = require("react/jsx-runtime");
var uuid_1 = require("oak-domain/lib/utils/uuid");
var antd_1 = require("antd");
var confirm = antd_1.Modal.confirm;
require("@wangeditor/editor/dist/css/style.css"); // 引入 css
var editor_for_react_1 = require("@wangeditor/editor-for-react");
var web_module_less_1 = tslib_1.__importDefault(require("./web.module.less"));
var useFeatures_1 = tslib_1.__importDefault(require("../../../hooks/useFeatures"));
// 工具栏配置
var toolbarConfig = {
excludeKeys: ['fullScreen'],
}; // TS 语法
// 自定义校验图片
function customCheckImageFn(src, alt, url) {
// TS 语法
if (!src) {
return;
}
if (src.indexOf('http') !== 0) {
return '图片网址必须以 http/https 开头';
}
return true;
// 返回值有三种选择:
// 1. 返回 true ,说明检查通过,编辑器将正常插入图片
// 2. 返回一个字符串,说明检查未通过,编辑器会阻止插入。会 alert 出错误信息(即返回的字符串)
// 3. 返回 undefined即没有任何返回说明检查未通过编辑器会阻止插入。但不会提示任何信息
}
function Render(props) {
var method = props.methods, data = props.data;
var t = method.t, setEditor = method.setEditor, check = method.check, preview = method.preview, addExtraFile = method.addExtraFile, uploadFile = method.uploadFile, update = method.update, setHtml = method.setHtml, onRemoveArticle = method.onRemoveArticle;
var id = data.id, content = data.content, editor = data.editor, origin1 = data.origin1, oakFullpath = data.oakFullpath, entity = data.entity, entityId = data.entityId;
var features = (0, useFeatures_1.default)();
return ((0, jsx_runtime_1.jsxs)("div", tslib_1.__assign({ className: web_module_less_1.default.container }, { children: [(0, jsx_runtime_1.jsx)(antd_1.Affix, tslib_1.__assign({ offsetTop: 64 }, { children: (0, jsx_runtime_1.jsx)(editor_for_react_1.Toolbar, { editor: editor, defaultConfig: toolbarConfig, mode: "default" }) })), (0, jsx_runtime_1.jsxs)(antd_1.Row, { children: [(0, jsx_runtime_1.jsx)(antd_1.Col, { flex: 4 }), (0, jsx_runtime_1.jsx)(antd_1.Col, tslib_1.__assign({ flex: 16 }, { children: (0, jsx_runtime_1.jsx)("div", tslib_1.__assign({ className: web_module_less_1.default.content }, { children: (0, jsx_runtime_1.jsxs)("div", tslib_1.__assign({ className: web_module_less_1.default.editorContainer }, { children: [(0, jsx_runtime_1.jsx)("div", tslib_1.__assign({ className: web_module_less_1.default.titleContainer }, { children: (0, jsx_runtime_1.jsx)(antd_1.Input, { onChange: function (e) {
return update({ name: e.target.value });
}, value: data.name, placeholder: '请输入文章标题', size: "large", maxLength: 64, suffix: "".concat(tslib_1.__spreadArray([], tslib_1.__read((data.name || '')), false).length, "/64"), className: web_module_less_1.default.titleInput }) })), data.contentTip && ((0, jsx_runtime_1.jsx)(antd_1.Alert, { type: "info", message: t('tips.content'), closable: true, onClose: function () { return method.clearContentTip(); } })), (0, jsx_runtime_1.jsx)(editor_for_react_1.Editor, { defaultConfig: {
placeholder: '请输入文章内容...',
MENU_CONF: {
checkImage: customCheckImageFn,
uploadImage: {
// 自定义上传
customUpload: function (file, insertFn) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var name, size, type, extension, filename, extraFile, _a, url, bucket, err_1;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
name = file.name, size = file.size, type = file.type;
extension = name.substring(name.lastIndexOf('.') +
1);
filename = name.substring(0, name.lastIndexOf('.'));
extraFile = {
entity: entity,
entityId: entityId,
extra1: file,
origin: origin1,
type: 'image',
tag1: 'source',
objectId: (0, uuid_1.generateNewId)(),
filename: filename,
size: size,
extension: extension,
bucket: '',
id: (0, uuid_1.generateNewId)(),
};
_b.label = 1;
case 1:
_b.trys.push([1, 4, , 5]);
return [4 /*yield*/, features.extraFile.upload(extraFile)];
case 2:
_a = _b.sent(), url = _a.url, bucket = _a.bucket;
extraFile.bucket = bucket;
extraFile.extra1 = null;
return [4 /*yield*/, addExtraFile(extraFile)];
case 3:
_b.sent();
// 最后插入图片
insertFn('http://' + url, extraFile.filename);
return [3 /*break*/, 5];
case 4:
err_1 = _b.sent();
return [3 /*break*/, 5];
case 5: return [2 /*return*/];
}
});
});
},
},
uploadVideo: {
// 自定义上传
customUpload: function (file, insertFn) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var name, size, type, extension, filename, extraFile, _a, url, bucket, err_2;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
name = file.name, size = file.size, type = file.type;
extension = name.substring(name.lastIndexOf('.') +
1);
filename = name.substring(0, name.lastIndexOf('.'));
extraFile = {
entity: entity,
entityId: entityId,
extra1: file,
origin: origin1,
type: 'video',
tag1: 'source',
objectId: (0, uuid_1.generateNewId)(),
filename: filename,
size: size,
extension: extension,
bucket: '',
id: (0, uuid_1.generateNewId)(),
};
_b.label = 1;
case 1:
_b.trys.push([1, 4, , 5]);
return [4 /*yield*/, features.extraFile.upload(extraFile)];
case 2:
_a = _b.sent(), url = _a.url, bucket = _a.bucket;
extraFile.bucket = bucket;
extraFile.extra1 = null;
return [4 /*yield*/, addExtraFile(extraFile)];
case 3:
_b.sent();
// 最后插入图片
insertFn('http://' + url, 'http://' +
url +
'?vframe/jpg/offset/0');
return [3 /*break*/, 5];
case 4:
err_2 = _b.sent();
return [3 /*break*/, 5];
case 5: return [2 /*return*/];
}
});
});
},
},
},
}, value: content, onCreated: setEditor, onChange: function (editorDom) {
setHtml(editorDom.getHtml());
}, style: {
minHeight: 440
}, mode: "default" }), (0, jsx_runtime_1.jsx)("div", tslib_1.__assign({ className: web_module_less_1.default.footer }, { children: (0, jsx_runtime_1.jsx)(antd_1.Row, tslib_1.__assign({ align: "middle" }, { children: (0, jsx_runtime_1.jsx)(antd_1.Col, tslib_1.__assign({ flex: "none" }, { children: (0, jsx_runtime_1.jsx)(antd_1.Space, { children: (0, jsx_runtime_1.jsx)(antd_1.Button, tslib_1.__assign({ type: "primary", onClick: function () {
check();
} }, { children: "\u4FDD\u5B58" })) }) })) })) }))] })) })) })), (0, jsx_runtime_1.jsx)(antd_1.Col, { flex: 4 })] })] })));
}
exports.default = Render;