UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

580 lines (489 loc) 20.4 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _ConfigContext = _interopRequireDefault(require("../../../lib/config-provider/ConfigContext")); var _mobxReact = require("mobx-react"); var _mobx = require("mobx"); var _autobind = _interopRequireDefault(require("../_util/autobind")); var _localeContext = require("../locale-context"); var _DataSet = _interopRequireDefault(require("../data-set/DataSet")); var _message = _interopRequireDefault(require("../message")); var _enum = require("../data-set/enum"); var _Form = _interopRequireDefault(require("../form/Form")); var _SelectBox = _interopRequireDefault(require("../select-box/SelectBox")); var _Option = _interopRequireDefault(require("../option/Option")); var _textField = _interopRequireDefault(require("../text-field")); var _Button = _interopRequireDefault(require("../button/Button")); var _VerifySlider = _interopRequireDefault(require("./VerifySlider")); var _CountDownButton = _interopRequireDefault(require("./CountDownButton")); var _enum2 = require("../button/enum"); var _enum3 = require("../text-field/enum"); function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } var SecretFieldView = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(SecretFieldView, _Component); var _super = _createSuper(SecretFieldView); function SecretFieldView(props, context) { var _this; (0, _classCallCheck2["default"])(this, SecretFieldView); _this = _super.call(this, props, context); (0, _mobx.runInAction)(function () { _this.setFlag('verify'); _this.setVerifyTypeObj(); _this.setFormDs(); _this.setCaptchaKey(''); _this.setCaptcha(''); _this.setValidate(true); }); return _this; } (0, _createClass2["default"])(SecretFieldView, [{ key: "handleSuccess", // 滑块拖到最右 value: function handleSuccess() { var _formDs$current, _this2 = this; var countDown = this.props.countDown; var context = this.context, formDs = this.formDs; var type = formDs === null || formDs === void 0 ? void 0 : (_formDs$current = formDs.current) === null || _formDs$current === void 0 ? void 0 : _formDs$current.get('verifyType'); // 发送信息以获取验证码 var secretFieldFetchVerifyCode = context.getConfig('secretFieldFetchVerifyCode'); if (secretFieldFetchVerifyCode) { secretFieldFetchVerifyCode(type).then(function (res) { if (res.success) { _message["default"].success(res.message); _this2.setCaptchaKey(res.captchaKey); // 验证码倒计时 countDown.start(); countDown.setVerifyType(type); } else { _message["default"].error(res.message); } setTimeout(function () { _this2.setFlag('verify'); }, 500); })["catch"](function (_e) { return _this2.setFlag('verify'); }); } } // 下一步 }, { key: "handleGoToEdit", value: function handleGoToEdit() { var _this$formDs, _this$formDs$current, _this3 = this; var _this$props = this.props, name = _this$props.name, _this$props$token = _this$props.token, token = _this$props$token === void 0 ? '' : _this$props$token; // 编辑-校验验证码,返回原始值 var captchaKey = this.captchaKey, captcha = this.captcha, context = this.context; var secretFieldQueryData = context.getConfig('secretFieldQueryData'); var type = (_this$formDs = this.formDs) === null || _this$formDs === void 0 ? void 0 : (_this$formDs$current = _this$formDs.current) === null || _this$formDs$current === void 0 ? void 0 : _this$formDs$current.get('verifyType'); var params = { type: type, _token: token, fieldName: name, captchaKey: captchaKey, captcha: captcha, action: 'edit' }; if (secretFieldQueryData) { secretFieldQueryData(params).then(function (res) { var _this3$formDs, _this3$formDs$current; if (res === null || res === void 0 ? void 0 : res.failed) { // 校验失败 return; } // 编辑-返回原始数据 (_this3$formDs = _this3.formDs) === null || _this3$formDs === void 0 ? void 0 : (_this3$formDs$current = _this3$formDs.current) === null || _this3$formDs$current === void 0 ? void 0 : _this3$formDs$current.set(name, res); _this3.setFlag('edit'); }); } else { this.setFlag('edit'); } } // 确定可查看 }, { key: "handleQuery", value: function handleQuery() { var _this$formDs2, _this$formDs2$current; var _this$props2 = this.props, name = _this$props2.name, _this$props2$token = _this$props2.token, token = _this$props2$token === void 0 ? '' : _this$props2$token, onChange = _this$props2.onChange, modal = _this$props2.modal, record = _this$props2.record; // 查看-校验验证码,返回原始值 var captchaKey = this.captchaKey, captcha = this.captcha, context = this.context; var secretFieldQueryData = context.getConfig('secretFieldQueryData'); var type = (_this$formDs2 = this.formDs) === null || _this$formDs2 === void 0 ? void 0 : (_this$formDs2$current = _this$formDs2.current) === null || _this$formDs2$current === void 0 ? void 0 : _this$formDs2$current.get('verifyType'); var params = { type: type, _token: token, fieldName: name, captchaKey: captchaKey, captcha: captcha, action: 'query' }; if (secretFieldQueryData) { return secretFieldQueryData(params).then(function (res) { if (res === null || res === void 0 ? void 0 : res.failed) { // 校验失败 return; } // 查看-返回原始数据 if (onChange) { if (res) { onChange(res); } else { onChange(''); } } if (modal) { modal.close(); record === null || record === void 0 ? void 0 : record.setState((0, _defineProperty2["default"])({}, "_secretField_queryFlag_".concat(name), true)); } }); } } // 正则string处理 }, { key: "generatePattern", value: function generatePattern(pattern) { if (pattern instanceof RegExp) { return pattern; } var begin = pattern.startsWith('^') ? '' : '^'; var end = pattern.endsWith('$') ? '' : '$'; return new RegExp("".concat(begin).concat(pattern).concat(end)); } // 确定修改 }, { key: "handleEdit", value: function handleEdit() { var _this$formDs3, _this$formDs3$current; var _this$props3 = this.props, name = _this$props3.name, _this$props3$token = _this$props3.token, token = _this$props3$token === void 0 ? '' : _this$props3$token, onChange = _this$props3.onChange, modal = _this$props3.modal, pattern = _this$props3.pattern, required = _this$props3.required; var context = this.context; var editValue = (_this$formDs3 = this.formDs) === null || _this$formDs3 === void 0 ? void 0 : (_this$formDs3$current = _this$formDs3.current) === null || _this$formDs3$current === void 0 ? void 0 : _this$formDs3$current.get(name); if (pattern) { var newPattern = this.generatePattern(pattern); if (newPattern.test(editValue) === false) { // 正则校验不通过 this.setValidate(false); return; } } if (required) { if (!editValue) { return; } } // 接口查询重置值 var secretFieldSaveData = context.getConfig('secretFieldSaveData'); var params = { _token: token, fieldName: name, value: editValue }; if (secretFieldSaveData) { return secretFieldSaveData(params).then(function (res) { // 校验失败 if (res === null || res === void 0 ? void 0 : res.failed) { return; } // 编辑-返回修改数据 if (onChange) { if (res) { onChange(res); } else if (!res) { onChange(''); } } if (modal) { modal.close(); } }); } } // 取消 }, { key: "handleCancel", value: function handleCancel() { // 清空formDs值 // 关闭弹窗 var modal = this.props.modal; if (modal) { modal.close(); } } }, { key: "setFormDs", value: function setFormDs() { var _this$props4 = this.props, name = _this$props4.name, label = _this$props4.label, pattern = _this$props4.pattern, required = _this$props4.required, countDown = _this$props4.countDown; var verifyTypeObj = this.verifyTypeObj; var verifyType = countDown.verifyType; var initData = []; var verifyValue = ''; // 传入验证方式时,设置初始值 if (verifyType) { verifyTypeObj.forEach(function (item) { if (item.type === verifyType) { verifyValue = item.value; } }); } if (verifyTypeObj.length > 0) { initData = [{ 'verifyType': verifyType || verifyTypeObj[0].type, 'verifyNumber': verifyType ? verifyValue : verifyTypeObj[0].value || '' }]; } this.formDs = new _DataSet["default"]({ autoCreate: true, data: initData, fields: [{ name: 'verifyType', type: _enum.FieldType.string, label: (0, _localeContext.$l)('SecretField', 'verify_type') }, { name: 'verifyNumber', type: _enum.FieldType.string, label: (0, _localeContext.$l)('SecretField', 'verify_value') }, { name: 'verifyCode', type: _enum.FieldType.string, label: (0, _localeContext.$l)('SecretField', 'verify_code') }, { name: name, type: _enum.FieldType.string, label: label, pattern: pattern, required: required }], events: { update: this.handleFormUpdate } }); } }, { key: "setCaptchaKey", value: function setCaptchaKey(value) { this.captchaKey = value; } }, { key: "setCaptcha", value: function setCaptcha(value) { this.captcha = value; } }, { key: "setValidate", value: function setValidate(value) { this.validate = value; } }, { key: "setFlag", value: function setFlag(value) { this.flag = value; } }, { key: "setVerifyTypeObj", value: function setVerifyTypeObj() { var context = this.context; // 从配置项获取验证方式 var secretFieldTypesConfig = context.getConfig('secretFieldTypes'); if (secretFieldTypesConfig) { this.verifyTypeObj = secretFieldTypesConfig(); } else { this.verifyTypeObj = []; } } }, { key: "handleFormUpdate", value: function handleFormUpdate(_ref) { var _this4 = this; var name = _ref.name, value = _ref.value; var verifyTypeObj = this.verifyTypeObj; // 修改验证方式时,自动填充验证号码 if (verifyTypeObj.length > 0 && name === 'verifyType') { verifyTypeObj.forEach(function (item) { if (item.type === value) { var _this4$formDs, _this4$formDs$current; (_this4$formDs = _this4.formDs) === null || _this4$formDs === void 0 ? void 0 : (_this4$formDs$current = _this4$formDs.current) === null || _this4$formDs$current === void 0 ? void 0 : _this4$formDs$current.set('verifyNumber', item.value); } }); } if (name === 'verifyCode') { this.setCaptcha(value); } } }, { key: "handleVerifySliderCancel", value: function handleVerifySliderCancel() { this.setFlag('verify'); } }, { key: "handleClickButton", value: function handleClickButton() { this.setFlag('slider'); } }, { key: "render", value: function render() { var flag = this.flag, captcha = this.captcha, verifyTypeObj = this.verifyTypeObj, prefixCls = this.prefixCls, validate = this.validate, formDs = this.formDs; var _this$props5 = this.props, readOnly = _this$props5.readOnly, label = _this$props5.label, name = _this$props5.name, countDown = _this$props5.countDown, restrict = _this$props5.restrict; var count = countDown.count; return _react["default"].createElement("div", { className: "".concat(prefixCls, "-modal") }, flag !== 'slider' && _react["default"].createElement(_Form["default"], { className: "".concat(prefixCls, "-modal-form"), dataSet: this.formDs, columns: 4, labelWidth: "auto" }, flag === 'verify' && _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_SelectBox["default"], { name: "verifyType", colSpan: 4, disabled: count }, verifyTypeObj === null || verifyTypeObj === void 0 ? void 0 : verifyTypeObj.map(function (item) { return _react["default"].createElement(_Option["default"], { value: item.type, key: item.type }, item.name); })), _react["default"].createElement(_textField["default"], { name: "verifyNumber", colSpan: 4, disabled: true }), _react["default"].createElement(_textField["default"], { name: "verifyCode", colSpan: 3, valueChangeAction: _enum3.ValueChangeAction.input }), _react["default"].createElement(_CountDownButton["default"], { onClick: this.handleClickButton, countDown: countDown, verifyNumber: formDs.current.get('verifyNumber') }), _react["default"].createElement("td", { className: "".concat(prefixCls, "-modal-btns"), colSpan: 4 }, _react["default"].createElement(_Button["default"], { onClick: this.handleCancel }, (0, _localeContext.$l)('SecretField', 'cancel')), readOnly ? _react["default"].createElement(_Button["default"], { onClick: this.handleQuery, className: "".concat(prefixCls, "-modal-raised-btn"), disabled: !captcha, color: _enum2.ButtonColor.primary }, (0, _localeContext.$l)('SecretField', 'ok_btn')) : _react["default"].createElement(_Button["default"], { onClick: this.handleGoToEdit, className: "".concat(prefixCls, "-modal-raised-btn"), disabled: !captcha, color: _enum2.ButtonColor.primary }, (0, _localeContext.$l)('SecretField', 'next_step')))), flag === 'edit' && _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_textField["default"], { name: name, colSpan: 4, restrict: restrict }), _react["default"].createElement("td", { colSpan: 4, className: "".concat(prefixCls, "-modal-edit-btns") }, !validate && _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement("p", { className: "".concat(prefixCls, "-modal-validate") }, (0, _localeContext.$l)('SecretField', 'type_mismatch', { label: label })), _react["default"].createElement("br", null)), _react["default"].createElement(_Button["default"], { onClick: this.handleCancel }, (0, _localeContext.$l)('SecretField', 'cancel')), _react["default"].createElement(_Button["default"], { onClick: this.handleEdit, color: _enum2.ButtonColor.primary }, (0, _localeContext.$l)('SecretField', 'ok_btn'))))), flag === 'slider' && _react["default"].createElement(_VerifySlider["default"], { onCancel: this.handleVerifySliderCancel, onSuccess: this.handleSuccess })); } }, { key: "prefixCls", get: function get() { var context = this.context; return context.getProPrefixCls('secret-field'); } }], [{ key: "contextType", get: function get() { return _ConfigContext["default"]; } }]); return SecretFieldView; }(_react.Component); SecretFieldView.displayName = 'SecretFieldView'; (0, _tslib.__decorate)([_autobind["default"]], SecretFieldView.prototype, "handleSuccess", null); (0, _tslib.__decorate)([_autobind["default"]], SecretFieldView.prototype, "handleGoToEdit", null); (0, _tslib.__decorate)([_autobind["default"]], SecretFieldView.prototype, "handleQuery", null); (0, _tslib.__decorate)([_autobind["default"]], SecretFieldView.prototype, "handleEdit", null); (0, _tslib.__decorate)([_autobind["default"]], SecretFieldView.prototype, "handleCancel", null); (0, _tslib.__decorate)([_mobx.observable], SecretFieldView.prototype, "formDs", void 0); (0, _tslib.__decorate)([_mobx.action], SecretFieldView.prototype, "setFormDs", null); (0, _tslib.__decorate)([_mobx.observable], SecretFieldView.prototype, "captchaKey", void 0); (0, _tslib.__decorate)([_mobx.action], SecretFieldView.prototype, "setCaptchaKey", null); (0, _tslib.__decorate)([_mobx.observable], SecretFieldView.prototype, "captcha", void 0); (0, _tslib.__decorate)([_mobx.action], SecretFieldView.prototype, "setCaptcha", null); (0, _tslib.__decorate)([_mobx.observable], SecretFieldView.prototype, "validate", void 0); (0, _tslib.__decorate)([_mobx.action], SecretFieldView.prototype, "setValidate", null); (0, _tslib.__decorate)([_mobx.observable], SecretFieldView.prototype, "flag", void 0); (0, _tslib.__decorate)([_mobx.action], SecretFieldView.prototype, "setFlag", null); (0, _tslib.__decorate)([_mobx.observable], SecretFieldView.prototype, "verifyTypeObj", void 0); (0, _tslib.__decorate)([_mobx.action], SecretFieldView.prototype, "setVerifyTypeObj", null); (0, _tslib.__decorate)([_autobind["default"]], SecretFieldView.prototype, "handleFormUpdate", null); (0, _tslib.__decorate)([_autobind["default"]], SecretFieldView.prototype, "handleVerifySliderCancel", null); (0, _tslib.__decorate)([_autobind["default"]], SecretFieldView.prototype, "handleClickButton", null); SecretFieldView = (0, _tslib.__decorate)([_mobxReact.observer], SecretFieldView); var _default = SecretFieldView; exports["default"] = _default; //# sourceMappingURL=SecretFieldView.js.map