choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
543 lines (462 loc) • 18.5 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
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 _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
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/TextField"));
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");
var SecretFieldView = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(SecretFieldView, _Component);
var _super = (0, _createSuper2["default"])(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: "prefixCls",
get: function get() {
var context = this.context;
return context.getProPrefixCls('secret-field');
} // 滑块拖到最右
}, {
key: "handleSuccess",
value: function handleSuccess() {
var _this2 = this;
var context = this.context,
formDs = this.formDs; // 发送信息以获取验证码
var secretFieldFetchVerifyCode = context.getConfig('secretFieldFetchVerifyCode');
if (secretFieldFetchVerifyCode) {
var countDown = this.props.countDown;
var type = formDs && formDs.current && formDs.current.get('verifyType');
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 _this3 = this;
var context = this.context; // 编辑-校验验证码,返回原始值
var secretFieldQueryData = context.getConfig('secretFieldQueryData');
if (secretFieldQueryData) {
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,
formDs = this.formDs;
var current = formDs && formDs.current;
var type = current && current.get('verifyType');
var params = {
type: type,
_token: token,
fieldName: name,
captchaKey: captchaKey,
captcha: captcha,
action: 'edit'
};
secretFieldQueryData(params).then(function (res) {
if (res && res.failed) {
// 校验失败
return;
}
if (current) {
// 编辑-返回原始数据
current.set(name, res);
}
_this3.setFlag('edit');
});
} else {
this.setFlag('edit');
}
} // 确定可查看
}, {
key: "handleQuery",
value: function handleQuery() {
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,
formDs = this.formDs;
var secretFieldQueryData = context.getConfig('secretFieldQueryData');
var type = formDs && formDs.current && formDs.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 && res.failed) {
// 校验失败
return;
} // 查看-返回原始数据
if (onChange) {
if (res) {
onChange(res);
} else {
onChange('');
}
}
if (modal) {
modal.close();
if (record) {
record.setState("_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$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,
formDs = this.formDs;
var editValue = formDs && formDs.current && formDs.current.get(name);
if (pattern) {
var newPattern = this.generatePattern(pattern);
if (newPattern.test(editValue) === false) {
// 正则校验不通过
this.setValidate(false);
return;
}
}
if (required && !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 && 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 name = _ref.name,
value = _ref.value;
var verifyTypeObj = this.verifyTypeObj; // 修改验证方式时,自动填充验证号码
if (verifyTypeObj.length > 0 && name === 'verifyType') {
var current = this.formDs && this.formDs.current;
if (current) {
verifyTypeObj.forEach(function (item) {
if (item.type === value) {
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 /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-modal")
}, flag !== 'slider' && /*#__PURE__*/_react["default"].createElement(_Form["default"], {
className: "".concat(prefixCls, "-modal-form"),
dataSet: this.formDs,
columns: 4,
labelWidth: "auto"
}, flag === 'verify' && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_SelectBox["default"], {
name: "verifyType",
colSpan: 4,
disabled: count
}, verifyTypeObj && verifyTypeObj.map(function (item) {
return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
value: item.type,
key: item.type
}, item.name);
})), /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
name: "verifyNumber",
colSpan: 4,
disabled: true
}), /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
name: "verifyCode",
colSpan: 3,
valueChangeAction: _enum3.ValueChangeAction.input
}), /*#__PURE__*/_react["default"].createElement(_CountDownButton["default"], {
onClick: this.handleClickButton,
countDown: countDown,
verifyNumber: formDs.current.get('verifyNumber')
}), /*#__PURE__*/_react["default"].createElement("td", {
className: "".concat(prefixCls, "-modal-btns"),
colSpan: 4
}, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
onClick: this.handleCancel
}, (0, _localeContext.$l)('SecretField', 'cancel')), readOnly ? /*#__PURE__*/_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')) : /*#__PURE__*/_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' && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
name: name,
colSpan: 4,
restrict: restrict
}), /*#__PURE__*/_react["default"].createElement("td", {
colSpan: 4,
className: "".concat(prefixCls, "-modal-edit-btns")
}, !validate && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("p", {
className: "".concat(prefixCls, "-modal-validate")
}, (0, _localeContext.$l)('SecretField', 'type_mismatch', {
label: label
})), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
onClick: this.handleCancel
}, (0, _localeContext.$l)('SecretField', 'cancel')), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
onClick: this.handleEdit,
color: _enum2.ButtonColor.primary
}, (0, _localeContext.$l)('SecretField', 'ok_btn'))))), flag === 'slider' && /*#__PURE__*/_react["default"].createElement(_VerifySlider["default"], {
onCancel: this.handleVerifySliderCancel,
onSuccess: this.handleSuccess
}));
}
}], [{
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