"use strict"; (self["webpackChunk"] = self["webpackChunk"] || []).push([[14610],{ /***/ 7918: /*!******************************************************************************!*\ !*** ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 6 modules ***! \******************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { // EXPORTS __webpack_require__.d(__webpack_exports__, { "Z": function() { return /* binding */ AntdIcon; } }); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js var objectSpread2 = __webpack_require__(1413); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules var slicedToArray = __webpack_require__(97685); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js var defineProperty = __webpack_require__(4942); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js var objectWithoutProperties = __webpack_require__(45987); // EXTERNAL MODULE: ./node_modules/react/index.js var react = __webpack_require__(67294); // EXTERNAL MODULE: ./node_modules/classnames/index.js var classnames = __webpack_require__(94184); var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); ;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/components/Context.js var IconContext = /*#__PURE__*/(0,react.createContext)({}); /* harmony default export */ var Context = (IconContext); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js var esm_typeof = __webpack_require__(71002); // EXTERNAL MODULE: ./node_modules/@ctrl/tinycolor/dist/module/conversion.js var conversion = __webpack_require__(86500); // EXTERNAL MODULE: ./node_modules/@ctrl/tinycolor/dist/module/format-input.js var format_input = __webpack_require__(1350); ;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/node_modules/@ant-design/colors/es/generate.js var hueStep = 2; // 色相阶梯 var saturationStep = 0.16; // 饱和度阶梯,浅色部分 var saturationStep2 = 0.05; // 饱和度阶梯,深色部分 var brightnessStep1 = 0.05; // 亮度阶梯,浅色部分 var brightnessStep2 = 0.15; // 亮度阶梯,深色部分 var lightColorCount = 5; // 浅色数量,主色上 var darkColorCount = 4; // 深色数量,主色下 // 暗色主题颜色映射关系表 var darkColorMap = [{ index: 7, opacity: 0.15 }, { index: 6, opacity: 0.25 }, { index: 5, opacity: 0.3 }, { index: 5, opacity: 0.45 }, { index: 5, opacity: 0.65 }, { index: 5, opacity: 0.85 }, { index: 4, opacity: 0.9 }, { index: 3, opacity: 0.95 }, { index: 2, opacity: 0.97 }, { index: 1, opacity: 0.98 }]; // Wrapper function ported from TinyColor.prototype.toHsv // Keep it here because of `hsv.h * 360` function toHsv(_ref) { var r = _ref.r, g = _ref.g, b = _ref.b; var hsv = (0,conversion/* rgbToHsv */.py)(r, g, b); return { h: hsv.h * 360, s: hsv.s, v: hsv.v }; } // Wrapper function ported from TinyColor.prototype.toHexString // Keep it here because of the prefix `#` function toHex(_ref2) { var r = _ref2.r, g = _ref2.g, b = _ref2.b; return "#".concat((0,conversion/* rgbToHex */.vq)(r, g, b, false)); } // Wrapper function ported from TinyColor.prototype.mix, not treeshakable. // Amount in range [0, 1] // Assume color1 & color2 has no alpha, since the following src code did so. function mix(rgb1, rgb2, amount) { var p = amount / 100; var rgb = { r: (rgb2.r - rgb1.r) * p + rgb1.r, g: (rgb2.g - rgb1.g) * p + rgb1.g, b: (rgb2.b - rgb1.b) * p + rgb1.b }; return rgb; } function getHue(hsv, i, light) { var hue; // 根据色相不同,色相转向不同 if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) { hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i; } else { hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i; } if (hue < 0) { hue += 360; } else if (hue >= 360) { hue -= 360; } return hue; } function getSaturation(hsv, i, light) { // grey color don't change saturation if (hsv.h === 0 && hsv.s === 0) { return hsv.s; } var saturation; if (light) { saturation = hsv.s - saturationStep * i; } else if (i === darkColorCount) { saturation = hsv.s + saturationStep; } else { saturation = hsv.s + saturationStep2 * i; } // 边界值修正 if (saturation > 1) { saturation = 1; } // 第一格的 s 限制在 0.06-0.1 之间 if (light && i === lightColorCount && saturation > 0.1) { saturation = 0.1; } if (saturation < 0.06) { saturation = 0.06; } return Number(saturation.toFixed(2)); } function getValue(hsv, i, light) { var value; if (light) { value = hsv.v + brightnessStep1 * i; } else { value = hsv.v - brightnessStep2 * i; } if (value > 1) { value = 1; } return Number(value.toFixed(2)); } function generate(color) { var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var patterns = []; var pColor = (0,format_input/* inputToRGB */.uA)(color); for (var i = lightColorCount; i > 0; i -= 1) { var hsv = toHsv(pColor); var colorString = toHex((0,format_input/* inputToRGB */.uA)({ h: getHue(hsv, i, true), s: getSaturation(hsv, i, true), v: getValue(hsv, i, true) })); patterns.push(colorString); } patterns.push(toHex(pColor)); for (var _i = 1; _i <= darkColorCount; _i += 1) { var _hsv = toHsv(pColor); var _colorString = toHex((0,format_input/* inputToRGB */.uA)({ h: getHue(_hsv, _i), s: getSaturation(_hsv, _i), v: getValue(_hsv, _i) })); patterns.push(_colorString); } // dark theme patterns if (opts.theme === 'dark') { return darkColorMap.map(function (_ref3) { var index = _ref3.index, opacity = _ref3.opacity; var darkColorString = toHex(mix((0,format_input/* inputToRGB */.uA)(opts.backgroundColor || '#141414'), (0,format_input/* inputToRGB */.uA)(patterns[index]), opacity * 100)); return darkColorString; }); } return patterns; } ;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/node_modules/@ant-design/colors/es/index.js var presetPrimaryColors = { red: '#F5222D', volcano: '#FA541C', orange: '#FA8C16', gold: '#FAAD14', yellow: '#FADB14', lime: '#A0D911', green: '#52C41A', cyan: '#13C2C2', blue: '#1677FF', geekblue: '#2F54EB', purple: '#722ED1', magenta: '#EB2F96', grey: '#666666' }; var presetPalettes = {}; var presetDarkPalettes = {}; Object.keys(presetPrimaryColors).forEach(function (key) { presetPalettes[key] = generate(presetPrimaryColors[key]); presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes presetDarkPalettes[key] = generate(presetPrimaryColors[key], { theme: 'dark', backgroundColor: '#141414' }); presetDarkPalettes[key].primary = presetDarkPalettes[key][5]; }); var red = presetPalettes.red; var volcano = presetPalettes.volcano; var gold = presetPalettes.gold; var orange = presetPalettes.orange; var yellow = presetPalettes.yellow; var lime = presetPalettes.lime; var green = presetPalettes.green; var cyan = presetPalettes.cyan; var blue = presetPalettes.blue; var geekblue = presetPalettes.geekblue; var purple = presetPalettes.purple; var magenta = presetPalettes.magenta; var grey = presetPalettes.grey; var gray = presetPalettes.grey; // EXTERNAL MODULE: ./node_modules/rc-util/es/warning.js var warning = __webpack_require__(80334); // EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/dynamicCSS.js var dynamicCSS = __webpack_require__(44958); ;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/utils.js function utils_warning(valid, message) { (0,warning/* default */.ZP)(valid, "[@ant-design/icons] ".concat(message)); } function isIconDefinition(target) { return (0,esm_typeof/* default */.Z)(target) === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && ((0,esm_typeof/* default */.Z)(target.icon) === 'object' || typeof target.icon === 'function'); } function normalizeAttrs() { var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.keys(attrs).reduce(function (acc, key) { var val = attrs[key]; switch (key) { case 'class': acc.className = val; delete acc.class; break; default: acc[key] = val; } return acc; }, {}); } function utils_generate(node, key, rootProps) { if (!rootProps) { return /*#__PURE__*/react.createElement(node.tag, (0,objectSpread2/* default */.Z)({ key: key }, normalizeAttrs(node.attrs)), (node.children || []).map(function (child, index) { return utils_generate(child, "".concat(key, "-").concat(node.tag, "-").concat(index)); })); } return /*#__PURE__*/react.createElement(node.tag, (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({ key: key }, normalizeAttrs(node.attrs)), rootProps), (node.children || []).map(function (child, index) { return utils_generate(child, "".concat(key, "-").concat(node.tag, "-").concat(index)); })); } function getSecondaryColor(primaryColor) { // choose the second color return generate(primaryColor)[0]; } function normalizeTwoToneColors(twoToneColor) { if (!twoToneColor) { return []; } return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor]; } // These props make sure that the SVG behaviours like general text. // Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4 var svgBaseProps = { width: '1em', height: '1em', fill: 'currentColor', 'aria-hidden': 'true', focusable: 'false' }; var iconStyles = "\n.anticon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n"; var useInsertStyles = function useInsertStyles() { var styleStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : iconStyles; var _useContext = (0,react.useContext)(Context), csp = _useContext.csp, prefixCls = _useContext.prefixCls; var mergedStyleStr = styleStr; if (prefixCls) { mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls); } (0,react.useEffect)(function () { (0,dynamicCSS/* updateCSS */.hq)(mergedStyleStr, '@ant-design-icons', { prepend: true, csp: csp }); }, []); }; ;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/components/IconBase.js var _excluded = ["icon", "className", "onClick", "style", "primaryColor", "secondaryColor"]; var twoToneColorPalette = { primaryColor: '#333', secondaryColor: '#E6E6E6', calculated: false }; function setTwoToneColors(_ref) { var primaryColor = _ref.primaryColor, secondaryColor = _ref.secondaryColor; twoToneColorPalette.primaryColor = primaryColor; twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor); twoToneColorPalette.calculated = !!secondaryColor; } function getTwoToneColors() { return (0,objectSpread2/* default */.Z)({}, twoToneColorPalette); } var IconBase = function IconBase(props) { var icon = props.icon, className = props.className, onClick = props.onClick, style = props.style, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, restProps = (0,objectWithoutProperties/* default */.Z)(props, _excluded); var colors = twoToneColorPalette; if (primaryColor) { colors = { primaryColor: primaryColor, secondaryColor: secondaryColor || getSecondaryColor(primaryColor) }; } useInsertStyles(); utils_warning(isIconDefinition(icon), "icon should be icon definiton, but got ".concat(icon)); if (!isIconDefinition(icon)) { return null; } var target = icon; if (target && typeof target.icon === 'function') { target = (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, target), {}, { icon: target.icon(colors.primaryColor, colors.secondaryColor) }); } return utils_generate(target.icon, "svg-".concat(target.name), (0,objectSpread2/* default */.Z)({ className: className, onClick: onClick, style: style, 'data-icon': target.name, width: '1em', height: '1em', fill: 'currentColor', 'aria-hidden': 'true' }, restProps)); }; IconBase.displayName = 'IconReact'; IconBase.getTwoToneColors = getTwoToneColors; IconBase.setTwoToneColors = setTwoToneColors; /* harmony default export */ var components_IconBase = (IconBase); ;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js function setTwoToneColor(twoToneColor) { var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor), _normalizeTwoToneColo2 = (0,slicedToArray/* default */.Z)(_normalizeTwoToneColo, 2), primaryColor = _normalizeTwoToneColo2[0], secondaryColor = _normalizeTwoToneColo2[1]; return components_IconBase.setTwoToneColors({ primaryColor: primaryColor, secondaryColor: secondaryColor }); } function getTwoToneColor() { var colors = components_IconBase.getTwoToneColors(); if (!colors.calculated) { return colors.primaryColor; } return [colors.primaryColor, colors.secondaryColor]; } ;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js var AntdIcon_excluded = ["className", "icon", "spin", "rotate", "tabIndex", "onClick", "twoToneColor"]; // Initial setting // should move it to antd main repo? setTwoToneColor('#1890ff'); var Icon = /*#__PURE__*/react.forwardRef(function (props, ref) { var _classNames; var className = props.className, icon = props.icon, spin = props.spin, rotate = props.rotate, tabIndex = props.tabIndex, onClick = props.onClick, twoToneColor = props.twoToneColor, restProps = (0,objectWithoutProperties/* default */.Z)(props, AntdIcon_excluded); var _React$useContext = react.useContext(Context), _React$useContext$pre = _React$useContext.prefixCls, prefixCls = _React$useContext$pre === void 0 ? 'anticon' : _React$useContext$pre, rootClassName = _React$useContext.rootClassName; var classString = classnames_default()(rootClassName, prefixCls, (_classNames = {}, (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-").concat(icon.name), !!icon.name), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-spin"), !!spin || icon.name === 'loading'), _classNames), className); var iconTabIndex = tabIndex; if (iconTabIndex === undefined && onClick) { iconTabIndex = -1; } var svgStyle = rotate ? { msTransform: "rotate(".concat(rotate, "deg)"), transform: "rotate(".concat(rotate, "deg)") } : undefined; var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor), _normalizeTwoToneColo2 = (0,slicedToArray/* default */.Z)(_normalizeTwoToneColo, 2), primaryColor = _normalizeTwoToneColo2[0], secondaryColor = _normalizeTwoToneColo2[1]; return /*#__PURE__*/react.createElement("span", (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({ role: "img", "aria-label": icon.name }, restProps), {}, { ref: ref, tabIndex: iconTabIndex, onClick: onClick, className: classString }), /*#__PURE__*/react.createElement(components_IconBase, { icon: icon, primaryColor: primaryColor, secondaryColor: secondaryColor, style: svgStyle })); }); Icon.displayName = 'AntdIcon'; Icon.getTwoToneColor = getTwoToneColor; Icon.setTwoToneColor = setTwoToneColor; /* harmony default export */ var AntdIcon = (Icon); /***/ }), /***/ 87588: /*!******************************************************************************!*\ !*** ./node_modules/@ant-design/icons/es/icons/ExclamationCircleOutlined.js ***! \******************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { /* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294); /* harmony import */ var _ant_design_icons_svg_es_asn_ExclamationCircleOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/ExclamationCircleOutlined */ 61144); /* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918); // GENERATE BY ./scripts/generate.ts // DON NOT EDIT IT MANUALLY var ExclamationCircleOutlined = function ExclamationCircleOutlined(props, ref) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, { ref: ref, icon: _ant_design_icons_svg_es_asn_ExclamationCircleOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z })); }; ExclamationCircleOutlined.displayName = 'ExclamationCircleOutlined'; /* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ExclamationCircleOutlined)); /***/ }), /***/ 62891: /*!******************************************************************!*\ !*** ./src/pages/User/Detail/LearningPath/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 */ LearningPath; } }); // EXTERNAL MODULE: ./node_modules/antd/es/row/style/index.js var style = __webpack_require__(13062); // EXTERNAL MODULE: ./node_modules/antd/es/row/index.js var row = __webpack_require__(71230); // EXTERNAL MODULE: ./node_modules/antd/es/table/style/index.js + 1 modules var table_style = __webpack_require__(71854); // EXTERNAL MODULE: ./node_modules/antd/es/table/index.js + 58 modules var table = __webpack_require__(67250); // EXTERNAL MODULE: ./node_modules/antd/es/col/style/index.js var col_style = __webpack_require__(89032); // EXTERNAL MODULE: ./node_modules/antd/es/col/index.js var col = __webpack_require__(15746); // EXTERNAL MODULE: ./node_modules/antd/es/message/style/index.js + 1 modules var message_style = __webpack_require__(14934); // EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 1 modules var message = __webpack_require__(12461); // EXTERNAL MODULE: ./node_modules/antd/es/modal/style/index.js + 1 modules var modal_style = __webpack_require__(35611); // EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 7 modules var modal = __webpack_require__(85402); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js var regeneratorRuntime = __webpack_require__(17061); var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/toConsumableArray.js var toConsumableArray = __webpack_require__(861); var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/asyncToGenerator.js var asyncToGenerator = __webpack_require__(17156); var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js var slicedToArray = __webpack_require__(27424); var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js var objectWithoutProperties = __webpack_require__(70215); var objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties); // EXTERNAL MODULE: ./node_modules/react/index.js var react = __webpack_require__(67294); // EXTERNAL MODULE: ./src/.umi-production/exports.ts + 8 modules var _umi_production_exports = __webpack_require__(89214); // EXTERNAL MODULE: ./src/utils/verifyLogin.tsx + 3 modules var verifyLogin = __webpack_require__(72551); // EXTERNAL MODULE: ./src/service/shixuns.ts var shixuns = __webpack_require__(56088); // EXTERNAL MODULE: ./src/pages/tasks/vnc-view/index.less var vnc_view = __webpack_require__(45954); // EXTERNAL MODULE: ./node_modules/moment/moment.js var moment = __webpack_require__(30381); var moment_default = /*#__PURE__*/__webpack_require__.n(moment); ;// CONCATENATED MODULE: ./src/pages/User/Detail/LearningPath/index.less?modules // extracted by mini-css-extract-plugin /* harmony default export */ var LearningPathmodules = ({"flex_box_center":"flex_box_center___ncKvk","flex_space_between":"flex_space_between___PkV7C","flex_box_vertical_center":"flex_box_vertical_center___Z_0oH","flex_box_center_end":"flex_box_center_end___QEXUZ","flex_box_column":"flex_box_column___KwQLG","ul":"ul___F_zFi"}); // EXTERNAL MODULE: ./src/service/user.ts var service_user = __webpack_require__(58839); // EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(85893); ;// CONCATENATED MODULE: ./src/pages/User/Detail/LearningPath/index.tsx var _excluded = ["classroomList", "globalSetting", "loading", "user", "dispatch"]; moment_default().locale('ZH-cn'); var ClassroomListPage = function ClassroomListPage(_ref) { var classroomList = _ref.classroomList, globalSetting = _ref.globalSetting, loading = _ref.loading, user = _ref.user, dispatch = _ref.dispatch, props = objectWithoutProperties_default()(_ref, _excluded); var params = (0,_umi_production_exports.useParams)(); var _useState = (0,react.useState)(), _useState2 = slicedToArray_default()(_useState, 2), data = _useState2[0], setData = _useState2[1]; var _useState3 = (0,react.useState)(""), _useState4 = slicedToArray_default()(_useState3, 2), subjectName = _useState4[0], setSubjectName = _useState4[1]; (0,react.useEffect)(function () { getData(); }, []); var getData = /*#__PURE__*/function () { var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() { var res; return regeneratorRuntime_default()().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.next = 2; return (0,service_user/* getUserLearnPath */.nV)(); case 2: res = _context.sent; if ((res === null || res === void 0 ? void 0 : res.status) === 0) { setSubjectName(res.subject_name); setData(toConsumableArray_default()(res.data)); } case 4: case "end": return _context.stop(); } }, _callee); })); return function getData() { return _ref2.apply(this, arguments); }; }(); var handleStartGame = function handleStartGame(item) { if (!(0,verifyLogin/* handleVerify */.tJ)(dispatch)) { return; } if (item.is_jupyter || item.is_jupyter_lab) { dispatch({ type: 'shixunsDetail/execJupyter', payload: { id: item.identifier } }).then(function (response) { if (response !== null && response !== void 0 && response.identifier) { _umi_production_exports.history === null || _umi_production_exports.history === void 0 ? void 0 : _umi_production_exports.history.push("/tasks/".concat(response.identifier, "/jupyter")); } }); return; } dispatch({ type: 'shixunsDetail/execShixun', payload: { id: item.identifier } }).then(function (execRes) { if (execRes !== null && execRes !== void 0 && execRes.game_identifier) { _umi_production_exports.history === null || _umi_production_exports.history === void 0 ? void 0 : _umi_production_exports.history.push("/tasks/".concat(execRes.game_identifier)); return; } if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 2) { handleResetGame(execRes === null || execRes === void 0 ? void 0 : execRes.message); } else if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 3) { handleInBeta(execRes === null || execRes === void 0 ? void 0 : execRes.message); } }); }; var handleResetGame = function handleResetGame(url) { var _url; url = (_url = url) !== null && _url !== void 0 && _url.includes('.json') ? url : "".concat(url, ".json"); modal/* default.confirm */.Z.confirm({ centered: true, title: '提示', okText: '确定', cancelText: '取消', content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", { className: "tc font16", children: "\u5B9E\u8BAD\u5DF2\u7ECF\u66F4\u65B0\u4E86\uFF0C\u6B63\u5728\u4E3A\u60A8\u91CD\u7F6E!" }), onOk: function () { var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() { var res, execRes; return regeneratorRuntime_default()().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return (0,shixuns/* resetMyGame */.$Q)({ url: url }); case 2: res = _context2.sent; if (res) { _context2.next = 5; break; } return _context2.abrupt("return"); case 5: message/* default.success */.ZP.success("重置成功,正在进入实训!"); _context2.next = 8; return (0,shixuns/* execShixun */.Ir)({ id: res.shixun_identifier }); case 8: execRes = _context2.sent; if (!(execRes !== null && execRes !== void 0 && execRes.game_identifier)) { _context2.next = 12; break; } _umi_production_exports.history === null || _umi_production_exports.history === void 0 ? void 0 : _umi_production_exports.history.push("/tasks/".concat(execRes.game_identifier)); return _context2.abrupt("return"); case 12: if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 2) { handleResetGame(execRes === null || execRes === void 0 ? void 0 : execRes.message); } else if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 3) { handleInBeta(execRes === null || execRes === void 0 ? void 0 : execRes.message); } case 13: case "end": return _context2.stop(); } }, _callee2); })); function onOk() { return _onOk.apply(this, arguments); } return onOk; }() }); }; var handleInBeta = function handleInBeta(message) { modal/* default.confirm */.Z.confirm({ centered: true, title: '提示', okText: '确定', cancelText: '取消', content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "tc font16", children: ["\u76EE\u524D\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5C1A\u5728\u5185\u6D4B\u4E2D\uFF0C\u5C06\u4E8E", message, "\u4E4B\u540E\u5F00\u653E\uFF0C\u8C22\u8C22\uFF01"] }) }); }; var columns = [{ title: '序号', dataIndex: 'identifier', key: 'identifier', render: function render(text, record, index) { return index + 1; } }, { title: '实践项目名称', dataIndex: 'shixun_name', width: "60%", ellipsis: true, key: 'shixun_name' }, { title: '学习进度', dataIndex: 'challenges_count', key: 'challenges_count', render: function render(text, record) { return /*#__PURE__*/(0,jsx_runtime.jsxs)("span", { children: [record.leaning_challenge_count, "/", text] }); } }, { title: '状态', dataIndex: 'challenges_count', key: 'challenges_count', render: function render(text, record) { return /*#__PURE__*/(0,jsx_runtime.jsx)("span", { children: record.leaning_challenge_count == text ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", { className: "c-green", children: "\u5DF2\u5B8C\u6210" }) : /*#__PURE__*/(0,jsx_runtime.jsx)("span", { className: "c-red", children: "\u672A\u5B8C\u6210" }) }); } }, { title: '操作', dataIndex: 'shixun_name', render: function render(text, record, index) { return /*#__PURE__*/(0,jsx_runtime.jsx)("span", { onClick: function onClick() { return handleStartGame(record); }, className: "c-blue current", children: "\u5F00\u542F\u6311\u6218" }); } }]; return /*#__PURE__*/(0,jsx_runtime.jsx)("div", { className: "edu-container minH500", style: { width: '1200px', marginTop: '40px', marginBottom: '20px' }, children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, { children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, { flex: "280px", children: /*#__PURE__*/(0,jsx_runtime.jsx)("ul", { className: LearningPathmodules.ul, children: /*#__PURE__*/(0,jsx_runtime.jsx)("li", { children: subjectName }) }) }), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, { flex: "1px" }), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, { flex: "1", className: "bg-white p20", children: /*#__PURE__*/(0,jsx_runtime.jsx)(table/* default */.Z, { dataSource: data || [], columns: columns }) })] }) }); }; /* harmony default export */ var LearningPath = ((0,_umi_production_exports.connect)(function (_ref3) { var classroomList = _ref3.classroomList, loading = _ref3.loading, globalSetting = _ref3.globalSetting, user = _ref3.user; return { classroomList: classroomList, globalSetting: globalSetting, loading: loading.models.classroomList, user: user }; })(ClassroomListPage)); /***/ }), /***/ 45954: /*!*********************************************!*\ !*** ./src/pages/tasks/vnc-view/index.less ***! \*********************************************/ /***/ (function() { // extracted by mini-css-extract-plugin /***/ }), /***/ 5467: /*!**********************************************************!*\ !*** ./node_modules/antd/es/_util/getDataOrAriaProps.js ***! \**********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Z": function() { return /* binding */ getDataOrAriaProps; } /* harmony export */ }); function getDataOrAriaProps(props) { return Object.keys(props).reduce(function (prev, key) { if ((key.startsWith('data-') || key.startsWith('aria-') || key === 'role') && !key.startsWith('data-__')) { prev[key] = props[key]; } return prev; }, {}); } /***/ }), /***/ 29924: /*!*********************************************************!*\ !*** ./node_modules/antd/es/radio/index.js + 4 modules ***! \*********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { // EXPORTS __webpack_require__.d(__webpack_exports__, { "ZP": function() { return /* binding */ es_radio; } }); // UNUSED EXPORTS: Button, Group // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js var esm_extends = __webpack_require__(87462); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js var defineProperty = __webpack_require__(4942); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules var slicedToArray = __webpack_require__(97685); // EXTERNAL MODULE: ./node_modules/classnames/index.js var classnames = __webpack_require__(94184); var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); // EXTERNAL MODULE: ./node_modules/rc-util/es/hooks/useMergedState.js var useMergedState = __webpack_require__(21770); // EXTERNAL MODULE: ./node_modules/react/index.js var react = __webpack_require__(67294); // EXTERNAL MODULE: ./node_modules/antd/es/config-provider/context.js var context = __webpack_require__(53124); // EXTERNAL MODULE: ./node_modules/antd/es/config-provider/SizeContext.js var SizeContext = __webpack_require__(97647); // EXTERNAL MODULE: ./node_modules/antd/es/_util/getDataOrAriaProps.js var getDataOrAriaProps = __webpack_require__(5467); ;// CONCATENATED MODULE: ./node_modules/antd/es/radio/context.js var RadioGroupContext = /*#__PURE__*/react.createContext(null); var RadioGroupContextProvider = RadioGroupContext.Provider; /* harmony default export */ var radio_context = (RadioGroupContext); var RadioOptionTypeContext = /*#__PURE__*/react.createContext(null); var RadioOptionTypeContextProvider = RadioOptionTypeContext.Provider; // EXTERNAL MODULE: ./node_modules/rc-checkbox/es/index.js var es = __webpack_require__(50132); // EXTERNAL MODULE: ./node_modules/rc-util/es/ref.js var es_ref = __webpack_require__(42550); // EXTERNAL MODULE: ./node_modules/antd/es/config-provider/DisabledContext.js var DisabledContext = __webpack_require__(98866); // EXTERNAL MODULE: ./node_modules/antd/es/form/context.js var form_context = __webpack_require__(65223); ;// CONCATENATED MODULE: ./node_modules/antd/es/radio/radio.js var __rest = undefined && undefined.__rest || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var InternalRadio = function InternalRadio(props, ref) { var _classNames; var groupContext = react.useContext(radio_context); var radioOptionTypeContext = react.useContext(RadioOptionTypeContext); var _React$useContext = react.useContext(context/* ConfigContext */.E_), getPrefixCls = _React$useContext.getPrefixCls, direction = _React$useContext.direction; var innerRef = react.useRef(); var mergedRef = (0,es_ref/* composeRef */.sQ)(ref, innerRef); var _useContext = (0,react.useContext)(form_context/* FormItemInputContext */.aM), isFormItemInput = _useContext.isFormItemInput; false ? 0 : void 0; var onChange = function onChange(e) { var _a, _b; (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, e); (_b = groupContext === null || groupContext === void 0 ? void 0 : groupContext.onChange) === null || _b === void 0 ? void 0 : _b.call(groupContext, e); }; var customizePrefixCls = props.prefixCls, className = props.className, children = props.children, style = props.style, customDisabled = props.disabled, restProps = __rest(props, ["prefixCls", "className", "children", "style", "disabled"]); var radioPrefixCls = getPrefixCls('radio', customizePrefixCls); var prefixCls = ((groupContext === null || groupContext === void 0 ? void 0 : groupContext.optionType) || radioOptionTypeContext) === 'button' ? "".concat(radioPrefixCls, "-button") : radioPrefixCls; var radioProps = (0,esm_extends/* default */.Z)({}, restProps); // ===================== Disabled ===================== var disabled = react.useContext(DisabledContext/* default */.Z); radioProps.disabled = customDisabled || disabled; if (groupContext) { radioProps.name = groupContext.name; radioProps.onChange = onChange; radioProps.checked = props.value === groupContext.value; radioProps.disabled = radioProps.disabled || groupContext.disabled; } var wrapperClassString = classnames_default()("".concat(prefixCls, "-wrapper"), (_classNames = {}, (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-wrapper-checked"), radioProps.checked), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-wrapper-disabled"), radioProps.disabled), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-wrapper-rtl"), direction === 'rtl'), (0,defineProperty/* default */.Z)(_classNames, "".concat(prefixCls, "-wrapper-in-form-item"), isFormItemInput), _classNames), className); return ( /*#__PURE__*/ // eslint-disable-next-line jsx-a11y/label-has-associated-control react.createElement("label", { className: wrapperClassString, style: style, onMouseEnter: props.onMouseEnter, onMouseLeave: props.onMouseLeave }, /*#__PURE__*/react.createElement(es/* default */.Z, (0,esm_extends/* default */.Z)({}, radioProps, { type: "radio", prefixCls: prefixCls, ref: mergedRef })), children !== undefined ? /*#__PURE__*/react.createElement("span", null, children) : null) ); }; var Radio = /*#__PURE__*/react.forwardRef(InternalRadio); if (false) {} /* harmony default export */ var radio_radio = (Radio); ;// CONCATENATED MODULE: ./node_modules/antd/es/radio/group.js var RadioGroup = /*#__PURE__*/react.forwardRef(function (props, ref) { var _classNames; var _React$useContext = react.useContext(context/* ConfigContext */.E_), getPrefixCls = _React$useContext.getPrefixCls, direction = _React$useContext.direction; var size = react.useContext(SizeContext/* default */.Z); var _useMergedState = (0,useMergedState/* default */.Z)(props.defaultValue, { value: props.value }), _useMergedState2 = (0,slicedToArray/* default */.Z)(_useMergedState, 2), value = _useMergedState2[0], setValue = _useMergedState2[1]; var onRadioChange = function onRadioChange(ev) { var lastValue = value; var val = ev.target.value; if (!('value' in props)) { setValue(val); } var onChange = props.onChange; if (onChange && val !== lastValue) { onChange(ev); } }; var customizePrefixCls = props.prefixCls, _props$className = props.className, className = _props$className === void 0 ? '' : _props$className, options = props.options, _props$buttonStyle = props.buttonStyle, buttonStyle = _props$buttonStyle === void 0 ? 'outline' : _props$buttonStyle, disabled = props.disabled, children = props.children, customizeSize = props.size, style = props.style, id = props.id, onMouseEnter = props.onMouseEnter, onMouseLeave = props.onMouseLeave, onFocus = props.onFocus, onBlur = props.onBlur; var prefixCls = getPrefixCls('radio', customizePrefixCls); var groupPrefixCls = "".concat(prefixCls, "-group"); var childrenToRender = children; // 如果存在 options, 优先使用 if (options && options.length > 0) { childrenToRender = options.map(function (option) { if (typeof option === 'string' || typeof option === 'number') { // 此处类型自动推导为 string return /*#__PURE__*/react.createElement(radio_radio, { key: option.toString(), prefixCls: prefixCls, disabled: disabled, value: option, checked: value === option }, option); } // 此处类型自动推导为 { label: string value: string } return /*#__PURE__*/react.createElement(radio_radio, { key: "radio-group-value-options-".concat(option.value), prefixCls: prefixCls, disabled: option.disabled || disabled, value: option.value, checked: value === option.value, style: option.style }, option.label); }); } var mergedSize = customizeSize || size; var classString = classnames_default()(groupPrefixCls, "".concat(groupPrefixCls, "-").concat(buttonStyle), (_classNames = {}, (0,defineProperty/* default */.Z)(_classNames, "".concat(groupPrefixCls, "-").concat(mergedSize), mergedSize), (0,defineProperty/* default */.Z)(_classNames, "".concat(groupPrefixCls, "-rtl"), direction === 'rtl'), _classNames), className); return /*#__PURE__*/react.createElement("div", (0,esm_extends/* default */.Z)({}, (0,getDataOrAriaProps/* default */.Z)(props), { className: classString, style: style, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onFocus: onFocus, onBlur: onBlur, id: id, ref: ref }), /*#__PURE__*/react.createElement(RadioGroupContextProvider, { value: { onChange: onRadioChange, value: value, disabled: props.disabled, name: props.name, optionType: props.optionType } }, childrenToRender)); }); /* harmony default export */ var group = (/*#__PURE__*/react.memo(RadioGroup)); ;// CONCATENATED MODULE: ./node_modules/antd/es/radio/radioButton.js var radioButton_rest = undefined && undefined.__rest || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var RadioButton = function RadioButton(props, ref) { var _React$useContext = react.useContext(context/* ConfigContext */.E_), getPrefixCls = _React$useContext.getPrefixCls; var customizePrefixCls = props.prefixCls, radioProps = radioButton_rest(props, ["prefixCls"]); var prefixCls = getPrefixCls('radio', customizePrefixCls); return /*#__PURE__*/react.createElement(RadioOptionTypeContextProvider, { value: "button" }, /*#__PURE__*/react.createElement(radio_radio, (0,esm_extends/* default */.Z)({ prefixCls: prefixCls }, radioProps, { type: "radio", ref: ref }))); }; /* harmony default export */ var radioButton = (/*#__PURE__*/react.forwardRef(RadioButton)); ;// CONCATENATED MODULE: ./node_modules/antd/es/radio/index.js var radio_Radio = radio_radio; radio_Radio.Button = radioButton; radio_Radio.Group = group; radio_Radio.__ANT_RADIO = true; /* harmony default export */ var es_radio = (radio_Radio); /***/ }), /***/ 83822: /*!***************************************************************!*\ !*** ./node_modules/antd/es/radio/style/index.js + 1 modules ***! \***************************************************************/ /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { // EXTERNAL MODULE: ./node_modules/antd/es/style/default.less var style_default = __webpack_require__(43146); ;// CONCATENATED MODULE: ./node_modules/antd/es/radio/style/index.less // extracted by mini-css-extract-plugin ;// CONCATENATED MODULE: ./node_modules/antd/es/radio/style/index.js // deps-lint-skip: form /***/ }) }]);