|
|
"use strict";
|
|
|
(self["webpackChunk"] = self["webpackChunk"] || []).push([[41717],{
|
|
|
|
|
|
/***/ 71342:
|
|
|
/*!********************************************!*\
|
|
|
!*** ./src/layouts/index.tsx + 19 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 */ layouts; }
|
|
|
});
|
|
|
|
|
|
// 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/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/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/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: ./node_modules/_antd@5.9.0@antd/es/config-provider/index.js + 5 modules
|
|
|
var config_provider = __webpack_require__(92736);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var modal = __webpack_require__(43418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/locale/zh_CN.js + 4 modules
|
|
|
var zh_CN = __webpack_require__(81863);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(4857);
|
|
|
// 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/_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__(36920);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/checkbox/index.js + 3 modules
|
|
|
var es_checkbox = __webpack_require__(24905);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(3113);
|
|
|
// EXTERNAL MODULE: ./src/service/user.ts
|
|
|
var service_user = __webpack_require__(99887);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.5.2@@ant-design/icons/es/icons/CloseOutlined.js + 1 modules
|
|
|
var CloseOutlined = __webpack_require__(72119);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(97940);
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/LoginPanel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/LoginPanel/LoginForm.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var inputStyle = {
|
|
|
height: 48,
|
|
|
borderRadius: 4
|
|
|
};
|
|
|
var LoginPopComponents = function LoginPopComponents(_ref) {
|
|
|
var dispatch = _ref.dispatch,
|
|
|
setType = _ref.setType,
|
|
|
user = _ref.user,
|
|
|
setusername = _ref.setusername;
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
errorValue = _useState2[0],
|
|
|
setErrorValue = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(0),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
changeImgNum = _useState4[0],
|
|
|
setChangeImgNum = _useState4[1];
|
|
|
var password = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{8,16}$/;
|
|
|
var imgSrc = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
return '/rucaptcha?t=' + new Date().getTime();
|
|
|
}, [changeImgNum]);
|
|
|
var onFinish = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(values) {
|
|
|
var res, _location$query, _location$query2, from;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,service_user/* LoginIn */.Es)(values);
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (!res.status) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
setErrorValue(res === null || res === void 0 ? void 0 : res.message);
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
if (res !== null && res !== void 0 && res.show) {
|
|
|
localStorage.setItem('extension-modal', 'exist');
|
|
|
localStorage.setItem('extension-date', res === null || res === void 0 ? void 0 : res.start_date);
|
|
|
} else {
|
|
|
localStorage.removeItem('extension-modal');
|
|
|
}
|
|
|
console.log(_umi_production_exports.history, 'history');
|
|
|
if (location.pathname === '/user/login' || location.pathname === '/login') {
|
|
|
from = ((_location$query = location.query) === null || _location$query === void 0 ? void 0 : _location$query.from) || ((_location$query2 = location.query) === null || _location$query2 === void 0 ? void 0 : _location$query2.back_url);
|
|
|
if (from) {
|
|
|
window.location.href = decodeURIComponent(from);
|
|
|
} else {
|
|
|
//判断 如果密码强度过低 跳转修改密码页
|
|
|
if (!password.test(values.password)) {
|
|
|
message/* default */.ZP.info('系统检测您的密码强度过低,请及时修改');
|
|
|
window.location.href = '/account/secure';
|
|
|
} else {
|
|
|
window.location.reload();
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
// if(!password.test(values.password)){
|
|
|
// message.info('系统检测您的密码强度过低,请及时修改')
|
|
|
// history.replace('/account/secure?active=3')
|
|
|
// dispatch({
|
|
|
// type: 'user/showPopLogin',
|
|
|
// payload: { showPopLogin: false },
|
|
|
// })
|
|
|
// }else{
|
|
|
window.location.reload();
|
|
|
// }
|
|
|
}
|
|
|
form.resetFields();
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function onFinish(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleClick = function handleClick() {
|
|
|
dispatch({
|
|
|
type: 'user/showPopLogin',
|
|
|
payload: {
|
|
|
showPopLogin: false
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
layout: "vertical",
|
|
|
form: form,
|
|
|
initialValues: {
|
|
|
autologin: true,
|
|
|
login: user.actionTabs.phone
|
|
|
},
|
|
|
onFinish: onFinish,
|
|
|
onValuesChange: function onValuesChange(changedValues) {
|
|
|
setErrorValue('');
|
|
|
var chineseRegex = /[\u4e00-\u9fa5]/g; // 中文字符的正则表达式
|
|
|
if ('password' in changedValues) {
|
|
|
var _password = changedValues.password.replace(chineseRegex, ''); // 将中文字符替换为空字符串
|
|
|
form.setFieldsValue({
|
|
|
password: _password
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
children: [!!errorValue && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "res-error-values",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: errorValue
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(CloseOutlined/* default */.Z, {
|
|
|
onClick: function onClick() {
|
|
|
return setErrorValue('');
|
|
|
}
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "login",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入学号、工号、手机号或邮箱'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: inputStyle,
|
|
|
size: "large",
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u624B\u673A\u53F7/\u90AE\u7BB1\u53F7/\u8D26\u53F7/\u5DE5\u53F7/\u5B66\u53F7",
|
|
|
onBlur: function onBlur() {
|
|
|
dispatch({
|
|
|
type: 'user/setActionTabs',
|
|
|
payload: {
|
|
|
phone: form.getFieldValue('login')
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "password",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入8-16位密码,区分大小写、不能使用空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z.Password, {
|
|
|
style: inputStyle
|
|
|
// visibilityToggle={false}
|
|
|
,
|
|
|
size: "large",
|
|
|
placeholder: "\u5BC6\u7801"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "code",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入验证码'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
display: 'flex'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: inputStyle
|
|
|
// visibilityToggle={false}
|
|
|
,
|
|
|
size: "large",
|
|
|
placeholder: "\u9A8C\u8BC1\u7801"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: (env/* default */.Z === null || env/* default */.Z === void 0 ? void 0 : env/* default */.Z.API_SERVER) + imgSrc,
|
|
|
style: {
|
|
|
height: '32px',
|
|
|
marginLeft: '10px'
|
|
|
},
|
|
|
onClick: function onClick() {
|
|
|
// setImgsrc(ImgSrc)
|
|
|
setChangeImgNum(changeImgNum + 1);
|
|
|
// "this.src = '/rucaptcha/?t=' + Date.now();"
|
|
|
}
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
style: {
|
|
|
justifyContent: 'space-between'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "autologin",
|
|
|
noStyle: true,
|
|
|
valuePropName: "checked",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
children: "\u4E0B\u6B21\u81EA\u52A8\u767B\u5F55"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "current font14 c-blue",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(_umi_production_exports.Link, {
|
|
|
className: "c-grey-333 font14",
|
|
|
onClick: function onClick() {
|
|
|
return handleClick();
|
|
|
},
|
|
|
to: "/user/reset-password?from=".concat(location.pathname),
|
|
|
children: "\u627E\u56DE\u5BC6\u7801"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
size: "large",
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
block: true,
|
|
|
className: "font16",
|
|
|
style: inputStyle,
|
|
|
children: "\u767B\u5F55"
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var LoginForm = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var user = _ref3.user,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting;
|
|
|
return {
|
|
|
user: user,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(LoginPopComponents));
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(6848);
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(64606);
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/RegisterPanel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var RegisterPanel_inputStyle = {
|
|
|
height: 48
|
|
|
};
|
|
|
var loginRegex = /(\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b)|(^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$)/i;
|
|
|
var RegisterPanel_password = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{8,16}$/;
|
|
|
var initialState = {
|
|
|
timer: 0
|
|
|
};
|
|
|
var Types = /*#__PURE__*/function (Types) {
|
|
|
Types[Types["setTimer"] = 0] = "setTimer";
|
|
|
return Types;
|
|
|
}(Types || {});
|
|
|
function reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case Types.setTimer:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
timer: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
var RegisterComponent = function RegisterComponent(_ref) {
|
|
|
var _globalSetting$settin;
|
|
|
var validateName = _ref.validateName,
|
|
|
getCode = _ref.getCode,
|
|
|
register = _ref.register,
|
|
|
_ref$style = _ref.style,
|
|
|
style = _ref$style === void 0 ? {} : _ref$style,
|
|
|
_ref$buttonText = _ref.buttonText,
|
|
|
buttonText = _ref$buttonText === void 0 ? '注册' : _ref$buttonText,
|
|
|
globalSetting = _ref.globalSetting;
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(reducer, initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
codeLoading = _useState2[0],
|
|
|
setCodeLoading = _useState2[1];
|
|
|
var timer = state.timer;
|
|
|
function onFinish(_x) {
|
|
|
return _onFinish.apply(this, arguments);
|
|
|
}
|
|
|
function _onFinish() {
|
|
|
_onFinish = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(values) {
|
|
|
var login, password, code, _yield$register, message, status;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
login = values.login, password = values.password, code = values.code;
|
|
|
_context2.next = 3;
|
|
|
return register({
|
|
|
login: login,
|
|
|
password: password,
|
|
|
code: code
|
|
|
});
|
|
|
case 3:
|
|
|
_yield$register = _context2.sent;
|
|
|
message = _yield$register.message;
|
|
|
status = _yield$register.status;
|
|
|
if (!(status < 0)) {
|
|
|
_context2.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
form.setFields([{
|
|
|
name: 'code',
|
|
|
errors: [message]
|
|
|
}]);
|
|
|
return _context2.abrupt("return");
|
|
|
case 9:
|
|
|
// antdMessage.info('注册成功')
|
|
|
// history.replace('/')
|
|
|
window.location.reload();
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return _onFinish.apply(this, arguments);
|
|
|
}
|
|
|
function onValidateName() {
|
|
|
return _onValidateName.apply(this, arguments);
|
|
|
}
|
|
|
function _onValidateName() {
|
|
|
_onValidateName = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var login, flag, _yield$validateName, status, message, isOk;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
login = form.getFieldValue('login');
|
|
|
flag = 0;
|
|
|
if (!(!loginRegex.test(login) || login.indexOf(" ") > -1)) {
|
|
|
_context3.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
form.setFields([{
|
|
|
name: 'login',
|
|
|
errors: ['请输入正确的手机号或邮箱']
|
|
|
}]);
|
|
|
flag = 1;
|
|
|
return _context3.abrupt("return", flag);
|
|
|
case 6:
|
|
|
_context3.next = 8;
|
|
|
return validateName({
|
|
|
login: login,
|
|
|
type: 1
|
|
|
});
|
|
|
case 8:
|
|
|
_yield$validateName = _context3.sent;
|
|
|
status = _yield$validateName.status;
|
|
|
message = _yield$validateName.message;
|
|
|
isOk = status > 0;
|
|
|
if (isOk) {
|
|
|
flag = 2;
|
|
|
} else {
|
|
|
form.setFields([{
|
|
|
name: 'login',
|
|
|
errors: [message]
|
|
|
}]);
|
|
|
flag = 1;
|
|
|
}
|
|
|
return _context3.abrupt("return", flag);
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return _onValidateName.apply(this, arguments);
|
|
|
}
|
|
|
var onGetCode = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var verify, login, res, _yield$getCode, status, message;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
verify = form.getFieldValue('verify');
|
|
|
login = form.getFieldValue('login');
|
|
|
if (login) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
form.validateFields(['login']);
|
|
|
_context.next = 21;
|
|
|
break;
|
|
|
case 6:
|
|
|
_context.next = 8;
|
|
|
return validateName({
|
|
|
login: login,
|
|
|
type: 1
|
|
|
});
|
|
|
case 8:
|
|
|
res = _context.sent;
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) !== 1)) {
|
|
|
_context.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
form.setFields([{
|
|
|
name: 'login',
|
|
|
errors: [res === null || res === void 0 ? void 0 : res.message]
|
|
|
}]);
|
|
|
return _context.abrupt("return");
|
|
|
case 12:
|
|
|
setCodeLoading(true);
|
|
|
_context.next = 15;
|
|
|
return getCode({
|
|
|
login: login,
|
|
|
type: 1,
|
|
|
smscode: (0,util/* setmiyah */.M)(login)
|
|
|
});
|
|
|
case 15:
|
|
|
_yield$getCode = _context.sent;
|
|
|
status = _yield$getCode.status;
|
|
|
message = _yield$getCode.message;
|
|
|
if (status < 0) {
|
|
|
form.setFields([{
|
|
|
name: 'code',
|
|
|
errors: [message]
|
|
|
}]);
|
|
|
}
|
|
|
dispatch({
|
|
|
type: Types.setTimer,
|
|
|
payload: 60
|
|
|
});
|
|
|
setCodeLoading(false);
|
|
|
case 21:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function onGetCode() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
function validatePassword(_, value) {
|
|
|
if (!value) {
|
|
|
return Promise.resolve();
|
|
|
}
|
|
|
if (!RegisterPanel_password.test(value)) {
|
|
|
return Promise.reject('请输入8~16位字符,字母、数字和特殊符号至少包含2种');
|
|
|
}
|
|
|
if (value.indexOf(" ") > -1) {
|
|
|
return Promise.reject('请输入8-16位密码,区分大小写、不能使用空格');
|
|
|
}
|
|
|
var len = value.length;
|
|
|
if (len >= 8 && len <= 16) {
|
|
|
return Promise.resolve();
|
|
|
} else {
|
|
|
return Promise.reject('请输入8-16位密码,区分大小写、不能使用空格');
|
|
|
}
|
|
|
}
|
|
|
var verifyValidate = function verifyValidate(_, value) {
|
|
|
return value ? Promise.resolve() : Promise.reject('请拖动滑块验证');
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (timer > 0) {
|
|
|
setTimeout(function () {
|
|
|
dispatch({
|
|
|
type: Types.setTimer,
|
|
|
payload: timer - 1
|
|
|
});
|
|
|
}, 1000);
|
|
|
}
|
|
|
}, [timer]);
|
|
|
var LoginValidate = function LoginValidate(_, value) {
|
|
|
if (!value) {
|
|
|
return Promise.resolve();
|
|
|
}
|
|
|
if (value.indexOf(" ") > -1) {
|
|
|
return Promise.reject('请输入正确的手机号或邮箱');
|
|
|
}
|
|
|
if (loginRegex.test(value)) {
|
|
|
return Promise.resolve();
|
|
|
} else {
|
|
|
return Promise.reject('请输入正确的手机号或邮箱');
|
|
|
}
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
layout: "vertical",
|
|
|
form: form,
|
|
|
style: style,
|
|
|
initialValues: {
|
|
|
autologin: true,
|
|
|
protool: false
|
|
|
},
|
|
|
onFinish: onFinish,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "login",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入正确的手机号或邮箱'
|
|
|
}, {
|
|
|
validator: LoginValidate
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: RegisterPanel_inputStyle,
|
|
|
autoComplete: "new-login",
|
|
|
size: 'middle',
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u624B\u673A\u53F7/\u90AE\u7BB1\u53F7",
|
|
|
onBlur: function onBlur() {
|
|
|
return onValidateName;
|
|
|
},
|
|
|
onChange: function onChange() {
|
|
|
return form.setFieldsValue({
|
|
|
verify: 0
|
|
|
});
|
|
|
}
|
|
|
})
|
|
|
}), !(globalSetting !== null && globalSetting !== void 0 && (_globalSetting$settin = globalSetting.setting) !== null && _globalSetting$settin !== void 0 && _globalSetting$settin.is_local) && /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "code",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入验证码'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
suffix: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
loading: codeLoading,
|
|
|
type: "link",
|
|
|
onClick: onGetCode,
|
|
|
disabled: timer > 0,
|
|
|
children: [" ", timer === 0 ? '获取验证码' : "".concat(timer, "\u79D2\u53EF\u91CD\u65B0\u83B7\u53D6")]
|
|
|
}),
|
|
|
style: {
|
|
|
paddingRight: 2,
|
|
|
height: 48
|
|
|
},
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",
|
|
|
size: 'middle'
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u957F\u5EA6\u4E3A8-16\u4F4D\u5B57\u7B26"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5B57\u6BCD/\u6570\u5B57\u4EE5\u53CA\u6807\u70B9\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u4E0D\u5141\u8BB8\u6709\u7A7A\u683C\u3001\u4E2D\u6587"
|
|
|
})]
|
|
|
}),
|
|
|
placement: "topRight",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "password",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入8-16位密码,区分大小写、不能使用空格'
|
|
|
}, {
|
|
|
validator: validatePassword
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z.Password, {
|
|
|
autoComplete: "new-password",
|
|
|
style: RegisterPanel_inputStyle,
|
|
|
size: "middle",
|
|
|
placeholder: "\u8BF7\u8F93\u51658~16\u4F4D\u5B57\u7B26\uFF0C\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u7279\u6B8A\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"
|
|
|
// visibilityToggle={false}
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
size: 'middle',
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
block: true,
|
|
|
style: RegisterPanel_inputStyle,
|
|
|
className: "font16",
|
|
|
children: [" ", buttonText, " "]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc",
|
|
|
style: {
|
|
|
paddingTop: 0,
|
|
|
paddingBottom: 35
|
|
|
},
|
|
|
children: ["\u6CE8\u518C\u5E76\u767B\u5F55\u5373\u4EE3\u8868\u60A8\u5DF2\u9605\u8BFB\u5E76\u540C\u610F", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "https://engineer.educoder.net/help?index=4",
|
|
|
target: "_blank",
|
|
|
children: "\u300A\u670D\u52A1\u534F\u8BAE\u6761\u6B3E\u300B"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var RegisterPanel = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var globalSetting = _ref3.globalSetting;
|
|
|
return {
|
|
|
globalSetting: globalSetting
|
|
|
};
|
|
|
})(RegisterComponent));
|
|
|
// EXTERNAL MODULE: ./node_modules/_lodash@4.17.21@lodash/lodash.js
|
|
|
var lodash = __webpack_require__(89392);
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/ResetPassword/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var ResetPassword_inputStyle = {
|
|
|
height: 48
|
|
|
};
|
|
|
var ResetPassword_loginRegex = /(\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b)|(^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$)/i;
|
|
|
var ResetPassword_password = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{8,16}$/;
|
|
|
var ResetPassword_initialState = {
|
|
|
timer: 0
|
|
|
};
|
|
|
var ResetPassword_Types = /*#__PURE__*/function (Types) {
|
|
|
Types[Types["setTimer"] = 0] = "setTimer";
|
|
|
return Types;
|
|
|
}(ResetPassword_Types || {});
|
|
|
function ResetPassword_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case ResetPassword_Types.setTimer:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
timer: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
var ResetPassword_RegisterComponent = function RegisterComponent(_ref) {
|
|
|
var _globalSetting$settin;
|
|
|
var validateName = _ref.validateName,
|
|
|
getCode = _ref.getCode,
|
|
|
register = _ref.register,
|
|
|
_ref$style = _ref.style,
|
|
|
style = _ref$style === void 0 ? {} : _ref$style,
|
|
|
_ref$buttonText = _ref.buttonText,
|
|
|
buttonText = _ref$buttonText === void 0 ? '注册' : _ref$buttonText,
|
|
|
globalSetting = _ref.globalSetting;
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(ResetPassword_reducer, ResetPassword_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
codeLoading = _useState2[0],
|
|
|
setCodeLoading = _useState2[1];
|
|
|
var timer = state.timer;
|
|
|
function onFinish(_x) {
|
|
|
return _onFinish.apply(this, arguments);
|
|
|
}
|
|
|
function _onFinish() {
|
|
|
_onFinish = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(values) {
|
|
|
var login, new_password, code, _yield$register, message, status;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
login = values.login, new_password = values.new_password, code = values.code;
|
|
|
_context3.next = 3;
|
|
|
return register({
|
|
|
login: login,
|
|
|
new_password: new_password,
|
|
|
code: code
|
|
|
});
|
|
|
case 3:
|
|
|
_yield$register = _context3.sent;
|
|
|
message = _yield$register.message;
|
|
|
status = _yield$register.status;
|
|
|
if (!(status < 0)) {
|
|
|
_context3.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
form.setFields([{
|
|
|
name: 'code',
|
|
|
errors: [message]
|
|
|
}]);
|
|
|
return _context3.abrupt("return");
|
|
|
case 9:
|
|
|
location.reload();
|
|
|
// history.replace('/')
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return _onFinish.apply(this, arguments);
|
|
|
}
|
|
|
function onValidateName() {
|
|
|
return _onValidateName.apply(this, arguments);
|
|
|
}
|
|
|
function _onValidateName() {
|
|
|
_onValidateName = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var login, flag, _yield$validateName2, status, message, isOk;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
login = form.getFieldValue('login');
|
|
|
flag = 0;
|
|
|
if (!(!ResetPassword_loginRegex.test(login) || login.indexOf(" ") > -1)) {
|
|
|
_context4.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
form.setFields([{
|
|
|
name: 'login',
|
|
|
errors: ['请输入正确的手机号或邮箱']
|
|
|
}]);
|
|
|
flag = 1;
|
|
|
return _context4.abrupt("return", flag);
|
|
|
case 6:
|
|
|
_context4.next = 8;
|
|
|
return validateName({
|
|
|
login: login,
|
|
|
type: 2
|
|
|
});
|
|
|
case 8:
|
|
|
_yield$validateName2 = _context4.sent;
|
|
|
status = _yield$validateName2.status;
|
|
|
message = _yield$validateName2.message;
|
|
|
isOk = status > 0;
|
|
|
if (isOk) {
|
|
|
flag = 2;
|
|
|
} else {
|
|
|
form.setFields([{
|
|
|
name: 'login',
|
|
|
errors: [message]
|
|
|
}]);
|
|
|
flag = 1;
|
|
|
}
|
|
|
return _context4.abrupt("return", flag);
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return _onValidateName.apply(this, arguments);
|
|
|
}
|
|
|
var onGetCode = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var verify, login, _yield$getCode, status, message;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
verify = form.getFieldValue('verify');
|
|
|
login = form.getFieldValue('login');
|
|
|
_context.next = 4;
|
|
|
return form.validateFields(['login']);
|
|
|
case 4:
|
|
|
if (login) {
|
|
|
_context.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
form.validateFields(['login']);
|
|
|
_context.next = 17;
|
|
|
break;
|
|
|
case 8:
|
|
|
setCodeLoading(true);
|
|
|
_context.next = 11;
|
|
|
return getCode({
|
|
|
login: login,
|
|
|
type: 2,
|
|
|
smscode: (0,util/* setmiyah */.M)(login)
|
|
|
});
|
|
|
case 11:
|
|
|
_yield$getCode = _context.sent;
|
|
|
status = _yield$getCode.status;
|
|
|
message = _yield$getCode.message;
|
|
|
if (status < 0) {
|
|
|
form.setFields([{
|
|
|
name: 'code',
|
|
|
errors: [message]
|
|
|
}]);
|
|
|
}
|
|
|
dispatch({
|
|
|
type: ResetPassword_Types.setTimer,
|
|
|
payload: 60
|
|
|
});
|
|
|
setCodeLoading(false);
|
|
|
case 17:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function onGetCode() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
function validatePassword(_, value) {
|
|
|
if (!value) {
|
|
|
return Promise.resolve();
|
|
|
}
|
|
|
if (!ResetPassword_password.test(value)) {
|
|
|
return Promise.reject('请输入8~16位字符,字母、数字和特殊符号至少包含2种');
|
|
|
}
|
|
|
if (value.indexOf(" ") > -1) {
|
|
|
return Promise.reject('请输入8-16位新密码,区分大小写、不能使用空格');
|
|
|
}
|
|
|
var len = value.length;
|
|
|
if (len >= 8 && len <= 16) {
|
|
|
return Promise.resolve();
|
|
|
} else {
|
|
|
return Promise.reject('请输入8-16位新密码,区分大小写、不能使用空格');
|
|
|
}
|
|
|
}
|
|
|
var verifyValidate = function verifyValidate(_, value) {
|
|
|
return value ? Promise.resolve() : Promise.reject('请拖动滑块验证');
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (timer > 0) {
|
|
|
setTimeout(function () {
|
|
|
dispatch({
|
|
|
type: ResetPassword_Types.setTimer,
|
|
|
payload: timer - 1
|
|
|
});
|
|
|
}, 1000);
|
|
|
}
|
|
|
}, [timer]);
|
|
|
var LoginValidate = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(_, value) {
|
|
|
var _yield$validateName, status, message, isOk;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
if (value) {
|
|
|
_context2.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return", Promise.resolve());
|
|
|
case 2:
|
|
|
if (!(value.indexOf(" ") > -1)) {
|
|
|
_context2.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return", Promise.reject('请输入正确的手机号或邮箱'));
|
|
|
case 4:
|
|
|
if (!ResetPassword_loginRegex.test(value)) {
|
|
|
_context2.next = 18;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 7;
|
|
|
return validateName({
|
|
|
login: value,
|
|
|
type: 2
|
|
|
});
|
|
|
case 7:
|
|
|
_yield$validateName = _context2.sent;
|
|
|
status = _yield$validateName.status;
|
|
|
message = _yield$validateName.message;
|
|
|
isOk = status > 0;
|
|
|
if (!isOk) {
|
|
|
_context2.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return", Promise.resolve());
|
|
|
case 15:
|
|
|
return _context2.abrupt("return", Promise.reject(message));
|
|
|
case 16:
|
|
|
_context2.next = 19;
|
|
|
break;
|
|
|
case 18:
|
|
|
return _context2.abrupt("return", Promise.reject('请输入正确的手机号或邮箱'));
|
|
|
case 19:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function LoginValidate(_x2, _x3) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
layout: "vertical",
|
|
|
form: form,
|
|
|
style: style,
|
|
|
initialValues: {
|
|
|
autologin: true,
|
|
|
protool: false
|
|
|
},
|
|
|
onFinish: (0,lodash.throttle)(onFinish, 2000),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "login",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入正确的手机号或邮箱'
|
|
|
}, {
|
|
|
validator: (0,lodash.throttle)(LoginValidate, 400)
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: ResetPassword_inputStyle,
|
|
|
autoComplete: "new-login",
|
|
|
size: 'middle',
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u624B\u673A\u53F7/\u90AE\u7BB1\u53F7"
|
|
|
// onBlur={() => onValidateName}
|
|
|
,
|
|
|
onChange: function onChange() {
|
|
|
return form.setFieldsValue({
|
|
|
verify: 0
|
|
|
});
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u957F\u5EA6\u4E3A8-16\u4F4D\u5B57\u7B26"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5B57\u6BCD/\u6570\u5B57\u4EE5\u53CA\u6807\u70B9\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u4E0D\u5141\u8BB8\u6709\u7A7A\u683C\u3001\u4E2D\u6587"
|
|
|
})]
|
|
|
}),
|
|
|
placement: "topRight",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "new_password",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入8-16位新密码,区分大小写、不能使用空格'
|
|
|
}, {
|
|
|
validator: validatePassword
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z.Password, {
|
|
|
autoComplete: "new-password",
|
|
|
style: ResetPassword_inputStyle,
|
|
|
size: 'middle',
|
|
|
placeholder: "\u8F93\u51658\uFF5E16\u4F4D\u65B0\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199"
|
|
|
})
|
|
|
})
|
|
|
}), !(globalSetting !== null && globalSetting !== void 0 && (_globalSetting$settin = globalSetting.setting) !== null && _globalSetting$settin !== void 0 && _globalSetting$settin.is_local) && /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "code",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入验证码'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
suffix: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
loading: codeLoading,
|
|
|
type: "link",
|
|
|
onClick: onGetCode,
|
|
|
disabled: timer > 0,
|
|
|
children: [" ", timer === 0 ? '获取验证码' : "".concat(timer, "\u79D2\u53EF\u91CD\u65B0\u83B7\u53D6")]
|
|
|
}),
|
|
|
style: {
|
|
|
paddingRight: 2,
|
|
|
height: 48
|
|
|
},
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",
|
|
|
size: 'middle'
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
size: 'middle',
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
block: true,
|
|
|
style: ResetPassword_inputStyle,
|
|
|
className: "font16",
|
|
|
children: [" ", buttonText, " "]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc",
|
|
|
style: {
|
|
|
paddingTop: 0,
|
|
|
paddingBottom: 20
|
|
|
},
|
|
|
children: ["\u4FEE\u6539\u5E76\u767B\u5F55\u5373\u4EE3\u8868\u60A8\u5DF2\u9605\u8BFB\u5E76\u540C\u610F", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "https://engineer.educoder.net/help?index=4",
|
|
|
target: "_blank",
|
|
|
children: "\u300A\u670D\u52A1\u534F\u8BAE\u6761\u6B3E\u300B"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var ResetPassword = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var globalSetting = _ref4.globalSetting;
|
|
|
return {
|
|
|
globalSetting: globalSetting
|
|
|
};
|
|
|
})(ResetPassword_RegisterComponent));
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/OauthPanel/wechat.svg
|
|
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var __defProp = Object.defineProperty;
|
|
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var __defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? __defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var __spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
if (__getOwnPropSymbols) {
|
|
|
var _iterator = _createForOfIteratorHelper(__getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgWechat = function SvgWechat(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", __spreadValues({
|
|
|
id: "wechat_svg__\\u56FE\\u5C42_1",
|
|
|
xmlns: "http://www.w3.org/2000/svg",
|
|
|
x: 0,
|
|
|
y: 0,
|
|
|
viewBox: "0 0 66 66",
|
|
|
style: {
|
|
|
enableBackground: "new 0 0 66 66"
|
|
|
},
|
|
|
xmlSpace: "preserve"
|
|
|
}, props), /* @__PURE__ */React.createElement("style", null, ".wechat_svg__st1{fill:#00b913}"), /* @__PURE__ */React.createElement("g", {
|
|
|
id: "wechat_svg__\\u9875\\u9762-1"
|
|
|
}, /* @__PURE__ */React.createElement("g", {
|
|
|
id: "wechat_svg__\\u767B\\u5F55_x2F_\\u6CE8\\u518C",
|
|
|
transform: "translate(-1081 -380)"
|
|
|
}, /* @__PURE__ */React.createElement("g", {
|
|
|
id: "wechat_svg__\\u7F16\\u7EC4-18\\u5907\\u4EFD",
|
|
|
transform: "translate(1063 238)"
|
|
|
}, /* @__PURE__ */React.createElement("g", {
|
|
|
id: "wechat_svg__\\u7F16\\u7EC4-12",
|
|
|
transform: "translate(18 142)"
|
|
|
}, /* @__PURE__ */React.createElement("g", {
|
|
|
id: "wechat_svg__\\u7F16\\u7EC4-10"
|
|
|
}, /* @__PURE__ */React.createElement("circle", {
|
|
|
id: "wechat_svg__\\u692D\\u5706\\u5F62",
|
|
|
cx: 33,
|
|
|
cy: 33,
|
|
|
r: 33,
|
|
|
style: {
|
|
|
fillRule: "evenodd",
|
|
|
clipRule: "evenodd",
|
|
|
fill: "#c6f4c9"
|
|
|
}
|
|
|
}), /* @__PURE__ */React.createElement("g", {
|
|
|
id: "wechat_svg__\\u7F16\\u7EC4",
|
|
|
transform: "translate(12 15.429)"
|
|
|
}, /* @__PURE__ */React.createElement("path", {
|
|
|
id: "wechat_svg__\\u8DEF\\u5F84",
|
|
|
className: "wechat_svg__st1",
|
|
|
d: "M16.3 22.8c0-6.6 6-12.1 13.7-12.1h.4C29.1 4.6 22.7 0 15.4 0 7.2 0 .4 5.8.4 13.1c0 4.3 2.2 7.7 6 10.5l-1.5 4.7 5.2-2.7c1.7.4 3.5.7 5.3.8.5 0 .9 0 1.4-.1l.1-.1c-.4-1.1-.6-2.3-.6-3.4z"
|
|
|
}), /* @__PURE__ */React.createElement("path", {
|
|
|
id: "wechat_svg__\\u8DEF\\u5F84_1_",
|
|
|
className: "wechat_svg__st1",
|
|
|
d: "M42.4 22.4c0-6.2-5.8-11.2-12.4-11.2-7 0-12.4 5.1-12.4 11.2S23.1 33.6 30 33.6c1.5-.1 3-.3 4.4-.8l4 2.3-1-3.8c2.8-2.3 5-5.5 5-8.9z"
|
|
|
}), /* @__PURE__ */React.createElement("path", {
|
|
|
id: "wechat_svg__\\u5F62\\u72B6",
|
|
|
d: "M21.6 6c1-.1 1.8.7 1.9 1.7V8c.1 1-.7 1.9-1.6 2h-.2c-1.1.1-2.1-.8-2.2-2 0-1.2 1-2.1 2.1-2zM11.2 9.9C10.1 10 9.1 9.2 9 8c.1-1.2 1.1-2.1 2.2-2 1-.1 1.8.7 1.8 1.8V8c.1 1-.7 1.9-1.6 2h-.2zm15.2 10.7c-.8-.1-1.4-.7-1.5-1.6.1-.8.7-1.5 1.5-1.6.9-.1 1.7.6 1.9 1.6-.2 1-1 1.7-1.9 1.6zm8.2 0c-.8-.1-1.4-.7-1.5-1.6.1-.8.7-1.5 1.5-1.6.9-.1 1.7.6 1.9 1.6-.2 1-1 1.7-1.9 1.6z",
|
|
|
style: {
|
|
|
fill: "#fff"
|
|
|
}
|
|
|
}))))))));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ var wechat = ("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLlm77lsYJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgNjYgNjYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDY2IDY2IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnN0MXtmaWxsOiMwMGI5MTN9PC9zdHlsZT48ZyBpZD0i6aG16Z2iLTEiPjxnIGlkPSLnmbvlvZVfeDJGX+azqOWGjCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwODEgLTM4MCkiPjxnIGlkPSLnvJbnu4QtMTjlpIfku70iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwNjMgMjM4KSI+PGcgaWQ9Iue8lue7hC0xMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTggMTQyKSI+PGcgaWQ9Iue8lue7hC0xMCI+PGNpcmNsZSBpZD0i5qSt5ZyG5b2iIiBjeD0iMzMiIGN5PSIzMyIgcj0iMzMiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNjNmY0YzkiLz48ZyBpZD0i57yW57uEIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMiAxNS40MjkpIj48cGF0aCBpZD0i6Lev5b6EIiBjbGFzcz0ic3QxIiBkPSJNMTYuMyAyMi44YzAtNi42IDYtMTIuMSAxMy43LTEyLjFoLjRDMjkuMSA0LjYgMjIuNyAwIDE1LjQgMCA3LjIgMCAuNCA1LjguNCAxMy4xYzAgNC4zIDIuMiA3LjcgNiAxMC41bC0xLjUgNC43IDUuMi0yLjdjMS43LjQgMy41LjcgNS4zLjguNSAwIC45IDAgMS40LS4xbC4xLS4xYy0uNC0xLjEtLjYtMi4zLS42LTMuNHoiLz48cGF0aCBpZD0i6Lev5b6EXzFfIiBjbGFzcz0ic3QxIiBkPSJNNDIuNCAyMi40YzAtNi4yLTUuOC0xMS4yLTEyLjQtMTEuMi03IDAtMTIuNCA1LjEtMTIuNCAxMS4yUzIzLjEgMzMuNiAzMCAzMy42YzEuNS0uMSAzLS4zIDQuNC0uOGw0IDIuMy0xLTMuOGMyLjgtMi4zIDUtNS41IDUtOC45eiIvPjxwYXRoIGlkPSLlvaLnirYiIGQ9Ik0yMS42IDZjMS0uMSAxLjguNyAxLjkgMS43VjhjLjEgMS0uNyAxLjktMS42IDJoLS4yYy0xLjEuMS0yLjEtLjgtMi4yLTIgMC0xLjIgMS0yLjEgMi4xLTJ6TTExLjIgOS45QzEwLjEgMTAgOS4xIDkuMiA5IDhjLjEtMS4yIDEuMS0yLjEgMi4yLTIgMS0uMSAxLjguNyAxLjggMS44VjhjLjEgMS0uNyAxLjktMS42IDJoLS4yem0xNS4yIDEwLjdjLS44LS4xLTEuNC0uNy0xLjUtMS42LjEtLjguNy0xLjUgMS41LTEuNi45LS4xIDEuNy42IDEuOSAxLjYtLjIgMS0xIDEuNy0xLjkgMS42em04LjIgMGMtLjgtLjEtMS40LS43LTEuNS0xLjYuMS0uOC43LTEuNSAxLjUtMS42LjktLjEgMS43LjYgMS45IDEuNi0uMiAxLTEgMS43LTEuOSAxLjZ6IiBzdHlsZT0iZmlsbDojZmZmIi8+PC9nPjwvZz48L2c+PC9nPjwvZz48L2c+PC9zdmc+");
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/OauthPanel/qq.svg
|
|
|
function qq_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = qq_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function qq_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return qq_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return qq_arrayLikeToArray(o, minLen); }
|
|
|
function qq_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var qq_defProp = Object.defineProperty;
|
|
|
var qq_getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var qq_hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var qq_propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var qq_defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? qq_defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var qq_spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (qq_hasOwnProp.call(b, prop)) qq_defNormalProp(a, prop, b[prop]);
|
|
|
if (qq_getOwnPropSymbols) {
|
|
|
var _iterator = qq_createForOfIteratorHelper(qq_getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (qq_propIsEnum.call(b, prop)) qq_defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgQq = function SvgQq(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", qq_spreadValues({
|
|
|
className: "qq_svg__icon",
|
|
|
viewBox: "0 0 1024 1024",
|
|
|
xmlns: "http://www.w3.org/2000/svg",
|
|
|
width: 200,
|
|
|
height: 200
|
|
|
}, props), /* @__PURE__ */React.createElement("path", {
|
|
|
d: "M512 0C229.356 0 0 229.356 0 512s229.356 512 512 512 512-229.356 512-512S794.644 0 512 0zm235.75 647.603c-10.7 5.417-27.417-6.963-43.34-30.157-6.267 25.262-21.673 47.95-43.607 66.253 23.244 8.505 38.123 22.17 38.123 37.898 0 25.519-40.99 46.403-91.387 46.403-45.43 0-83.287-17.014-90.076-38.927h-10.967C499.446 751.243 461.85 768 416.42 768c-50.396 0-91.387-20.623-91.387-46.403 0-15.728 15.145-29.388 38.118-37.898-21.929-18.304-37.596-41.252-43.602-66.253-15.667 23.194-32.634 35.83-43.34 30.157-15.668-7.987-12.534-51.046 7.05-96.159 15.145-35.317 36.03-61.614 51.697-67.287-.262-2.319-.262-4.638-.262-6.707 0-13.66 3.917-26.291 10.445-36.608v-2.314c0-6.19 1.567-12.119 4.178-17.275C353.23 329.216 414.07 256 512.241 256s159.006 73.216 162.923 165.253a38.374 38.374 0 0 1 4.178 17.275v2.32c6.528 10.311 10.445 22.942 10.445 36.607 0 2.32 0 4.64-.261 6.702 15.923 5.673 36.557 31.97 51.696 67.287 19.062 45.118 22.196 88.167 6.528 96.16z",
|
|
|
fill: "#378AFE"
|
|
|
}));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ var qq = ("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTUxMiAwQzIyOS4zNTYgMCAwIDIyOS4zNTYgMCA1MTJzMjI5LjM1NiA1MTIgNTEyIDUxMiA1MTItMjI5LjM1NiA1MTItNTEyUzc5NC42NDQgMCA1MTIgMHptMjM1Ljc1IDY0Ny42MDNjLTEwLjcgNS40MTctMjcuNDE3LTYuOTYzLTQzLjM0LTMwLjE1Ny02LjI2NyAyNS4yNjItMjEuNjczIDQ3Ljk1LTQzLjYwNyA2Ni4yNTMgMjMuMjQ0IDguNTA1IDM4LjEyMyAyMi4xNyAzOC4xMjMgMzcuODk4IDAgMjUuNTE5LTQwLjk5IDQ2LjQwMy05MS4zODcgNDYuNDAzLTQ1LjQzIDAtODMuMjg3LTE3LjAxNC05MC4wNzYtMzguOTI3aC0xMC45NjdDNDk5LjQ0NiA3NTEuMjQzIDQ2MS44NSA3NjggNDE2LjQyIDc2OGMtNTAuMzk2IDAtOTEuMzg3LTIwLjYyMy05MS4zODctNDYuNDAzIDAtMTUuNzI4IDE1LjE0NS0yOS4zODggMzguMTE4LTM3Ljg5OC0yMS45MjktMTguMzA0LTM3LjU5Ni00MS4yNTItNDMuNjAyLTY2LjI1My0xNS42NjcgMjMuMTk0LTMyLjYzNCAzNS44My00My4zNCAzMC4xNTctMTUuNjY4LTcuOTg3LTEyLjUzNC01MS4wNDYgNy4wNS05Ni4xNTkgMTUuMTQ1LTM1LjMxNyAzNi4wMy02MS42MTQgNTEuNjk3LTY3LjI4Ny0uMjYyLTIuMzE5LS4yNjItNC42MzgtLjI2Mi02LjcwNyAwLTEzLjY2IDMuOTE3LTI2LjI5MSAxMC40NDUtMzYuNjA4di0yLjMxNGMwLTYuMTkgMS41NjctMTIuMTE5IDQuMTc4LTE3LjI3NUMzNTMuMjMgMzI5LjIxNiA0MTQuMDcgMjU2IDUxMi4yNDEgMjU2czE1OS4wMDYgNzMuMjE2IDE2Mi45MjMgMTY1LjI1M2EzOC4zNzQgMzguMzc0IDAgMCAxIDQuMTc4IDE3LjI3NXYyLjMyYzYuNTI4IDEwLjMxMSAxMC40NDUgMjIuOTQyIDEwLjQ0NSAzNi42MDcgMCAyLjMyIDAgNC42NC0uMjYxIDYuNzAyIDE1LjkyMyA1LjY3MyAzNi41NTcgMzEuOTcgNTEuNjk2IDY3LjI4NyAxOS4wNjIgNDUuMTE4IDIyLjE5NiA4OC4xNjcgNi41MjggOTYuMTZ6IiBmaWxsPSIjMzc4QUZFIi8+PC9zdmc+");
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/OauthPanel/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var OauthPanelmodules = ({"other-login":"other-login___Jd48Z","btn-link":"btn-link___MhTA6","wechat-qrcode":"wechat-qrcode___bLWkh","driver":"driver___IuicK"});
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/OauthPanel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var HOST = window.location.host;
|
|
|
var redirect_uri = env/* default */.Z.QQLoginCB;
|
|
|
/* harmony default export */ var OauthPanel = (function (_ref) {
|
|
|
var onWechatLogin = _ref.onWechatLogin,
|
|
|
setType = _ref.setType,
|
|
|
loginType = _ref.loginType;
|
|
|
function onQQLogin() {
|
|
|
if ((0,util/* isPc */.b9)()) {
|
|
|
window.location.href = "https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101508858&redirect_uri=".concat(redirect_uri, "%2fotherloginqq&state=null,").concat(HOST, "&response_type=code");
|
|
|
} else {
|
|
|
(0,util/* openNewWindow */.xg)("https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=716027609&pt_3rd_aid=101508858&daid=383&pt_skey_valid=0&style=35&s_url=http%3A%2F%2Fconnect.qq.com&refer_cgi=authorize&which=&client_id=101508858&response_type=code&scope=get_user_info&redirect_uri=".concat(redirect_uri, "%2fotherloginqq&state=null,").concat(HOST, "&response_type=code"));
|
|
|
}
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [(loginType === 1 || loginType === 2) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
marginTop: loginType === 4 ? 20 : 92,
|
|
|
marginBottom: 60
|
|
|
},
|
|
|
className: "font16 tc",
|
|
|
children: ["\u6CA1\u6709\u8D26\u53F7\uFF1F", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return setType(3);
|
|
|
},
|
|
|
className: "c-blue current",
|
|
|
children: "\u514D\u8D39\u6CE8\u518C"
|
|
|
})]
|
|
|
}), (loginType === 3 || loginType === 4 || loginType === 5) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
marginTop: 92,
|
|
|
marginBottom: 60
|
|
|
},
|
|
|
className: "font16 tc",
|
|
|
children: ["\u5DF2\u6709\u8D26\u53F7\uFF1F", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return setType(1);
|
|
|
},
|
|
|
className: "c-blue current",
|
|
|
children: "\u7ACB\u5373\u767B\u5F55"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: OauthPanelmodules.driver,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: '#444444'
|
|
|
},
|
|
|
children: "\u5FEB\u901F\u767B\u5F55"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: OauthPanelmodules['other-login'],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u5FAE\u4FE1\u767B\u5F55",
|
|
|
onClick: onWechatLogin,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: wechat,
|
|
|
alt: "\u5FAE\u4FE1",
|
|
|
width: 66
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "qq\u767B\u5F55",
|
|
|
onClick: onQQLogin,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: qq,
|
|
|
alt: "QQ",
|
|
|
width: 66
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
function WechatQrcode(_ref2) {
|
|
|
var onBack = _ref2.onBack,
|
|
|
setType = _ref2.setType;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
overflow: "hidden",
|
|
|
width: 300,
|
|
|
height: 300,
|
|
|
margin: "20px auto 0 auto"
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
className: OauthPanelmodules['wechat-qrcode'],
|
|
|
frameBorder: "0",
|
|
|
sandbox: "allow-scripts allow-same-origin allow-top-navigation",
|
|
|
scrolling: "no",
|
|
|
src: "https://open.weixin.qq.com/connect/qrconnect?appid=wx6b119e2d829c13fa&redirect_uri=".concat(redirect_uri, "%2fotherloginstart&response_type=code&scope=snsapi_login&state=null,").concat(HOST, "#wechat_redirect")
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
marginTop: 17,
|
|
|
marginBottom: 10
|
|
|
},
|
|
|
className: "font16 bold tc c-blue current",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return setType(1);
|
|
|
},
|
|
|
style: {
|
|
|
borderBottom: "2px solid #0152d9"
|
|
|
},
|
|
|
children: "\u8FD4\u56DE\u8D26\u53F7\u767B\u5F55"
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/ChangPassword/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var ChangPassword_inputStyle = {
|
|
|
height: 48
|
|
|
};
|
|
|
var ChangPassword_loginRegex = /(\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b)|(^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$)/i;
|
|
|
var ChangPassword_password = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{8,16}$/;
|
|
|
var ChangPassword_initialState = {
|
|
|
timer: 0
|
|
|
};
|
|
|
var ChangPassword_Types = /*#__PURE__*/function (Types) {
|
|
|
Types[Types["setTimer"] = 0] = "setTimer";
|
|
|
return Types;
|
|
|
}(ChangPassword_Types || {});
|
|
|
function ChangPassword_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case ChangPassword_Types.setTimer:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
timer: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
var ChangPassword_RegisterComponent = function RegisterComponent(_ref) {
|
|
|
var validateName = _ref.validateName,
|
|
|
getCode = _ref.getCode,
|
|
|
register = _ref.register,
|
|
|
_ref$style = _ref.style,
|
|
|
style = _ref$style === void 0 ? {} : _ref$style,
|
|
|
_ref$buttonText = _ref.buttonText,
|
|
|
buttonText = _ref$buttonText === void 0 ? '注册' : _ref$buttonText,
|
|
|
globalSetting = _ref.globalSetting;
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useReducer = (0,_react_17_0_2_react.useReducer)(ChangPassword_reducer, ChangPassword_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
codeLoading = _useState2[0],
|
|
|
setCodeLoading = _useState2[1];
|
|
|
var timer = state.timer;
|
|
|
function onFinish(_x) {
|
|
|
return _onFinish.apply(this, arguments);
|
|
|
}
|
|
|
function _onFinish() {
|
|
|
_onFinish = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(values) {
|
|
|
var old_password, newPassword, _yield$register, message, status;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
old_password = values.old_password, newPassword = values.newPassword;
|
|
|
_context.next = 3;
|
|
|
return register({
|
|
|
old_password: old_password,
|
|
|
newPassword: newPassword
|
|
|
});
|
|
|
case 3:
|
|
|
_yield$register = _context.sent;
|
|
|
message = _yield$register.message;
|
|
|
status = _yield$register.status;
|
|
|
if (!(status < 0)) {
|
|
|
_context.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
form.setFields([{
|
|
|
name: 'code',
|
|
|
errors: [message]
|
|
|
}]);
|
|
|
return _context.abrupt("return");
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onFinish.apply(this, arguments);
|
|
|
}
|
|
|
var inputNewPassword = function inputNewPassword(rule, value, callback) {
|
|
|
if (!value) {
|
|
|
callback("请输入8-16位字符的新密码,区分大小写!");
|
|
|
} else if (value.indexOf(" ") > -1) {
|
|
|
callback('请输入8-16位密码,区分大小写、不能使用空格');
|
|
|
} else if (value.length < 8 || value.length > 16) {
|
|
|
callback("请输入8-16位字符的新密码,区分大小写!");
|
|
|
} else if (!ChangPassword_password.test(value)) {
|
|
|
callback("请输入8~16位字符,字母、数字和特殊符号至少包含2种");
|
|
|
} else {
|
|
|
callback();
|
|
|
}
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (timer > 0) {
|
|
|
setTimeout(function () {
|
|
|
dispatch({
|
|
|
type: ChangPassword_Types.setTimer,
|
|
|
payload: timer - 1
|
|
|
});
|
|
|
}, 1000);
|
|
|
}
|
|
|
}, [timer]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
layout: "vertical",
|
|
|
form: form,
|
|
|
style: style,
|
|
|
initialValues: {
|
|
|
autologin: true,
|
|
|
protool: false
|
|
|
},
|
|
|
onFinish: onFinish,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "old_password",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入8~16位密码,区分大小写'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: ChangPassword_inputStyle,
|
|
|
autoComplete: "new-login",
|
|
|
size: 'middle',
|
|
|
type: "password",
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u65E7\u5BC6\u7801"
|
|
|
// onBlur={() => onValidateName}
|
|
|
,
|
|
|
onChange: function onChange() {
|
|
|
return form.setFieldsValue({
|
|
|
verify: 0
|
|
|
});
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u957F\u5EA6\u4E3A8-16\u4F4D\u5B57\u7B26"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5B57\u6BCD/\u6570\u5B57\u4EE5\u53CA\u6807\u70B9\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u4E0D\u5141\u8BB8\u6709\u7A7A\u683C\u3001\u4E2D\u6587"
|
|
|
})]
|
|
|
}),
|
|
|
placement: "topRight",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "newPassword",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入8-16位新密码,区分大小写、不能使用空格'
|
|
|
}, {
|
|
|
validator: inputNewPassword
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z.Password, {
|
|
|
autoComplete: "new-password",
|
|
|
style: ChangPassword_inputStyle,
|
|
|
size: 'middle',
|
|
|
placeholder: "\u8F93\u51658\uFF5E16\u4F4D\u65B0\u5BC6\u7801\uFF0C\u533A\u5206\u5927\u5C0F\u5199"
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u957F\u5EA6\u4E3A8-16\u4F4D\u5B57\u7B26"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5B57\u6BCD/\u6570\u5B57\u4EE5\u53CA\u6807\u70B9\u7B26\u53F7\u81F3\u5C11\u5305\u542B2\u79CD"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u4E0D\u5141\u8BB8\u6709\u7A7A\u683C\u3001\u4E2D\u6587"
|
|
|
})]
|
|
|
}),
|
|
|
placement: "topRight",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "againPassword",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请再次输入新密码'
|
|
|
}, {
|
|
|
validator: function validator(rule, value, callback) {
|
|
|
if (value != form.getFieldsValue().newPassword) {
|
|
|
callback("两次输入的新密码必须一致!");
|
|
|
} else {
|
|
|
callback();
|
|
|
}
|
|
|
}
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z.Password, {
|
|
|
autoComplete: "new-password",
|
|
|
style: ChangPassword_inputStyle,
|
|
|
size: 'middle',
|
|
|
placeholder: "\u8BF7\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801"
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.ZP, {
|
|
|
size: 'middle',
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
block: true,
|
|
|
style: ChangPassword_inputStyle,
|
|
|
className: "font16",
|
|
|
children: [" ", buttonText, " "]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc",
|
|
|
style: {
|
|
|
paddingTop: 0,
|
|
|
paddingBottom: 20
|
|
|
},
|
|
|
children: ["\u4FEE\u6539\u5E76\u767B\u5F55\u5373\u4EE3\u8868\u60A8\u5DF2\u9605\u8BFB\u5E76\u540C\u610F", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "https://engineer.educoder.net/help?index=4",
|
|
|
target: "_blank",
|
|
|
children: "\u300A\u670D\u52A1\u534F\u8BAE\u6761\u6B3E\u300B"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var ChangPassword = ((0,_umi_production_exports.connect)(function (_ref2) {
|
|
|
var globalSetting = _ref2.globalSetting;
|
|
|
return {
|
|
|
globalSetting: globalSetting
|
|
|
};
|
|
|
})(ChangPassword_RegisterComponent));
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/tabs/index.js + 24 modules
|
|
|
var tabs = __webpack_require__(99313);
|
|
|
// 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/col/index.js
|
|
|
var col = __webpack_require__(43604);
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/LoginPanel/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var LoginPanelmodules = ({"login-panel-wrapper2":"login-panel-wrapper2___HuMNJ","ant-form-item-explain":"ant-form-item-explain___c1FeE","ant-form-item":"ant-form-item___qb60e","ant-form-item-with-help":"ant-form-item-with-help___NeAwJ","login-panel-right-wrp":"login-panel-right-wrp___vWD_i","res-error-values":"res-error-values___hV1lz","tabs":"tabs___EwOAX"});
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/LoginPanel/feiteng.png
|
|
|
var feiteng_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/components/LoginPanel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TabPane = tabs/* default */.Z.TabPane;
|
|
|
/* harmony default export */ var LoginPanel = (function (_ref) {
|
|
|
var dispatch = _ref.dispatch,
|
|
|
is_main_site = _ref.is_main_site,
|
|
|
is_local = _ref.is_local,
|
|
|
_ref$style = _ref.style,
|
|
|
style = _ref$style === void 0 ? {} : _ref$style;
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
wechatQrcode = _useState2[0],
|
|
|
setWechatQrcode = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)('1'),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
type = _useState4[0],
|
|
|
setType = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(1),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
loginType = _useState6[0],
|
|
|
setLoginType = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
username = _useState8[0],
|
|
|
setusername = _useState8[1];
|
|
|
function onBack() {
|
|
|
setLoginType(1);
|
|
|
setWechatQrcode(false);
|
|
|
}
|
|
|
function onWechatLogin() {
|
|
|
setLoginType(2);
|
|
|
setWechatQrcode(true);
|
|
|
}
|
|
|
function callback(key) {
|
|
|
console.log(key);
|
|
|
setType(key);
|
|
|
}
|
|
|
var loginOption = {
|
|
|
buttonText: '登 录',
|
|
|
validateName: service_user/* validateName */.Ol,
|
|
|
getCode: service_user/* getValidateCode */.o1,
|
|
|
register: function () {
|
|
|
var _register = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(values) {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,service_user/* LoginForPhone */.Gq)({
|
|
|
phone: values.login,
|
|
|
code: values.code
|
|
|
});
|
|
|
case 2:
|
|
|
response = _context.sent;
|
|
|
if (!(response.status === 0)) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
// message.info('注册并绑定成功')
|
|
|
if (response !== null && response !== void 0 && response.show) {
|
|
|
localStorage.setItem('extension-modal', 'exist');
|
|
|
localStorage.setItem('extension-date', response === null || response === void 0 ? void 0 : response.start_date);
|
|
|
} else {
|
|
|
localStorage.removeItem('extension-modal');
|
|
|
}
|
|
|
return _context.abrupt("return", '/');
|
|
|
case 6:
|
|
|
return _context.abrupt("return", response);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function register(_x) {
|
|
|
return _register.apply(this, arguments);
|
|
|
}
|
|
|
return register;
|
|
|
}()
|
|
|
};
|
|
|
var registerOption = {
|
|
|
buttonText: '注册并登录',
|
|
|
validateName: service_user/* validateName */.Ol,
|
|
|
getCode: service_user/* getValidateCode */.o1,
|
|
|
register: function () {
|
|
|
var _register3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(values) {
|
|
|
var response, addinfo;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,service_user/* register */.z2)(objectSpread2_default()({}, values));
|
|
|
case 2:
|
|
|
response = _context2.sent;
|
|
|
if (!(response.status === 0)) {
|
|
|
_context2.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
//代表新注册用户
|
|
|
addinfo = localStorage.getItem('addinfo');
|
|
|
if (addinfo === '1') {
|
|
|
localStorage.setItem('addinfo', '2');
|
|
|
} else {
|
|
|
localStorage.setItem('registeruser', '1');
|
|
|
}
|
|
|
localStorage.removeItem('extension-modal');
|
|
|
message/* default */.ZP.info('注册并登陆成功');
|
|
|
return _context2.abrupt("return", '/');
|
|
|
case 9:
|
|
|
return _context2.abrupt("return", response);
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function register(_x2) {
|
|
|
return _register3.apply(this, arguments);
|
|
|
}
|
|
|
return register;
|
|
|
}()
|
|
|
};
|
|
|
var Password = {
|
|
|
buttonText: '修改密码',
|
|
|
validateName: service_user/* validateName */.Ol,
|
|
|
getCode: service_user/* getValidateCode */.o1,
|
|
|
register: function () {
|
|
|
var _register4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(values) {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.next = 2;
|
|
|
return (0,service_user/* changPassword */.Ex)(objectSpread2_default()({
|
|
|
login: username
|
|
|
}, values));
|
|
|
case 2:
|
|
|
response = _context3.sent;
|
|
|
message/* default */.ZP.info('修改密码成功');
|
|
|
return _context3.abrupt("return", response);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
function register(_x3) {
|
|
|
return _register4.apply(this, arguments);
|
|
|
}
|
|
|
return register;
|
|
|
}()
|
|
|
};
|
|
|
var resetOption = {
|
|
|
buttonText: '修改并登录',
|
|
|
validateName: service_user/* validateName */.Ol,
|
|
|
getCode: service_user/* getValidateCode */.o1,
|
|
|
register: function () {
|
|
|
var _register5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(values) {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
values.new_password_confirmation = values.new_password;
|
|
|
_context4.next = 3;
|
|
|
return (0,service_user/* resetPassword */.c0)(objectSpread2_default()({}, values));
|
|
|
case 3:
|
|
|
response = _context4.sent;
|
|
|
if (!(response.status === 0)) {
|
|
|
_context4.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
if (response !== null && response !== void 0 && response.show) {
|
|
|
localStorage.setItem('extension-modal', 'exist');
|
|
|
localStorage.setItem('extension-date', response === null || response === void 0 ? void 0 : response.start_date);
|
|
|
} else {
|
|
|
localStorage.removeItem('extension-modal');
|
|
|
}
|
|
|
message/* default */.ZP.info('修改成功');
|
|
|
return _context4.abrupt("return", '/');
|
|
|
case 8:
|
|
|
return _context4.abrupt("return", response);
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
function register(_x4) {
|
|
|
return _register5.apply(this, arguments);
|
|
|
}
|
|
|
return register;
|
|
|
}()
|
|
|
};
|
|
|
var loginDom = (0,_react_17_0_2_react.useCallback)(function () {
|
|
|
switch (loginType) {
|
|
|
case 1:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(tabs/* default */.Z, {
|
|
|
defaultActiveKey: type,
|
|
|
onChange: callback,
|
|
|
className: LoginPanelmodules.tabs,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(TabPane, {
|
|
|
tab: "\u8D26\u53F7\u767B\u5F55",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt20",
|
|
|
children: type === '1' && /*#__PURE__*/(0,jsx_runtime.jsx)(LoginForm, {
|
|
|
setusername: setusername,
|
|
|
setType: setLoginType
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
position: 'absolute',
|
|
|
top: '-72px',
|
|
|
right: '27px'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
target: "_blank",
|
|
|
href: "https://www.phytium.com.cn/oauth2/authorize/?state=RumxLYznjCgyUXUoEfayOoTrjVWUP7qM140KJKdJ&client_id=RumxLYznjCgyUXUoEfayOoTrjVWUP7qM140KJKdJ&response_type=code",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: feiteng_namespaceObject,
|
|
|
width: 120
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}, "1")
|
|
|
});
|
|
|
break;
|
|
|
case 2:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(WechatQrcode, {
|
|
|
setType: setLoginType,
|
|
|
onBack: onBack
|
|
|
});
|
|
|
break;
|
|
|
case 3:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "ml40",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h1", {
|
|
|
className: "font18 mb20 mt35",
|
|
|
children: "\u65B0\u7528\u6237\u6CE8\u518C"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RegisterPanel, objectSpread2_default()({}, registerOption))]
|
|
|
});
|
|
|
break;
|
|
|
case 4:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "ml40",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h1", {
|
|
|
className: "font18 mb20 mt35",
|
|
|
children: "\u627E\u56DE\u5BC6\u7801"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(ResetPassword, objectSpread2_default()({}, resetOption))]
|
|
|
});
|
|
|
break;
|
|
|
case 5:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "ml40",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h1", {
|
|
|
className: "font18 mb20 mt35",
|
|
|
children: "\u4FEE\u6539\u5BC6\u7801"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(ChangPassword, objectSpread2_default()({}, Password))]
|
|
|
});
|
|
|
break;
|
|
|
}
|
|
|
}, [loginType, type]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: LoginPanelmodules['login-panel-wrapper2'],
|
|
|
style: style,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: loginDom()
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "295px",
|
|
|
className: LoginPanelmodules['login-panel-right-wrp'],
|
|
|
children: !is_local && /*#__PURE__*/(0,jsx_runtime.jsx)(OauthPanel, {
|
|
|
loginType: loginType,
|
|
|
setType: setLoginType,
|
|
|
onWechatLogin: onWechatLogin
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/PopLogin.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var PopLoginmodules = ({"popLogin":"popLogin___R8wQQ"});
|
|
|
;// CONCATENATED MODULE: ./src/components/User/PopLoginRegister/PopLogin.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var PopLogin_LoginPopComponents = function LoginPopComponents(_ref) {
|
|
|
var _globalSetting$settin, _globalSetting$settin2;
|
|
|
var user = _ref.user,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var onCancel = function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'user/showPopLogin',
|
|
|
payload: {
|
|
|
showPopLogin: false,
|
|
|
showClosable: false
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var is_main_site = (_globalSetting$settin = globalSetting.setting) === null || _globalSetting$settin === void 0 ? void 0 : _globalSetting$settin.main_site;
|
|
|
var is_local = (_globalSetting$settin2 = globalSetting.setting) === null || _globalSetting$settin2 === void 0 ? void 0 : _globalSetting$settin2.is_local;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true
|
|
|
// title={<div>
|
|
|
// <span>账号登录</span>
|
|
|
// <span className="ml50">验证码登录</span>
|
|
|
// </div>}
|
|
|
,
|
|
|
visible: user.showPopLogin,
|
|
|
footer: null,
|
|
|
width: !is_local ? 765 : 420,
|
|
|
keyboard: false,
|
|
|
maskClosable: false,
|
|
|
wrapClassName: PopLoginmodules.popLogin,
|
|
|
closable: user.showClosable,
|
|
|
onCancel: onCancel,
|
|
|
children: user.showPopLogin && /*#__PURE__*/(0,jsx_runtime.jsx)(LoginPanel, {
|
|
|
is_main_site: is_main_site,
|
|
|
is_local: is_local
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var PopLogin = ((0,_umi_production_exports.connect)(function (_ref2) {
|
|
|
var user = _ref2.user,
|
|
|
loading = _ref2.loading,
|
|
|
globalSetting = _ref2.globalSetting;
|
|
|
return {
|
|
|
user: user,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(PopLogin_LoginPopComponents));
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(36057);
|
|
|
;// CONCATENATED MODULE: ./src/components/User/BindAccountPanel/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var BindAccountPanelmodules = ({"popLogin":"popLogin___u08I8","tips":"tips___U2xQw"});
|
|
|
;// CONCATENATED MODULE: ./src/components/User/BindAccountPanel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//手机号、邮箱、密码的正则
|
|
|
var phoneReg = /^1\d{10}$/;
|
|
|
var emailReg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;
|
|
|
var passwordReg = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{8,16}$/;
|
|
|
var BindAccountPanel = function BindAccountPanel(_ref) {
|
|
|
var user = _ref.user,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var inputStyle = {
|
|
|
height: 48,
|
|
|
borderRadius: 4
|
|
|
};
|
|
|
var _Form$useForm = es_form/* default */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var onCancel = function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'user/setBindAccountModal',
|
|
|
payload: {
|
|
|
bindAccountModalVisible: false
|
|
|
}
|
|
|
});
|
|
|
form.resetFields();
|
|
|
};
|
|
|
var Validate = function Validate(_, value) {
|
|
|
if (!value) {
|
|
|
return Promise.resolve();
|
|
|
}
|
|
|
if (value.indexOf(' ') > -1) {
|
|
|
return Promise.reject('请输入正确的手机号或邮箱');
|
|
|
}
|
|
|
if (phoneReg.test(value) || emailReg.test(value)) {
|
|
|
return Promise.resolve();
|
|
|
} else {
|
|
|
return Promise.reject('请输入正确的手机号或邮箱');
|
|
|
}
|
|
|
};
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(60),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
timer = _useState2[0],
|
|
|
setTimer = _useState2[1];
|
|
|
var getCodeBtnDisabled = (0,_react_17_0_2_react.useMemo)(function () {
|
|
|
return timer < 60 && timer > 0;
|
|
|
}, [timer]);
|
|
|
var intervalId = (0,_react_17_0_2_react.useRef)();
|
|
|
|
|
|
//处理验证码倒计时
|
|
|
var countDown = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
clearInterval(intervalId.current);
|
|
|
setTimer(60);
|
|
|
intervalId.current = setInterval(function fn() {
|
|
|
setTimer(function (t) {
|
|
|
return t - 1;
|
|
|
});
|
|
|
return fn;
|
|
|
}(), 1000);
|
|
|
case 3:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function countDown() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
|
|
|
//获取验证码
|
|
|
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
codeLoading = _useState4[0],
|
|
|
setCodeLoading = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
isshow = _useState6[0],
|
|
|
setisshow = _useState6[1];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (user.bindAccountModalVisible) {
|
|
|
setisshow(true);
|
|
|
} else {
|
|
|
setisshow(false);
|
|
|
}
|
|
|
}, [user]);
|
|
|
var handleGetCode = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var userInput, isPhone, isEmail, _user$userInfoForBind, data, _data, smscode, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
userInput = form.getFieldValue('userInput');
|
|
|
isPhone = phoneReg.test(userInput);
|
|
|
isEmail = emailReg.test(userInput);
|
|
|
if (!(!isPhone && !isEmail)) {
|
|
|
_context2.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.error('请输入有效的手机号/邮箱号');
|
|
|
return _context2.abrupt("return");
|
|
|
case 6:
|
|
|
setCodeLoading(true);
|
|
|
if (!isPhone) {
|
|
|
_context2.next = 20;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 10;
|
|
|
return (0,fetch/* default */.ZP)("/api/users/accounts/".concat((_user$userInfoForBind = user.userInfoForBindAccountModal) === null || _user$userInfoForBind === void 0 ? void 0 : _user$userInfoForBind.login, "/valid_phone.json"), {
|
|
|
method: 'get',
|
|
|
params: {
|
|
|
phone: userInput
|
|
|
}
|
|
|
});
|
|
|
case 10:
|
|
|
data = _context2.sent;
|
|
|
if (!((data === null || data === void 0 ? void 0 : data.status) === -1)) {
|
|
|
_context2.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
setCodeLoading(false);
|
|
|
return _context2.abrupt("return");
|
|
|
case 14:
|
|
|
if (!(data !== null && data !== void 0 && data.is_exists)) {
|
|
|
_context2.next = 18;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.info('该手机号已被其它账号绑定');
|
|
|
setCodeLoading(false);
|
|
|
return _context2.abrupt("return");
|
|
|
case 18:
|
|
|
_context2.next = 27;
|
|
|
break;
|
|
|
case 20:
|
|
|
_context2.next = 22;
|
|
|
return (0,fetch/* default */.ZP)("/api/accounts/valid_email_and_phone", {
|
|
|
method: 'get',
|
|
|
params: {
|
|
|
login: userInput,
|
|
|
type: 1
|
|
|
}
|
|
|
});
|
|
|
case 22:
|
|
|
_data = _context2.sent;
|
|
|
if (!((_data === null || _data === void 0 ? void 0 : _data.status) === -3)) {
|
|
|
_context2.next = 27;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.info('该邮箱已被注册');
|
|
|
setCodeLoading(false);
|
|
|
return _context2.abrupt("return");
|
|
|
case 27:
|
|
|
smscode = (0,util/* setmiyah */.M)(userInput);
|
|
|
_context2.next = 30;
|
|
|
return dispatch({
|
|
|
type: 'account/getCode',
|
|
|
payload: {
|
|
|
login: userInput,
|
|
|
type: isPhone ? 3 : 4,
|
|
|
smscode: smscode
|
|
|
}
|
|
|
});
|
|
|
case 30:
|
|
|
res = _context2.sent;
|
|
|
setCodeLoading(false);
|
|
|
if (res.status === 1) {
|
|
|
message/* default */.ZP.info('验证码已发送,请注意查收');
|
|
|
countDown();
|
|
|
}
|
|
|
case 33:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleGetCode() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleBind = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var userInput, code, isPhone, isEmail, _user$userInfoForBind2, res, _user$userInfoForBind3, _res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.next = 2;
|
|
|
return form.validateFields();
|
|
|
case 2:
|
|
|
userInput = form.getFieldValue('userInput');
|
|
|
code = form.getFieldValue('code');
|
|
|
isPhone = phoneReg.test(userInput);
|
|
|
isEmail = emailReg.test(userInput);
|
|
|
if (!(!isPhone && !isEmail)) {
|
|
|
_context3.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.error('请输入有效的手机号/邮箱号');
|
|
|
return _context3.abrupt("return");
|
|
|
case 9:
|
|
|
if (!isPhone) {
|
|
|
_context3.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
_context3.next = 12;
|
|
|
return dispatch({
|
|
|
type: 'account/bindPhone',
|
|
|
payload: {
|
|
|
login: (_user$userInfoForBind2 = user.userInfoForBindAccountModal) === null || _user$userInfoForBind2 === void 0 ? void 0 : _user$userInfoForBind2.login,
|
|
|
phone: userInput,
|
|
|
code: code
|
|
|
}
|
|
|
});
|
|
|
case 12:
|
|
|
res = _context3.sent;
|
|
|
return _context3.abrupt("return", res.status === 0);
|
|
|
case 16:
|
|
|
_context3.next = 18;
|
|
|
return dispatch({
|
|
|
type: 'account/bindEmail',
|
|
|
payload: {
|
|
|
login: (_user$userInfoForBind3 = user.userInfoForBindAccountModal) === null || _user$userInfoForBind3 === void 0 ? void 0 : _user$userInfoForBind3.login,
|
|
|
email: userInput,
|
|
|
code: code
|
|
|
}
|
|
|
});
|
|
|
case 18:
|
|
|
_res = _context3.sent;
|
|
|
return _context3.abrupt("return", _res.status === 0);
|
|
|
case 20:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function handleBind() {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleLogin = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var loginInfo, res, from;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
loginInfo = user.loginInfo;
|
|
|
if (!passwordReg.test(loginInfo.password)) {
|
|
|
message/* default */.ZP.error('系统检测您的密码强度过低,请及时修改');
|
|
|
}
|
|
|
_context4.next = 4;
|
|
|
return (0,service_user/* LoginIn */.Es)(loginInfo);
|
|
|
case 4:
|
|
|
res = _context4.sent;
|
|
|
if (!res.status) {
|
|
|
_context4.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
message/* default */.ZP.error(res === null || res === void 0 ? void 0 : res.message);
|
|
|
return _context4.abrupt("return");
|
|
|
case 8:
|
|
|
if (res !== null && res !== void 0 && res.show) {
|
|
|
localStorage.setItem('extension-modal', 'exist');
|
|
|
localStorage.setItem('extension-date', res === null || res === void 0 ? void 0 : res.start_date);
|
|
|
} else {
|
|
|
localStorage.removeItem('extension-modal');
|
|
|
}
|
|
|
if (location.pathname === '/user/login' || location.pathname === '/login') {
|
|
|
from = searchParams.get("from") || searchParams.get("back_url");
|
|
|
if (from) {
|
|
|
window.location.href = decodeURIComponent(from);
|
|
|
} else {
|
|
|
//判断 如果密码强度过低 跳转修改密码页
|
|
|
if (!passwordReg.test(loginInfo.password)) {
|
|
|
message/* default */.ZP.info('系统检测您的密码强度过低,请及时修改');
|
|
|
window.location.href = '/account/secure';
|
|
|
} else {
|
|
|
window.location.reload();
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
if (!passwordReg.test(loginInfo.password)) {
|
|
|
message/* default */.ZP.info('系统检测您的密码强度过低,请及时修改');
|
|
|
_umi_production_exports.history.replace('/account/secure?active=3');
|
|
|
dispatch({
|
|
|
type: 'user/setBindAccountModal',
|
|
|
payload: {
|
|
|
bindAccountModalVisible: false
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
window.location.reload();
|
|
|
}
|
|
|
}
|
|
|
form.resetFields();
|
|
|
case 11:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function handleLogin() {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var bindAndLogin = /*#__PURE__*/function () {
|
|
|
var _ref6 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5() {
|
|
|
var successFlag;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
_context5.next = 2;
|
|
|
return handleBind();
|
|
|
case 2:
|
|
|
successFlag = _context5.sent;
|
|
|
if (!successFlag) {
|
|
|
_context5.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
_context5.next = 6;
|
|
|
return handleLogin();
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function bindAndLogin() {
|
|
|
return _ref6.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(modal/* default */.Z, {
|
|
|
centered: true
|
|
|
// title="手机号/邮箱绑定"
|
|
|
,
|
|
|
open: isshow,
|
|
|
footer: null,
|
|
|
width: 596,
|
|
|
keyboard: false,
|
|
|
maskClosable: true,
|
|
|
wrapClassName: BindAccountPanelmodules.popLogin,
|
|
|
closable: true,
|
|
|
onCancel: onCancel,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h1", {
|
|
|
className: "font18 mb20",
|
|
|
children: "\u624B\u673A\u53F7/\u90AE\u7BB1\u7ED1\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
layout: "vertical",
|
|
|
form: form,
|
|
|
autoComplete: "off",
|
|
|
preserve: false,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "userInput",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入正确的手机号/邮箱'
|
|
|
}, {
|
|
|
validator: Validate
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: inputStyle,
|
|
|
size: 'middle',
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u624B\u673A\u53F7/\u90AE\u7BB1\u53F7"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, {
|
|
|
name: "code",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入验证码'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
suffix: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
loading: codeLoading,
|
|
|
type: "link",
|
|
|
onClick: handleGetCode,
|
|
|
disabled: getCodeBtnDisabled,
|
|
|
children: getCodeBtnDisabled ? "".concat(timer, "\u79D2\u53EF\u91CD\u65B0\u83B7\u53D6") : '获取验证码'
|
|
|
}),
|
|
|
style: {
|
|
|
paddingRight: 2,
|
|
|
height: 48
|
|
|
},
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",
|
|
|
size: 'middle'
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: BindAccountPanelmodules.tips,
|
|
|
children: "\u4E3A\u4E86\u8D26\u53F7\u5B89\u5168\u6027\uFF0C\u7ED1\u5B9A\u540E\u53EF\u901A\u8FC7\u8BE5\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u627E\u56DE\u5BC6\u7801"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
size: 'middle',
|
|
|
type: "primary",
|
|
|
block: true,
|
|
|
style: inputStyle,
|
|
|
className: "font16",
|
|
|
onClick: bindAndLogin,
|
|
|
children: "\u7ED1\u5B9A\u5E76\u767B\u5F55"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: BindAccountPanelmodules.tips,
|
|
|
children: ["\u767B\u5F55\u5373\u4EE3\u8868\u60A8\u5DF2\u9605\u8BFB\u5E76\u540C\u610F", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "https://engineer.educoder.net/help?index=4",
|
|
|
target: "_blank",
|
|
|
children: "\u300A\u670D\u52A1\u534F\u8BAE\u6761\u6B3E\u300B"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var User_BindAccountPanel = ((0,_umi_production_exports.connect)(function (_ref7) {
|
|
|
var user = _ref7.user,
|
|
|
loading = _ref7.loading,
|
|
|
globalSetting = _ref7.globalSetting;
|
|
|
return {
|
|
|
user: user,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(BindAccountPanel));
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/spin/index.js + 1 modules
|
|
|
var spin = __webpack_require__(71418);
|
|
|
// EXTERNAL MODULE: ./node_modules/_dayjs@1.11.13@dayjs/dayjs.min.js
|
|
|
var dayjs_min = __webpack_require__(61186);
|
|
|
var dayjs_min_default = /*#__PURE__*/__webpack_require__.n(dayjs_min);
|
|
|
// EXTERNAL MODULE: ./src/components/Header/index.tsx + 12 modules
|
|
|
var Header = __webpack_require__(91982);
|
|
|
// 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/objectDestructuringEmpty.js
|
|
|
var objectDestructuringEmpty = __webpack_require__(70236);
|
|
|
var objectDestructuringEmpty_default = /*#__PURE__*/__webpack_require__.n(objectDestructuringEmpty);
|
|
|
;// CONCATENATED MODULE: ./src/components/PodModal/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var PodModalmodules = ({"wrap":"wrap___q9xAc","list":"list___qjgdz","name":"name___ncYhC","tag":"tag___Paafn"});
|
|
|
// EXTERNAL MODULE: ./src/components/mediator.js
|
|
|
var mediator = __webpack_require__(3781);
|
|
|
;// CONCATENATED MODULE: ./src/components/PodModal/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var PodModal = function PodModal(_ref) {
|
|
|
objectDestructuringEmpty_default()(_ref);
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
visible = _useState2[0],
|
|
|
setVisible = _useState2[1];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
list = _useState4[0],
|
|
|
setList = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)([]),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
checkboxList = _useState6[0],
|
|
|
setCheckboxList = _useState6[1];
|
|
|
var _useState7 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
all = _useState8[0],
|
|
|
setAll = _useState8[1];
|
|
|
var _useState9 = (0,_react_17_0_2_react.useState)(false),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
loading = _useState10[0],
|
|
|
setLoading = _useState10[1];
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
mediator/* default */.Z.subscribe('pod-restrict-data', function (data) {
|
|
|
console.log(data, 'data');
|
|
|
setVisible(data.identifier || false);
|
|
|
setList(data.data_list || []);
|
|
|
setCheckboxList([]);
|
|
|
setAll(false);
|
|
|
});
|
|
|
}, []);
|
|
|
var del = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var del_pods, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
setLoading(true);
|
|
|
del_pods = list.filter(function (e) {
|
|
|
return checkboxList.includes(e.tpi_id);
|
|
|
});
|
|
|
_context.next = 4;
|
|
|
return (0,fetch/* default */.ZP)("/api/myshixuns/batch_del_pods.json", {
|
|
|
method: 'delete',
|
|
|
body: {
|
|
|
del_pods: del_pods
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context.sent;
|
|
|
if (res.status === 0) {
|
|
|
window.location.reload();
|
|
|
}
|
|
|
setLoading(false);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function del() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var cancel = function cancel() {
|
|
|
var _location$pathname;
|
|
|
console.log(location, 'location');
|
|
|
if ((_location$pathname = location.pathname) !== null && _location$pathname !== void 0 && _location$pathname.includes('/challenges')) {
|
|
|
window.location.href = "/shixuns";
|
|
|
return;
|
|
|
}
|
|
|
if (searchParams.get("type") === 'exercises') {
|
|
|
window.parent.postMessage('backExercise', '*');
|
|
|
mediator/* default */.Z.publish('pod-restrict-data', {
|
|
|
identifier: false,
|
|
|
data_list: []
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
window.location.href = "/shixuns/".concat(visible, "/challenges");
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
keyboard: false,
|
|
|
destroyOnClose: true,
|
|
|
open: visible,
|
|
|
title: "\u901A\u77E5",
|
|
|
width: "600px",
|
|
|
footer: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
justify: "center",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
onChange: function onChange(k) {
|
|
|
console.log(k, 222);
|
|
|
setAll(k.target.checked);
|
|
|
if (k.target.checked) {
|
|
|
var _list$filter;
|
|
|
setCheckboxList(list === null || list === void 0 || (_list$filter = list.filter(function (e) {
|
|
|
return !e.is_current_shixun;
|
|
|
})) === null || _list$filter === void 0 ? void 0 : _list$filter.map(function (e) {
|
|
|
return e.tpi_id;
|
|
|
}));
|
|
|
} else {
|
|
|
setCheckboxList([]);
|
|
|
}
|
|
|
},
|
|
|
checked: all,
|
|
|
children: "\u5168\u9009"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
style: {
|
|
|
marginLeft: 'auto'
|
|
|
},
|
|
|
onClick: cancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
disabled: !checkboxList.length,
|
|
|
loading: loading,
|
|
|
type: "primary",
|
|
|
onClick: del,
|
|
|
children: "\u5173\u95ED\u5B9E\u8BAD"
|
|
|
})]
|
|
|
}),
|
|
|
onCancel: cancel,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: loading,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: PodModalmodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5355\u4E2A\u8D26\u53F7\u6700\u591A\u53EF\u540C\u65F6\u5F00\u542F10\u4E2A\u5B9E\u9A8C\u73AF\u5883\uFF0C\u82E5\u60F3\u5F00\u542F\u8BE5\u5B9E\u8BAD\u8BF7\u5173\u95ED\u5176\u4ED6\u5B9E\u8BAD\u3002"
|
|
|
}), list === null || list === void 0 ? void 0 : list.map(function (e) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: PodModalmodules.list,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
disabled: e.is_current_shixun,
|
|
|
onChange: function onChange(k) {
|
|
|
var newList = toConsumableArray_default()(checkboxList);
|
|
|
if (k.target.checked) {
|
|
|
newList.push(e.tpi_id);
|
|
|
} else {
|
|
|
newList = checkboxList.filter(function (j) {
|
|
|
return j !== e.tpi_id;
|
|
|
});
|
|
|
}
|
|
|
setCheckboxList(newList);
|
|
|
setAll(newList.length === list.length);
|
|
|
},
|
|
|
checked: checkboxList === null || checkboxList === void 0 ? void 0 : checkboxList.includes(e.tpi_id)
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: PodModalmodules.name,
|
|
|
onClick: function onClick() {
|
|
|
return (0,util/* openNewWindow */.xg)("/shixuns/".concat(e.shixun_identifier, "/challenges"));
|
|
|
},
|
|
|
title: e.shixun_name,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: e.shixun_name
|
|
|
}), e.is_current_shixun && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: PodModalmodules.tag,
|
|
|
children: "\u5F53\u524D\u5B9E\u8BAD"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
style: {
|
|
|
color: '#53d1a3'
|
|
|
},
|
|
|
children: ["\u8FD0\u884C\u4E2D\u7684\u73AF\u5883\uFF1A", e.pod_num, "\u4E2A"]
|
|
|
})]
|
|
|
}, e.tpi_id);
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_PodModal = (PodModal);
|
|
|
;// CONCATENATED MODULE: ./src/styles/antd.theme.ts
|
|
|
var theme = {
|
|
|
token: {
|
|
|
colorPrimary: '#3061D0',
|
|
|
colorInfo: '#3061D0',
|
|
|
colorLink: '#3061D0',
|
|
|
borderRadius: 2,
|
|
|
fontSizeLG: 14
|
|
|
},
|
|
|
components: {
|
|
|
Radio: {
|
|
|
radioSize: 16,
|
|
|
dotSize: 6
|
|
|
},
|
|
|
Modal: {
|
|
|
titleFontSize: 16,
|
|
|
// titleLineHeight: 1,
|
|
|
titleColor: "#000"
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
/* harmony default export */ var antd_theme = (theme);
|
|
|
// EXTERNAL MODULE: ./node_modules/_dayjs@1.11.13@dayjs/locale/zh-cn.js
|
|
|
var zh_cn = __webpack_require__(65517);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_cssinjs@1.22.1@@ant-design/cssinjs/es/index.js + 39 modules
|
|
|
var es = __webpack_require__(62363);
|
|
|
;// CONCATENATED MODULE: ./src/layouts/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["loading", "globalSetting", "user", "dispatch"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import themes from '@/styles/';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dayjs_min_default().locale('zh-cn');
|
|
|
var SimpleLayouts = function SimpleLayouts(_ref) {
|
|
|
var loading = _ref.loading,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var payload = (0,Header/* getCourseParam */.g)();
|
|
|
var globalLoading = globalSetting.globalLoading;
|
|
|
var getData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _res;
|
|
|
var res, game_id, path, subject_id, _game_id;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
path = location.pathname.split("/");
|
|
|
if (!(location !== null && location !== void 0 && location.search)) {
|
|
|
_context.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
if (path.includes("paths")) {
|
|
|
subject_id = path[2];
|
|
|
} else if (path.includes("tasks")) {
|
|
|
_game_id = path[2];
|
|
|
}
|
|
|
;
|
|
|
_context.next = 6;
|
|
|
return dispatch({
|
|
|
type: 'user/getUserInfo',
|
|
|
payload: objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({}, payload), (0,util/* getJsonFromUrl */.oP)()), {}, {
|
|
|
subject_id: subject_id,
|
|
|
game_id: _game_id,
|
|
|
websiteName: 'educoder'
|
|
|
})
|
|
|
});
|
|
|
case 6:
|
|
|
res = _context.sent;
|
|
|
_context.next = 14;
|
|
|
break;
|
|
|
case 9:
|
|
|
if (path.includes("tasks")) {
|
|
|
game_id = path[2];
|
|
|
}
|
|
|
;
|
|
|
_context.next = 13;
|
|
|
return dispatch({
|
|
|
type: 'user/getUserInfo',
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, payload), {}, {
|
|
|
game_id: game_id
|
|
|
})
|
|
|
});
|
|
|
case 13:
|
|
|
res = _context.sent;
|
|
|
case 14:
|
|
|
if ((_res = res) !== null && _res !== void 0 && _res.username && location.pathname === '/login') {
|
|
|
_umi_production_exports.history.push("/");
|
|
|
}
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
// window.less.modifyVars({
|
|
|
// ...themes[globalSetting.theme]
|
|
|
// })
|
|
|
config_provider/* default */.ZP.config({
|
|
|
prefixCls: 'ant',
|
|
|
iconPrefixCls: 'anticon',
|
|
|
theme: objectSpread2_default()({}, antd_theme)
|
|
|
});
|
|
|
}, [globalSetting.theme]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
getData();
|
|
|
}, [location.pathname]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var _window$location$href, _window$location$href2;
|
|
|
if (location.pathname.indexOf("classrooms") > -1 && location.pathname.indexOf("detail") === -1) {} else {
|
|
|
document.body.scrollIntoView();
|
|
|
}
|
|
|
// 教育部考试系统
|
|
|
if (location.pathname.indexOf("/classrooms/4RW9CYHY") > -1 && document.domain !== "localhost" && document.domain !== "kepukehuan.educoder.net") {
|
|
|
window.location.href = "https://kepukehuan.educoder.net/classrooms/4RW9CYHY/exercise";
|
|
|
return;
|
|
|
}
|
|
|
if (location.pathname.indexOf("/classrooms/qb4ft587") > -1 && document.domain !== "localhost" && document.domain !== "kepukehuan.educoder.net") {
|
|
|
window.location.href = "https://kepukehuan.educoder.net/classrooms/qb4ft587/exercise";
|
|
|
return;
|
|
|
}
|
|
|
if (location.pathname.indexOf("/classrooms/c5q9bsp2") > -1 && document.domain !== "localhost" && document.domain !== "kepukehuan.educoder.net") {
|
|
|
window.location.href = "https://kepukehuan.educoder.net/classrooms/c5q9bsp2/exercise";
|
|
|
return;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: 'globalSetting/query',
|
|
|
payload: {}
|
|
|
});
|
|
|
dispatch({
|
|
|
type: "globalSetting/setGlobalLoading",
|
|
|
payload: {
|
|
|
show: false,
|
|
|
text: ""
|
|
|
}
|
|
|
});
|
|
|
// dispatch({ type: "globalSetting/getSystemUpdate", payload: { show: false, text: "" } })
|
|
|
// http://localhost:8000
|
|
|
// https://jetcoder.educoder.net
|
|
|
if (window.location.href === 'https://jetcoder.educoder.net' || window.location.href === 'https://jetcoder.educoder.net/') {
|
|
|
window.location.href = 'https://www.educoder.net/problems';
|
|
|
return;
|
|
|
}
|
|
|
//在线刷题分享
|
|
|
if ((_window$location$href = window.location.href) !== null && _window$location$href !== void 0 && _window$location$href.includes('/problems') && (_window$location$href2 = window.location.href) !== null && _window$location$href2 !== void 0 && _window$location$href2.includes('/share')) {
|
|
|
var _window$location;
|
|
|
var ojId = (_window$location = window.location) === null || _window$location === void 0 || (_window$location = _window$location.pathname) === null || _window$location === void 0 || (_window$location = _window$location.split('/')) === null || _window$location === void 0 ? void 0 : _window$location[2];
|
|
|
var p = (0,fetch/* default */.ZP)("/api/practices/".concat(ojId, "/start"), {
|
|
|
method: 'get'
|
|
|
});
|
|
|
p.then(function (res) {
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
_umi_production_exports.history.replace("/problems/".concat(res === null || res === void 0 ? void 0 : res.identifier, "/oj/").concat(ojId));
|
|
|
}
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
if (location.pathname === '/admins' || location.pathname === '/sidekiq') {
|
|
|
var domain = document.domain;
|
|
|
if (domain.indexOf("educoder.net") > -1) {
|
|
|
switch (domain) {
|
|
|
case "www.educoder.net":
|
|
|
case "educoder.net":
|
|
|
window.location.href = "https://data.educoder.net".concat(location.pathname);
|
|
|
break;
|
|
|
default:
|
|
|
var str = document.domain.split(".");
|
|
|
str[0] = str[0] + "-data";
|
|
|
window.location.href = "https://".concat(str.join(".")).concat(location.pathname);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
modal/* default */.Z.destroyAll();
|
|
|
if ((0,util/* isLocalApp */.WX)()) {
|
|
|
if ((0,util/* compareVersion */.yC)("2.0.0") > 0) {
|
|
|
modal/* default */.Z.info({
|
|
|
title: "客户端版本过低",
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-red",
|
|
|
children: "\u60A8\u7684\u5934\u6B4C\u8003\u8BD5\u7CFB\u7EDF\u67DC\u5BA2\u6237\u7AEF\u7248\u672C\u8FC7\u4F4E"
|
|
|
}), "\uFF0C\u8BF7\u5347\u7EA7\u81F3\u6700\u65B0\u7248\u672C\u540E\u518D\u4F7F\u7528\uFF0C\u70B9\u51FB\"\u786E\u5B9A\"\u540E\u5C06\u4E0B\u8F7D\u6700\u65B0\u7248\u672C\u7684\u5BA2\u6237\u7AEF,", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-red",
|
|
|
children: "\u4E0B\u8F7D\u540E\u8BF7\u5148\u9000\u51FA\u5BA2\u6237\u7AEF\u518D\u5B89\u88C5"
|
|
|
})]
|
|
|
}),
|
|
|
okText: "立即升级",
|
|
|
visible: true,
|
|
|
maskClosable: false,
|
|
|
onOk: function onOk() {
|
|
|
(0,util/* downLoadFile */.FH)("Educoder.exe", "https://www-cdn.educoder.net/app/Educoder.exe");
|
|
|
return new Promise(function () {});
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
;
|
|
|
}
|
|
|
|
|
|
// setLocale('zh-CN', false);
|
|
|
}, [location.pathname]);
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (globalSetting.updateData.system_update) {
|
|
|
// if(new Date().getTime() < new Date(globalSetting.updateData.end_time).getTime())
|
|
|
if (!localStorage.updateEndTime) {
|
|
|
if (new Date().getTime() < new Date(globalSetting.updateData.end_time).getTime()) modal/* default */.Z.info({
|
|
|
title: globalSetting.updateData.subject,
|
|
|
content: globalSetting.updateData.system_score,
|
|
|
onOk: function onOk() {
|
|
|
localStorage.updateEndTime = globalSetting.updateData.end_time;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
} else {
|
|
|
localStorage.removeItem("updateEndTime");
|
|
|
}
|
|
|
}, [globalSetting.updateData.system_update]);
|
|
|
var toTrackEvent = function toTrackEvent() {
|
|
|
var _user$userInfo;
|
|
|
var trackUserTime = localStorage.trackUserTime;
|
|
|
var trackUser = localStorage.trackUser;
|
|
|
if (trackUserTime && dayjs_min_default()(trackUserTime).isSame(dayjs_min_default()().startOf('day'), 'd') && trackUser == ((_user$userInfo = user.userInfo) === null || _user$userInfo === void 0 ? void 0 : _user$userInfo.login)) {} else {
|
|
|
var _user$userInfo2, _user$userInfo3, _user$userInfo4, _user$userInfo5;
|
|
|
localStorage.trackUserTime = new Date();
|
|
|
localStorage.trackUser = (_user$userInfo2 = user.userInfo) === null || _user$userInfo2 === void 0 ? void 0 : _user$userInfo2.login;
|
|
|
var text = '';
|
|
|
switch (user.userInfo.role) {
|
|
|
case 1:
|
|
|
text = '超管';
|
|
|
break;
|
|
|
case 2:
|
|
|
text = '运营';
|
|
|
break;
|
|
|
case 5:
|
|
|
text = '认证教师';
|
|
|
break;
|
|
|
case 12:
|
|
|
text = '未认证教师';
|
|
|
break;
|
|
|
case 15:
|
|
|
text = '学生';
|
|
|
break;
|
|
|
}
|
|
|
if (((_user$userInfo3 = user.userInfo) === null || _user$userInfo3 === void 0 ? void 0 : _user$userInfo3.identity) !== 'student' && ((_user$userInfo4 = user.userInfo) === null || _user$userInfo4 === void 0 ? void 0 : _user$userInfo4.identity) !== 'teacher') {
|
|
|
text = '专业人士';
|
|
|
}
|
|
|
if ((_user$userInfo5 = user.userInfo) !== null && _user$userInfo5 !== void 0 && _user$userInfo5.user_school) {
|
|
|
var _user$userInfo6, _user$userInfo7, _user$userInfo8;
|
|
|
(0,util/* trackEvent */.L9)(['学校活跃用户', (_user$userInfo6 = user.userInfo) === null || _user$userInfo6 === void 0 ? void 0 : _user$userInfo6.user_school]);
|
|
|
(0,util/* trackEvent */.L9)(['用户访问明细', (_user$userInfo7 = user.userInfo) === null || _user$userInfo7 === void 0 ? void 0 : _user$userInfo7.login, (_user$userInfo8 = user.userInfo) === null || _user$userInfo8 === void 0 ? void 0 : _user$userInfo8.user_school]);
|
|
|
}
|
|
|
(0,util/* trackEvent */.L9)(['平台PC端', '总活跃用户数']);
|
|
|
(0,util/* trackEvent */.L9)(['平台PC端', text]);
|
|
|
}
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(es.StyleProvider, {
|
|
|
transformers: [es.legacyLogicalPropertiesTransformer],
|
|
|
hashPriority: "high",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(config_provider/* default */.ZP, {
|
|
|
locale: zh_CN/* default */.Z,
|
|
|
autoInsertSpaceInButton: false,
|
|
|
componentSize: "middle",
|
|
|
theme: antd_theme,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(PopLogin, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(User_BindAccountPanel, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_PodModal, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
size: 'middle',
|
|
|
spinning: globalLoading.show,
|
|
|
tip: globalLoading.text,
|
|
|
className: "ant-spin-nested-loading-black",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(_umi_production_exports.Outlet, {})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var layouts = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
loading: loading,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user
|
|
|
};
|
|
|
})(SimpleLayouts));
|
|
|
|
|
|
/***/ })
|
|
|
|
|
|
}]); |