You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
NewEduCoderBuild/p__Forums__New__index.316d3...

539 lines
21 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"use strict";
(self["webpackChunk"] = self["webpackChunk"] || []).push([[74264],{
/***/ 28250:
/*!****************************************************!*\
!*** ./src/pages/Forums/New/index.tsx + 1 modules ***!
\****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
"default": function() { return /* binding */ Forums_New; }
});
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js
var objectSpread2 = __webpack_require__(82242);
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/toConsumableArray.js
var toConsumableArray = __webpack_require__(37205);
var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js
var regeneratorRuntime = __webpack_require__(7557);
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js
var asyncToGenerator = __webpack_require__(41498);
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js
var slicedToArray = __webpack_require__(79800);
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectWithoutProperties.js
var objectWithoutProperties = __webpack_require__(39647);
var objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
var _react_17_0_2_react = __webpack_require__(59301);
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
var _umi_production_exports = __webpack_require__(80184);
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/select/index.js
var es_select = __webpack_require__(57809);
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/upload/index.js + 24 modules
var upload = __webpack_require__(54580);
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/form/index.js + 19 modules
var es_form = __webpack_require__(78241);
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules
var message = __webpack_require__(8591);
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input/index.js + 5 modules
var input = __webpack_require__(10249);
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/row/index.js
var row = __webpack_require__(95237);
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/radio/index.js + 5 modules
var es_radio = __webpack_require__(5112);
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
var es_button = __webpack_require__(3113);
// EXTERNAL MODULE: ./src/components/markdown-editor/index.tsx + 10 modules
var markdown_editor = __webpack_require__(49731);
;// CONCATENATED MODULE: ./src/pages/Forums/New/index.less?modules
// extracted by mini-css-extract-plugin
/* harmony default export */ var Newmodules = ({"bg":"bg___pOKLN","head":"head___w0_bJ","formWrap":"formWrap___D8WBe"});
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.6.1@@ant-design/icons/es/icons/InboxOutlined.js + 1 modules
var InboxOutlined = __webpack_require__(61481);
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
var env = __webpack_require__(67390);
// EXTERNAL MODULE: ./src/utils/fetch.ts
var fetch = __webpack_require__(35325);
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
var jsx_runtime = __webpack_require__(37712);
;// CONCATENATED MODULE: ./src/pages/Forums/New/index.tsx
var _excluded = ["forumsDetail", "globalSetting", "dispatch"];
var Option = es_select["default"].Option;
var Dragger = upload/* default */.Z.Dragger;
var New = function New(_ref) {
var _formValue$subject;
var forumsDetail = _ref.forumsDetail,
globalSetting = _ref.globalSetting,
dispatch = _ref.dispatch,
props = objectWithoutProperties_default()(_ref, _excluded);
var params = (0,_umi_production_exports.useParams)();
var _Form$useForm = es_form/* default */.Z.useForm(),
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
form = _Form$useForm2[0];
var _useState = (0,_react_17_0_2_react.useState)({}),
_useState2 = slicedToArray_default()(_useState, 2),
formValue = _useState2[0],
setFormValue = _useState2[1];
var _useState3 = (0,_react_17_0_2_react.useState)([]),
_useState4 = slicedToArray_default()(_useState3, 2),
fileList = _useState4[0],
setFileList = _useState4[1];
var _useState5 = (0,_react_17_0_2_react.useState)(1),
_useState6 = slicedToArray_default()(_useState5, 2),
loading = _useState6[0],
setLoading = _useState6[1];
var _useState7 = (0,_react_17_0_2_react.useState)(false),
_useState8 = slicedToArray_default()(_useState7, 2),
btnLoading = _useState8[0],
setBtnLoading = _useState8[1];
var _useState9 = (0,_react_17_0_2_react.useState)(undefined),
_useState10 = slicedToArray_default()(_useState9, 2),
ImgInfo = _useState10[0],
setImgInfo = _useState10[1]; //封面图信息
var _useState11 = (0,_react_17_0_2_react.useState)([]),
_useState12 = slicedToArray_default()(_useState11, 2),
parentPlate = _useState12[0],
setParentPlate = _useState12[1]; //父版块
var _useState13 = (0,_react_17_0_2_react.useState)([]),
_useState14 = slicedToArray_default()(_useState13, 2),
childPlate = _useState14[0],
setChildPlate = _useState14[1]; //子版块
var savedFileList = (0,_react_17_0_2_react.useRef)([]);
console.log(fileList, formValue, 'fileList');
(0,_react_17_0_2_react.useEffect)(function () {
getPlate();
}, []);
(0,_react_17_0_2_react.useEffect)(function () {
getPlate();
if (params.memoId && loading === 2) {
getDetail();
}
}, [params.memoId, loading]);
var getDetail = /*#__PURE__*/function () {
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
var url, result, _result$attachments_u, values, child, list;
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
url = "/api/memos/".concat(params.memoId, "/edit.json");
_context.next = 3;
return (0,fetch/* default */.ZP)(url, {
method: 'get'
});
case 3:
result = _context.sent;
console.log(result, 22);
if (result) {
values = {
subject: result.subject,
content: result.content,
forum_id: result === null || result === void 0 ? void 0 : result.forum_section.forum_id,
children_forum_id: result === null || result === void 0 ? void 0 : result.forum_section_id,
tag_id: result.tag_id,
is_original: result.is_original ? 1 : 2,
reprint_link: (result === null || result === void 0 ? void 0 : result.reprint_link) || ''
};
child = parentPlate.find(function (item) {
return item.id === values.forum_id;
});
list = result === null || result === void 0 || (_result$attachments_u = result.attachments_url) === null || _result$attachments_u === void 0 ? void 0 : _result$attachments_u.map(function (e, key) {
return {
name: e.title,
uid: key,
percent: 100,
response: e
};
});
setFileList(list);
setChildPlate((child === null || child === void 0 ? void 0 : child.children_tags) || []);
form.setFieldsValue(values);
setFormValue(values);
setImgInfo(result.memo_image_info);
}
case 6:
case "end":
return _context.stop();
}
}, _callee);
}));
return function getDetail() {
return _ref2.apply(this, arguments);
};
}();
// 获取所有版块
var getPlate = /*#__PURE__*/function () {
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
var result;
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return (0,fetch/* default */.ZP)("/api/forum_sections.json", {
method: 'get'
});
case 2:
result = _context2.sent;
if (result && result.forum_sections) {
setParentPlate(result.forum_sections);
setLoading(2);
}
case 4:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function getPlate() {
return _ref3.apply(this, arguments);
};
}();
var handleChangeFile = function handleChangeFile(info) {
if (info.file.status === 'done') {
var _info$file$response;
setFileList(info.fileList);
savedFileList.current = toConsumableArray_default()(info.fileList);
if (!info.file.response) {
return;
}
if ((_info$file$response = info.file.response) !== null && _info$file$response !== void 0 && _info$file$response.id) {
// message.success("上传成功!");
return;
}
}
};
var handleRemoveFile = /*#__PURE__*/function () {
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(info) {
var newFileList;
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
if (info.response) {
_context3.next = 3;
break;
}
message/* default */.ZP.info("还未上传完成,无法进行删除操作!");
return _context3.abrupt("return");
case 3:
newFileList = fileList.filter(function (item) {
return item.uid !== info.uid;
});
setFileList(newFileList);
savedFileList.current = toConsumableArray_default()(newFileList);
message/* default */.ZP.info("删除成功");
case 7:
case "end":
return _context3.stop();
}
}, _callee3);
}));
return function handleRemoveFile(_x) {
return _ref4.apply(this, arguments);
};
}();
var handleBeforeUpload = function handleBeforeUpload(info) {
if (fileList !== null && fileList !== void 0 && fileList.some(function (e) {
return e.name === info.name;
})) {
message/* default */.ZP.info("".concat(info.name, "\u6587\u4EF6\u5DF2\u5B58\u5728"));
return false;
}
if (info.size / 1024 / 1024 > 50) {
message/* default */.ZP.info("文件超过50M不符合上传要求");
return false;
}
var param = {
name: info.name,
uid: info.uid,
file: info,
percent: 0
};
fileList.push(param);
savedFileList.current = toConsumableArray_default()(fileList);
setFileList(toConsumableArray_default()(fileList));
};
var uploadProps = {
name: 'file',
multiple: true,
fileList: fileList,
action: "".concat(env/* default */.Z.API_SERVER, "/api/attachments.json"),
onChange: handleChangeFile,
onRemove: handleRemoveFile,
beforeUpload: handleBeforeUpload
};
// 获取封面图片
function getImageUrl(imgId) {
setImgInfo(imgId);
}
var handleFinish = /*#__PURE__*/function () {
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(values) {
var data, res, _res;
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
setBtnLoading(true);
data = {
forum_id: values.forum_id,
attachment_id: ImgInfo && ImgInfo.id,
children_forum_id: values.children_forum_id,
attachments: fileList === null || fileList === void 0 ? void 0 : fileList.map(function (e) {
var _e$response;
return e === null || e === void 0 || (_e$response = e.response) === null || _e$response === void 0 ? void 0 : _e$response.id;
}),
memo: {
subject: values.subject,
content: values.content,
tag_id: values.tag_id,
is_original: values.is_original,
reprint_link: values.reprint_link
}
};
if (!params.memoId) {
_context4.next = 9;
break;
}
_context4.next = 5;
return (0,fetch/* default */.ZP)("/api/memos/".concat(params.memoId, ".json"), {
method: 'put',
body: data
});
case 5:
res = _context4.sent;
if (res.status === 1) {
message/* default */.ZP.success(res === null || res === void 0 ? void 0 : res.message);
_umi_production_exports.history.push("/forums/".concat(params.memoId));
}
_context4.next = 13;
break;
case 9:
_context4.next = 11;
return (0,fetch/* default */.ZP)("/api/memos.json", {
method: 'post',
body: data
});
case 11:
_res = _context4.sent;
if (_res.status === 1) {
message/* default */.ZP.success(_res === null || _res === void 0 ? void 0 : _res.message);
_umi_production_exports.history.push("/forums/".concat(_res.memo_id));
}
case 13:
setBtnLoading(false);
case 14:
case "end":
return _context4.stop();
}
}, _callee4);
}));
return function handleFinish(_x2) {
return _ref5.apply(this, arguments);
};
}();
// 返回
var returnNew = function returnNew() {
_umi_production_exports.history.back();
};
var handleValuesChange = function handleValuesChange(changedValues) {
setFormValue(objectSpread2_default()(objectSpread2_default()({}, formValue), changedValues));
if ('forum_id' in changedValues) {
var _param$children_tags;
var param = parentPlate.find(function (e) {
return e.id === changedValues.forum_id;
});
var children_forum_id = (param === null || param === void 0 || (_param$children_tags = param.children_tags) === null || _param$children_tags === void 0 || (_param$children_tags = _param$children_tags[0]) === null || _param$children_tags === void 0 ? void 0 : _param$children_tags.id) || undefined;
setChildPlate((param === null || param === void 0 ? void 0 : param.children_tags) || []);
form.setFieldsValue({
children_forum_id: children_forum_id
});
setFormValue(objectSpread2_default()(objectSpread2_default()({}, formValue), {}, {
children_forum_id: children_forum_id
}));
}
};
return /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
className: Newmodules.bg,
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
className: Newmodules.head,
children: params.memoId ? '编辑' : '新建'
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
form: form,
className: Newmodules.formWrap,
scrollToFirstError: true,
layout: "vertical",
onValuesChange: handleValuesChange,
onFinish: handleFinish,
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
name: "subject",
label: "\u6807\u9898",
rules: [{
required: true,
message: "请输入标题"
}],
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
placeholder: "\u8BF7\u8F93\u5165\u6807\u9898",
maxLength: 50,
suffix: "".concat(((_formValue$subject = formValue.subject) === null || _formValue$subject === void 0 ? void 0 : _formValue$subject.length) || 0, "/50")
})
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
name: "content",
label: "\u5185\u5BB9",
rules: [{
required: true,
message: "请输入内容"
}],
children: /*#__PURE__*/(0,jsx_runtime.jsx)(markdown_editor/* default */.Z, {
defaultValue: formValue.content || '',
watch: true
})
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(Dragger, objectSpread2_default()(objectSpread2_default()({}, uploadProps), {}, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
className: "ant-upload-drag-icon",
children: /*#__PURE__*/(0,jsx_runtime.jsx)(InboxOutlined/* default */.Z, {})
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
className: "ant-upload-text",
children: ["\u62D6\u52A8\u6587\u4EF6\u6216", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
className: "c-light-primary",
children: "\u70B9\u51FB\u6B64\u5904\u4E0A\u4F20"
})]
})]
})), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
className: "mt20",
align: "bottom",
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
name: "forum_id",
label: "\u4E3B\u9898\u677F\u5757",
rules: [{
required: true,
message: "请选择主题板块"
}],
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_select["default"], {
placeholder: "\u8BF7\u9009\u62E9\u4E3B\u9898\u677F\u5757",
style: {
width: 260
},
children: parentPlate === null || parentPlate === void 0 ? void 0 : parentPlate.map(function (item) {
return /*#__PURE__*/(0,jsx_runtime.jsx)(Option, {
value: item.id,
children: item.name
});
})
})
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
name: "children_forum_id",
label: "",
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_select["default"], {
style: {
width: 260,
marginLeft: 20
},
children: childPlate === null || childPlate === void 0 ? void 0 : childPlate.map(function (item) {
return /*#__PURE__*/(0,jsx_runtime.jsx)(Option, {
value: item.id,
children: item.title
});
})
})
})]
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
name: "tag_id",
label: "\u5E16\u5B50\u6807\u7B7E",
rules: [{
required: true,
message: "请选择帖子标签"
}],
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_select["default"], {
style: {
width: "260px"
},
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(Option, {
value: 1,
children: "\u4EA4\u6D41"
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Option, {
value: 2,
children: "\u6C42\u52A9"
})]
})
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
name: "is_original",
label: "\u662F\u5426\u539F\u521B",
rules: [{
required: true,
message: "请选择是否原创"
}],
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_radio/* default.Group */.ZP.Group, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
value: 1,
children: "\u662F"
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
value: 2,
children: "\u5426"
})]
})
}), (formValue === null || formValue === void 0 ? void 0 : formValue.is_original) === 2 && /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
name: "reprint_link",
label: "\u8F6C\u8F7D\u81EA",
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
style: {
width: "260px"
},
placeholder: "\u8F6C\u8F7D\u94FE\u63A5"
})
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
className: "mt20",
align: "middle",
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
onClick: returnNew,
children: "\u8FD4\u56DE"
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
loading: btnLoading,
className: "ml20",
type: "primary",
onClick: function onClick() {
return form.submit();
},
children: "\u4FDD\u5B58"
})]
})]
})]
});
};
/* harmony default export */ var Forums_New = ((0,_umi_production_exports.connect)(function (_ref6) {
var forumsDetail = _ref6.forumsDetail,
globalSetting = _ref6.globalSetting;
return {
forumsDetail: forumsDetail,
globalSetting: globalSetting
};
})(New));
/***/ })
}]);