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__MoopCases__InfoPanel__in...

179 lines
10 KiB

"use strict";
(self["webpackChunk"] = self["webpackChunk"] || []).push([[1855],{
/***/ 570:
/*!***************************************!*\
!*** ./src/pages/MoopCases/label.css ***!
\***************************************/
/***/ (function() {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ 70479:
/*!**************************************************!*\
!*** ./src/pages/MoopCases/InfoPanel/index.less ***!
\**************************************************/
/***/ (function() {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ 20680:
/*!*************************************************!*\
!*** ./src/pages/MoopCases/InfoPanel/index.tsx ***!
\*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ Types: function() { return /* binding */ Types; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 59301);
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! antd */ 71418);
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! antd */ 3113);
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! antd */ 14478);
/* harmony import */ var umi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! umi */ 23852);
/* harmony import */ var _utils_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/utils/fetch */ 64841);
/* harmony import */ var _utils_env__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/env */ 19351);
/* harmony import */ var _components_RenderHtml__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/RenderHtml */ 92936);
/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./index.less */ 70479);
/* harmony import */ var _label_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../label.css */ 570);
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
const initialState = {
data: void 0
};
var Types = /* @__PURE__ */ ((Types2) => {
Types2["GET_DATA"] = "get-data";
Types2["PRAISE"] = "on-praise";
return Types2;
})(Types || {});
function reducer(state, action) {
switch (action.type) {
case "get-data" /* GET_DATA */:
return __spreadProps(__spreadValues({}, state), { data: action.payload });
case "on-praise" /* PRAISE */:
return __spreadProps(__spreadValues({}, state), { data: action.payload });
default:
throw new Error();
}
}
/* harmony default export */ __webpack_exports__["default"] = (() => {
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
const [state, dispatch] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(reducer, initialState);
const { data } = state;
const { caseId } = (0,umi__WEBPACK_IMPORTED_MODULE_1__.useParams)();
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
let didCancel = false;
function init() {
return __async(this, null, function* () {
const response = yield (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_2__/* .get */ .U2)(`libraries/${caseId}.json`);
if (!didCancel) {
if (response.status === 404) {
umi__WEBPACK_IMPORTED_MODULE_1__.history.push("/moop_cases");
} else {
dispatch({
type: "get-data" /* GET_DATA */,
payload: response
});
}
}
});
}
if (!didCancel) {
init();
}
return () => {
didCancel = true;
};
}, [caseId]);
function onPraise() {
return __async(this, null, function* () {
yield (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_2__/* .post */ .v_)(`praise_tread/like.json`, {
object_id: caseId,
object_type: "library"
});
let rs = __spreadValues({}, data);
rs.operation.user_praised = true;
rs.praise_count += 1;
dispatch({
type: "on-praise" /* PRAISE */,
payload: rs
});
});
}
function onDeleteCase() {
return __async(this, null, function* () {
yield (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_2__/* .del */ .IV)(`/libraries/${caseId}.json`);
umi__WEBPACK_IMPORTED_MODULE_1__.history.push("/moop_cases");
});
}
return /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(antd__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, { spinning: !data, delay: 500 }, data ? /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("section", { className: "moop-info" }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "crumb" }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(umi__WEBPACK_IMPORTED_MODULE_1__.Link, { to: "/moop_cases" }, "\u6559\u5B66\u6848\u4F8B > "), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, data.title)), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "title" }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("h2", null, data.title, (_a = data.tags) == null ? void 0 : _a.map(
(tag, index) => /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", { className: "label-" + index, key: tag.id }, tag.name)
)), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(umi__WEBPACK_IMPORTED_MODULE_1__.Link, { to: "/moop_cases" }, "\u8FD4\u56DE")), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "moop-info-body" }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "moop-sub-title" }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("img", { src: `${_utils_env__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z.IMG_SERVER}/images/${(_b = data.creator) == null ? void 0 : _b.image_url}`, alt: "cover", width: 50 }), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "desc" }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "flex-container" }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, (_c = data.creator) == null ? void 0 : _c.name), ((_d = data.operation) == null ? void 0 : _d.can_editable) ? /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(umi__WEBPACK_IMPORTED_MODULE_1__.Link, { to: `/moop_cases/${data.id}/edit`, style: { marginRight: 10 } }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .ZP, { type: "ghost" }, "\u7F16\u8F91")) : null, ((_e = data.operation) == null ? void 0 : _e.can_deletable) ? /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(
antd__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z,
{
placement: "bottomRight",
title: "\u662F\u5426\u786E\u8BA4\u5220\u9664\uFF1F",
onConfirm: onDeleteCase
},
/* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .ZP, { type: "dashed" }, "\u5220\u9664")
) : null), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "sum" }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, (_f = data.creator) == null ? void 0 : _f.school_name), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, "\u7F16\u7801\uFF1A", data.uuid), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, "\u53D1\u5E03\u65F6\u95F4\uFF1A", data.published_at)))), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("p", null, "\u4F5C\u8005\uFF1A", `${data.author_name} / ${data.author_school_name}`), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_RenderHtml__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, { value: data.content }), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("ul", { className: "attachment" }, (_g = data.attachments) == null ? void 0 : _g.map(
(item) => /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("li", { key: item.id }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("a", { href: item.url }, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("i", { className: "iconfont icon-fujian" }), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, item.title), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, item.filesize)))
)), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("button", { className: "praise", disabled: (_h = data.operation) == null ? void 0 : _h.user_praised, onClick: onPraise }, ((_i = data.operation) == null ? void 0 : _i.user_praised) ? /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, "\u5DF2\u8D5E") : /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("i", { className: "iconfont icon-dianzan" })), /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, data.praise_count)))) : null);
});
/***/ })
}]);