This commit is contained in:
wenjiarui 2023-08-14 21:21:32 +08:00
parent 0cefbeecc1
commit 27ed2f6ac5
7 changed files with 96 additions and 13 deletions

View File

@ -26,6 +26,7 @@ exports.default = OakComponent({
data: { data: {
mobileValue: '', mobileValue: '',
mobileValueReady: false, mobileValueReady: false,
isNew: false,
}, },
methods: { methods: {
onMobileChange: function (value) { onMobileChange: function (value) {
@ -53,9 +54,15 @@ exports.default = OakComponent({
if (data.length > 0) { if (data.length > 0) {
this.clean(); this.clean();
this.setId(data[0].id); this.setId(data[0].id);
this.setState({
isNew: false,
});
} }
else { else {
this.clean(); this.clean();
this.setState({
isNew: true,
});
this.create({ this.create({
mobile: value, mobile: value,
user: { user: {
@ -63,7 +70,6 @@ exports.default = OakComponent({
action: 'create', action: 'create',
data: { data: {
id: (0, uuid_1.generateNewId)(), id: (0, uuid_1.generateNewId)(),
password: '12345678',
} }
} }
}); });
@ -85,9 +91,28 @@ exports.default = OakComponent({
}, },
onConfirm: function () { onConfirm: function () {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var userValue;
return tslib_1.__generator(this, function (_a) { return tslib_1.__generator(this, function (_a) {
switch (_a.label) { switch (_a.label) {
case 0: return [4 /*yield*/, this.execute()]; case 0:
if (this.state.isNew) {
userValue = this.getFreshValue('user');
if (!userValue.name) {
this.setMessage({
type: 'error',
content: '用户姓名未填写',
});
return [2 /*return*/];
}
if (!userValue.password) {
this.setMessage({
type: 'error',
content: '用户密码未设置',
});
return [2 /*return*/];
}
}
return [4 /*yield*/, this.execute()];
case 1: case 1:
_a.sent(); _a.sent();
this.setState({ this.setState({

View File

@ -7,6 +7,7 @@ export default function Render(props: WebComponentProps<EntityDict, 'mobile', fa
mobileValue: string; mobileValue: string;
mobileValueReady: boolean; mobileValueReady: boolean;
userId: string; userId: string;
isNew: boolean;
}, { }, {
onMobileChange: (value: string) => Promise<void>; onMobileChange: (value: string) => Promise<void>;
onConfirm: () => Promise<void>; onConfirm: () => Promise<void>;

View File

@ -2,12 +2,15 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib"); var tslib_1 = require("tslib");
var jsx_runtime_1 = require("react/jsx-runtime"); var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var antd_1 = require("antd"); var antd_1 = require("antd");
var web_module_less_1 = tslib_1.__importDefault(require("./web.module.less")); var web_module_less_1 = tslib_1.__importDefault(require("./web.module.less"));
var index_1 = tslib_1.__importDefault(require("../onUser/index")); var index_1 = tslib_1.__importDefault(require("../onUser/index"));
function Render(props) { function Render(props) {
var _a = props.data, mobileValue = _a.mobileValue, mobileValueReady = _a.mobileValueReady, relations = _a.relations, entity = _a.entity, entityId = _a.entityId, userId = _a.userId, oakFullpath = _a.oakFullpath, oakExecutable = _a.oakExecutable; var _this = this;
var _a = props.data, mobileValue = _a.mobileValue, mobileValueReady = _a.mobileValueReady, relations = _a.relations, entity = _a.entity, entityId = _a.entityId, userId = _a.userId, oakFullpath = _a.oakFullpath, oakExecutable = _a.oakExecutable, isNew = _a.isNew;
var _b = props.methods, onConfirm = _b.onConfirm, onMobileChange = _b.onMobileChange, onReset = _b.onReset; var _b = props.methods, onConfirm = _b.onConfirm, onMobileChange = _b.onMobileChange, onReset = _b.onReset;
var _c = tslib_1.__read((0, react_1.useState)(false), 2), passwordConfirm = _c[0], setPasswordConfirm = _c[1];
return ((0, jsx_runtime_1.jsxs)("div", tslib_1.__assign({ className: web_module_less_1.default.container }, { children: [(0, jsx_runtime_1.jsx)(antd_1.Form, tslib_1.__assign({ colon: true, labelCol: { span: 4 }, wrapperCol: { span: 8 } }, { children: (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: "\u624B\u673A\u53F7\u7801", name: "mobile", rules: [ return ((0, jsx_runtime_1.jsxs)("div", tslib_1.__assign({ className: web_module_less_1.default.container }, { children: [(0, jsx_runtime_1.jsx)(antd_1.Form, tslib_1.__assign({ colon: true, labelCol: { span: 4 }, wrapperCol: { span: 8 } }, { children: (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: "\u624B\u673A\u53F7\u7801", name: "mobile", rules: [
{ {
required: true, required: true,
@ -25,8 +28,16 @@ function Render(props) {
var strValue = e.target.value; var strValue = e.target.value;
onMobileChange(strValue); onMobileChange(strValue);
}, placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7\u7801", type: "tel" }) }) })) })), mobileValueReady && userId && ((0, jsx_runtime_1.jsx)(index_1.default, { oakAutoUnmount: true, oakPath: oakFullpath ? "".concat(oakFullpath, ".user") }, placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7\u7801", type: "tel" }) }) })) })), mobileValueReady && userId && ((0, jsx_runtime_1.jsx)(index_1.default, { oakAutoUnmount: true, oakPath: oakFullpath ? "".concat(oakFullpath, ".user")
: undefined, entity: entity, entityId: entityId, relations: relations, oakId: userId })), (0, jsx_runtime_1.jsx)(antd_1.Form, tslib_1.__assign({ colon: true, labelCol: { span: 4 }, wrapperCol: { span: 8 } }, { children: (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ wrapperCol: { offset: 4 } }, { children: (0, jsx_runtime_1.jsxs)(antd_1.Space, { children: [(0, jsx_runtime_1.jsx)(antd_1.Button, tslib_1.__assign({ type: "primary", onClick: function () { : undefined, entity: entity, entityId: entityId, relations: relations, oakId: userId, setPasswordConfirm: setPasswordConfirm })), (0, jsx_runtime_1.jsx)(antd_1.Form, tslib_1.__assign({ colon: true, labelCol: { span: 4 }, wrapperCol: { span: 8 } }, { children: (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ wrapperCol: { offset: 4 } }, { children: (0, jsx_runtime_1.jsxs)(antd_1.Space, { children: [(0, jsx_runtime_1.jsx)(antd_1.Button, tslib_1.__assign({ type: "primary", onClick: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
onConfirm(); return tslib_1.__generator(this, function (_a) {
}, disabled: !oakExecutable }, { children: "\u63D0\u4EA4" })), (0, jsx_runtime_1.jsx)(antd_1.Button, tslib_1.__assign({ htmlType: "reset", onClick: function () { return onReset(); } }, { children: "\u91CD\u7F6E" }))] }) })) }))] }))); switch (_a.label) {
case 0: return [4 /*yield*/, onConfirm()];
case 1:
_a.sent();
setPasswordConfirm(false);
return [2 /*return*/];
}
});
}); }, disabled: !oakExecutable || (isNew && !passwordConfirm) }, { children: "\u63D0\u4EA4" })), (0, jsx_runtime_1.jsx)(antd_1.Button, tslib_1.__assign({ htmlType: "reset", onClick: function () { return onReset(); } }, { children: "\u91CD\u7F6E" }))] }) })) }))] })));
} }
exports.default = Render; exports.default = Render;

View File

@ -6,5 +6,6 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
relations: string[]; relations: string[];
mobile: string; mobile: string;
isComponent: boolean; isComponent: boolean;
setPasswordConfirm: (value: boolean) => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>; }>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
export default _default; export default _default;

View File

@ -47,6 +47,7 @@ exports.default = OakComponent({
relations: [], relations: [],
mobile: '', mobile: '',
isComponent: false, isComponent: false,
setPasswordConfirm: function (value) { }
}, },
data: { data: {
userRelationRelativePath: '', userRelationRelativePath: '',

View File

@ -11,6 +11,7 @@ export default function Render(props: WebComponentProps<EntityDict, 'user', fals
entity: keyof EntityDict; entity: keyof EntityDict;
entityId: string; entityId: string;
isNew: boolean; isNew: boolean;
setPasswordConfirm: (value: boolean) => void;
}, { }, {
onMobileChange: (value: string) => Promise<void>; onMobileChange: (value: string) => Promise<void>;
onConfirm: () => Promise<void>; onConfirm: () => Promise<void>;

View File

@ -2,14 +2,20 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib"); var tslib_1 = require("tslib");
var jsx_runtime_1 = require("react/jsx-runtime"); var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var antd_1 = require("antd"); var antd_1 = require("antd");
var web_module_less_1 = tslib_1.__importDefault(require("./web.module.less")); var web_module_less_1 = tslib_1.__importDefault(require("./web.module.less"));
var userRelation_1 = tslib_1.__importDefault(require("./userRelation")); var userRelation_1 = tslib_1.__importDefault(require("./userRelation"));
var string_1 = require("oak-domain/lib/utils/string"); var string_1 = require("oak-domain/lib/utils/string");
var icons_1 = require("@ant-design/icons"); var icons_1 = require("@ant-design/icons");
var password_1 = require("../../../../utils/password");
function Render(props) { function Render(props) {
var _a = props.data, name = _a.name, isNew = _a.isNew, nickname = _a.nickname, password = _a.password, relations = _a.relations, oakFullpath = _a.oakFullpath, entity = _a.entity, entityId = _a.entityId; var _a = props.data, name = _a.name, isNew = _a.isNew, nickname = _a.nickname, password = _a.password, relations = _a.relations, oakFullpath = _a.oakFullpath, entity = _a.entity, entityId = _a.entityId, setPasswordConfirm = _a.setPasswordConfirm;
var _b = props.methods, t = _b.t, update = _b.update; var _b = props.methods, t = _b.t, update = _b.update;
var _c = tslib_1.__read((0, react_1.useState)(''), 2), password2 = _c[0], setPassword2 = _c[1];
var _d = tslib_1.__read((0, react_1.useState)(''), 2), validateHelp = _d[0], setValidateHelp = _d[1];
var _e = tslib_1.__read((0, react_1.useState)(''), 2), validateHelp1 = _e[0], setValidateHelp1 = _e[1];
var _f = tslib_1.__read((0, react_1.useState)(''), 2), validateStatus = _f[0], setValidateStatus = _f[1];
return ((0, jsx_runtime_1.jsx)("div", tslib_1.__assign({ className: web_module_less_1.default.container }, { children: (0, jsx_runtime_1.jsxs)(antd_1.Form, tslib_1.__assign({ colon: true, labelCol: { span: 4 }, wrapperCol: { span: 8 } }, { children: [(0, jsx_runtime_1.jsx)(antd_1.Form.Item, { style: { marginBottom: 0 }, label: (0, jsx_runtime_1.jsx)("div", tslib_1.__assign({ className: web_module_less_1.default.tip }, { children: !isNew ? t('existedUser') : t('newUser') })), colon: false }), (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: t('user:attr.name'), name: "name", rules: [ return ((0, jsx_runtime_1.jsx)("div", tslib_1.__assign({ className: web_module_less_1.default.container }, { children: (0, jsx_runtime_1.jsxs)(antd_1.Form, tslib_1.__assign({ colon: true, labelCol: { span: 4 }, wrapperCol: { span: 8 } }, { children: [(0, jsx_runtime_1.jsx)(antd_1.Form.Item, { style: { marginBottom: 0 }, label: (0, jsx_runtime_1.jsx)("div", tslib_1.__assign({ className: web_module_less_1.default.tip }, { children: !isNew ? t('existedUser') : t('newUser') })), colon: false }), (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: t('user:attr.name'), name: "name", rules: [
{ {
required: true, required: true,
@ -24,16 +30,53 @@ function Render(props) {
required: true, required: true,
}, },
] }, { children: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(antd_1.Input, { disabled: true, value: nickname }) }) })) : ] }, { children: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(antd_1.Input, { disabled: true, value: nickname }) }) })) :
(0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: t('user:attr.password'), name: "password", rules: [ (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: t('user:attr.password'), name: "password", help: validateHelp1, rules: [
{ {
required: true, required: true,
message: '请输入密码',
validator: function (_, value) {
if (value.length < 8) {
setValidateHelp1('密码最短长度为8位');
setValidateStatus('error');
return;
}
else {
setValidateHelp1('');
setValidateStatus('');
}
if (password2) {
setValidateHelp(value === password2 ? '' : '两次输入的密码不一致,请检查');
setValidateStatus(value === password2 ? 'success' : 'error');
}
}
}, },
] }, { children: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(antd_1.Input.Password, { value: password, onChange: function (e) { ], hasFeedback: true, validateStatus: validateStatus }, { children: (0, jsx_runtime_1.jsx)(antd_1.Input.Password, { value: password, onChange: function (e) {
var strValue = e.target.value; var strValue = e.target.value;
update({ update({
password: strValue, password: strValue,
}); });
}, iconRender: function (visible) { return (visible ? (0, jsx_runtime_1.jsx)(icons_1.EyeTwoTone, {}) : (0, jsx_runtime_1.jsx)(icons_1.EyeInvisibleOutlined, {})); }, placeholder: t('placeholder.password') }) }) })) }), (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: t('auth'), rules: [ setPasswordConfirm(strValue === password2 && strValue !== '');
}, iconRender: function (visible) { return (visible ? (0, jsx_runtime_1.jsx)(icons_1.EyeTwoTone, {}) : (0, jsx_runtime_1.jsx)(icons_1.EyeInvisibleOutlined, {})); }, placeholder: t('placeholder.password') }) })), (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: '确认密码', name: "passwordConfirm", rules: [
{
required: true,
validator: function (_, value) {
if (password.length < 8) {
return;
}
setValidateHelp(value === password ? '' : '两次输入的密码不一致,请检查');
setValidateStatus(value === password ? 'success' : 'error');
}
},
], validateTrigger: "onChange", help: validateHelp, validateStatus: validateStatus, hasFeedback: true }, { children: (0, jsx_runtime_1.jsx)(antd_1.Input.Password, { value: password2, onChange: function (e) {
var strValue = e.target.value;
setPassword2(strValue);
if (password === strValue) {
update({
passwordSha1: (0, password_1.encryptPasswordSha1)(password)
});
}
setPasswordConfirm(password === strValue);
}, iconRender: function (visible) { return (visible ? (0, jsx_runtime_1.jsx)(icons_1.EyeTwoTone, {}) : (0, jsx_runtime_1.jsx)(icons_1.EyeInvisibleOutlined, {})); }, placeholder: '请再次输入密码' }) }))] }), (0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: t('auth'), rules: [
{ {
required: true, required: true,
}, },