Files
copilot-toolbox-template-123/node_modules/@ant-design/pro-form/lib/components/Captcha/index.js
2026-01-09 14:52:46 +00:00

175 lines
6.7 KiB
JavaScript

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _antd = require("antd");
var _react = _interopRequireWildcard(require("react"));
var _createField = require("../../BaseForm/createField");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["rules", "name", "phoneName", "fieldProps", "onTiming", "captchaTextRender", "captchaProps"];
var BaseProFormCaptcha = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
var form = _antd.Form.useFormInstance();
var _useState = (0, _react.useState)(props.countDown || 60),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
count = _useState2[0],
setCount = _useState2[1];
var _useState3 = (0, _react.useState)(false),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
timing = _useState4[0],
setTiming = _useState4[1];
var _useState5 = (0, _react.useState)(),
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
loading = _useState6[0],
setLoading = _useState6[1];
// 这么写是为了防止restProps中 带入 onChange, defaultValue, rules props tabUtil
var rules = props.rules,
name = props.name,
phoneName = props.phoneName,
fieldProps = props.fieldProps,
onTiming = props.onTiming,
_props$captchaTextRen = props.captchaTextRender,
captchaTextRender = _props$captchaTextRen === void 0 ? function (paramsTiming, paramsCount) {
return paramsTiming ? "".concat(paramsCount, " \u79D2\u540E\u91CD\u65B0\u83B7\u53D6") : '获取验证码';
} : _props$captchaTextRen,
captchaProps = props.captchaProps,
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
var onGetCaptcha = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(mobile) {
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
setLoading(true);
_context.next = 4;
return restProps.onGetCaptcha(mobile);
case 4:
setLoading(false);
setTiming(true);
_context.next = 13;
break;
case 8:
_context.prev = 8;
_context.t0 = _context["catch"](0);
setTiming(false);
setLoading(false);
// eslint-disable-next-line no-console
console.log(_context.t0);
case 13:
case "end":
return _context.stop();
}
}, _callee, null, [[0, 8]]);
}));
return function onGetCaptcha(_x) {
return _ref.apply(this, arguments);
};
}();
/**
* 暴露ref方法
*/
(0, _react.useImperativeHandle)(ref, function () {
return {
startTiming: function startTiming() {
return setTiming(true);
},
endTiming: function endTiming() {
return setTiming(false);
}
};
});
(0, _react.useEffect)(function () {
var interval = 0;
var countDown = props.countDown;
if (timing) {
interval = window.setInterval(function () {
setCount(function (preSecond) {
if (preSecond <= 1) {
setTiming(false);
clearInterval(interval);
// 重置秒数
return countDown || 60;
}
return preSecond - 1;
});
}, 1000);
}
return function () {
return clearInterval(interval);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [timing]);
(0, _react.useEffect)(function () {
if (onTiming) {
onTiming(count);
}
}, [count, onTiming]);
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.style), {}, {
display: 'flex',
alignItems: 'center'
}),
ref: ref,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Input, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, fieldProps), {}, {
style: (0, _objectSpread2.default)({
flex: 1,
transition: 'width .3s',
marginRight: 8
}, fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.style)
})), /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Button, (0, _objectSpread2.default)((0, _objectSpread2.default)({
style: {
display: 'block'
},
disabled: timing,
loading: loading
}, captchaProps), {}, {
onClick: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
var _mobile;
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.prev = 0;
if (!phoneName) {
_context2.next = 9;
break;
}
_context2.next = 4;
return form.validateFields([phoneName].flat(1));
case 4:
_mobile = form.getFieldValue([phoneName].flat(1));
_context2.next = 7;
return onGetCaptcha(_mobile);
case 7:
_context2.next = 11;
break;
case 9:
_context2.next = 11;
return onGetCaptcha('');
case 11:
_context2.next = 16;
break;
case 13:
_context2.prev = 13;
_context2.t0 = _context2["catch"](0);
// eslint-disable-next-line no-console
console.log(_context2.t0);
case 16:
case "end":
return _context2.stop();
}
}, _callee2, null, [[0, 13]]);
})),
children: captchaTextRender(timing, count)
}))]
});
});
var ProFormCaptcha = (0, _createField.createField)(BaseProFormCaptcha);
var _default = exports.default = ProFormCaptcha;