From 983ac16101fdd52eb90513790be8bc8cb5f182d4 Mon Sep 17 00:00:00 2001 From: Xc Date: Sun, 4 May 2025 19:29:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86user/info=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E5=9C=A8=E7=BB=84=E4=BB=B6=E5=86=85=E5=88=9B?= =?UTF-8?q?=E5=BB=BAmobile=E5=92=8Cpassword?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- es/components/articleMenu/treeCell/index.js | 1 - .../config/style/platform/index.d.ts | 2 +- es/components/extraFile/commit/index.d.ts | 4 +- es/components/subwayLine/list/web.js | 26 +------ es/components/system/detail/web.pc.js | 6 +- es/components/system/panel/web.pc.js | 2 +- es/components/user/info/index.d.ts | 1 + es/components/user/info/index.js | 58 +++++++++++++++- es/components/user/info/index.xml | 68 ++++++++++++++----- es/components/user/info/locales/zh_CN.json | 3 +- es/components/user/info/web.d.ts | 5 +- es/components/user/info/web.js | 20 +++--- es/components/user/info/web.pc.d.ts | 6 +- es/components/user/info/web.pc.js | 34 +++++----- es/components/wechatLogin/qrCode/index.d.ts | 2 +- es/components/wechatMenu/menuInfo/index.js | 3 +- es/components/wechatMenu/textClick/web.pc.js | 53 +++++++++------ es/data/i18n.js | 35 +--------- es/triggers/index.d.ts | 2 +- es/triggers/toDo.d.ts | 2 +- lib/data/i18n.js | 35 +--------- lib/triggers/index.d.ts | 2 +- lib/triggers/toDo.d.ts | 2 +- src/components/user/info/index.ts | 62 +++++++++++++++-- src/components/user/info/index.xml | 68 ++++++++++++++----- src/components/user/info/locales/zh_CN.json | 3 +- src/components/user/info/web.pc.tsx | 21 +++--- src/components/user/info/web.tsx | 22 +++--- src/data/i18n.ts | 35 +--------- 29 files changed, 328 insertions(+), 255 deletions(-) diff --git a/es/components/articleMenu/treeCell/index.js b/es/components/articleMenu/treeCell/index.js index 6142ab738..044ee9ff6 100644 --- a/es/components/articleMenu/treeCell/index.js +++ b/es/components/articleMenu/treeCell/index.js @@ -128,7 +128,6 @@ export default OakComponent({ gotoDoc(articleMenuId) { const { onMenuViewById } = this.props; onMenuViewById && onMenuViewById(articleMenuId); - // window.open(`/article/doc?articleMenuId=${articleMenuId}`); } } }); diff --git a/es/components/config/style/platform/index.d.ts b/es/components/config/style/platform/index.d.ts index 2f2afe1c1..d8ca7e5a9 100644 --- a/es/components/config/style/platform/index.d.ts +++ b/es/components/config/style/platform/index.d.ts @@ -1,7 +1,7 @@ import { Style } from '../../../../types/Style'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => React.ReactElement; diff --git a/es/components/extraFile/commit/index.d.ts b/es/components/extraFile/commit/index.d.ts index 9e4e575b5..ceae5cef6 100644 --- a/es/components/extraFile/commit/index.d.ts +++ b/es/components/extraFile/commit/index.d.ts @@ -15,7 +15,7 @@ declare const _default: ) => unknown) | undefined; - type?: "button" | "reset" | "submit" | undefined; + type?: "reset" | "submit" | "button" | undefined; shape?: "default" | "rounded" | "rectangular" | undefined; children?: import("react").ReactNode; } & Pick & import("react").ButtonHTMLAttributes, "id" | "onMouseUp" | "onMouseDown" | "onTouchStart" | "onTouchEnd"> & { diff --git a/es/components/subwayLine/list/web.js b/es/components/subwayLine/list/web.js index 508b7d09a..d5d100b29 100644 --- a/es/components/subwayLine/list/web.js +++ b/es/components/subwayLine/list/web.js @@ -38,36 +38,12 @@ export default function Render(props) { }}> 编辑 )} - - {/* {!nodeData.isLeaf && ( - - // - )} */} ); }}/> {openSubway && ( setSubway(false)} openSubway={openSubway} oakId={subwayId} oakPath={`${oakFullpath}.${subwayId}`} oakAutoUnmount={true}/>)} - {openStation && ( setStation(false)} openStation={openStation} oakId={stationId} subwayId={subwayId} oakPath={`$subwayLine/upsertStation,${stationId}`} oakAutoUnmount={true}/>)} + {openStation && ( setStation(false)} openStation={openStation} oakId={stationId} subwayId={subwayId} oakPath={`$subwayLine/list-UpsertStation-${stationId}`} oakAutoUnmount={true}/>)} ); } diff --git a/es/components/system/detail/web.pc.js b/es/components/system/detail/web.pc.js index 747f4478b..2d1f79ad3 100644 --- a/es/components/system/detail/web.pc.js +++ b/es/components/system/detail/web.pc.js @@ -12,9 +12,7 @@ export default function Render(props) { clean(); setOpen(false); }} width={500} footer={ - } @@ -112,9 +112,9 @@ export default function Render(props) { {'********'} {editable && } @@ -126,17 +126,17 @@ export default function Render(props) { {wechatUser.nickname} + ? `${oakFullpath}.wechatUser$user` + : undefined}/> ) : ()} )} - + } { setOpen(false); diff --git a/es/components/wechatLogin/qrCode/index.d.ts b/es/components/wechatLogin/qrCode/index.d.ts index 21f928111..db7fcdc9b 100644 --- a/es/components/wechatLogin/qrCode/index.d.ts +++ b/es/components/wechatLogin/qrCode/index.d.ts @@ -1,6 +1,6 @@ import { EntityDict } from '../../../oak-app-domain'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => React.ReactElement; diff --git a/es/components/wechatMenu/menuInfo/index.js b/es/components/wechatMenu/menuInfo/index.js index 952c5a34f..eaa88c526 100644 --- a/es/components/wechatMenu/menuInfo/index.js +++ b/es/components/wechatMenu/menuInfo/index.js @@ -31,7 +31,8 @@ export default OakComponent({ content.key = config.button[currentIndex].sub_button[index].key || content.key; config.button[currentIndex].sub_button[index] = content; changeConfig(config); - } else { + } + else { content.name = config.button[index].name; content.key = config.button[index].key || content.key; content.sub_button = [...config.button[index].sub_button]; diff --git a/es/components/wechatMenu/textClick/web.pc.js b/es/components/wechatMenu/textClick/web.pc.js index de8fced1b..7b6434107 100644 --- a/es/components/wechatMenu/textClick/web.pc.js +++ b/es/components/wechatMenu/textClick/web.pc.js @@ -1,8 +1,7 @@ import React from 'react'; +import { Input } from 'antd'; import Style from './web.module.less'; import "@wangeditor/editor/dist/css/style.css"; // 引入 css -import { Editor, Toolbar } from "@wangeditor/editor-for-react"; -import { Input } from 'antd'; const toolbarConfig = { excludeKeys: [ "blockquote", @@ -25,25 +24,35 @@ export default function Render(props) { const { value, editor, getDecidedMenuContent } = props.data; const { setEditor, setHtml } = props.methods; return (
- {/* - { - const html = editorDom.getHtml(); - if (html && html !== '


') { - getDecidedMenuContent(html); - } - }} mode="default" style={{ - minHeight: 200, - maxHeight: 400, - overflowY: 'auto', - }}/> */} - + { - getDecidedMenuContent(e.target.value.trim()); - }} /> -
); + onCreated={setEditor} + onChange={(editorDom: any) => { + const html = editorDom.getHtml(); + if(html && html !== '


') { + getDecidedMenuContent(html); + } + }} + mode="default" + style={{ + minHeight: 200, + maxHeight: 400, + overflowY: 'auto', + }} + /> */} + { + getDecidedMenuContent(e.target.value?.trim()); + }}/> + ); } diff --git a/es/data/i18n.js b/es/data/i18n.js index 2da1f92d0..c401580b2 100644 --- a/es/data/i18n.js +++ b/es/data/i18n.js @@ -156,38 +156,6 @@ const i18ns = [ "moreThanOne": "多于一条手机号" } }, - { - id: "d558d71567b4e379250a5f2cd43e4a27", - namespace: "oak-general-business-c-paper-detail", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/detail", - data: { - "detail": "详情" - } - }, - { - id: "992af92da3504b0ec27f55a4ac4e2432", - namespace: "oak-general-business-c-paper-list", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/list", - data: { - "action": { - "add": "添加" - } - } - }, - { - id: "6cedaa26d9738d509c3c99ad06064282", - namespace: "oak-general-business-c-paper-preview", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/preview", - data: { - "detail": "预览" - } - }, { id: "9bdbb9993789ecd48e7b0e10b7117620", namespace: "oak-general-business-c-passport", @@ -325,7 +293,8 @@ const i18ns = [ "unbindingWechat": "确定解绑微信账号", "placeholder": { "nickname": "请输入昵称,长度不超过20", - "Captcha": "输入4位短信验证码" + "Captcha": "输入4位短信验证码", + "mobile": "输入11位手机号" }, "unset": "未设置", "unknown": "未知", diff --git a/es/triggers/index.d.ts b/es/triggers/index.d.ts index 3e4bf7585..fc7f50979 100644 --- a/es/triggers/index.d.ts +++ b/es/triggers/index.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger>)[]; +declare const _default: (import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger>)[]; export default _default; diff --git a/es/triggers/toDo.d.ts b/es/triggers/toDo.d.ts index e5be399e1..1d9bc2ce2 100644 --- a/es/triggers/toDo.d.ts +++ b/es/triggers/toDo.d.ts @@ -14,7 +14,7 @@ export declare function createToDo; +}, userIds?: string[]): Promise<0 | 1>; /** * 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成 * 必须在entity的action的后trigger中调用 diff --git a/lib/data/i18n.js b/lib/data/i18n.js index 2e2269aad..b69070228 100644 --- a/lib/data/i18n.js +++ b/lib/data/i18n.js @@ -158,38 +158,6 @@ const i18ns = [ "moreThanOne": "多于一条手机号" } }, - { - id: "d558d71567b4e379250a5f2cd43e4a27", - namespace: "oak-general-business-c-paper-detail", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/detail", - data: { - "detail": "详情" - } - }, - { - id: "992af92da3504b0ec27f55a4ac4e2432", - namespace: "oak-general-business-c-paper-list", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/list", - data: { - "action": { - "add": "添加" - } - } - }, - { - id: "6cedaa26d9738d509c3c99ad06064282", - namespace: "oak-general-business-c-paper-preview", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/preview", - data: { - "detail": "预览" - } - }, { id: "9bdbb9993789ecd48e7b0e10b7117620", namespace: "oak-general-business-c-passport", @@ -327,7 +295,8 @@ const i18ns = [ "unbindingWechat": "确定解绑微信账号", "placeholder": { "nickname": "请输入昵称,长度不超过20", - "Captcha": "输入4位短信验证码" + "Captcha": "输入4位短信验证码", + "mobile": "输入11位手机号" }, "unset": "未设置", "unknown": "未知", diff --git a/lib/triggers/index.d.ts b/lib/triggers/index.d.ts index 3e4bf7585..fc7f50979 100644 --- a/lib/triggers/index.d.ts +++ b/lib/triggers/index.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger>)[]; +declare const _default: (import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger> | import("oak-domain/lib/types").Trigger>)[]; export default _default; diff --git a/lib/triggers/toDo.d.ts b/lib/triggers/toDo.d.ts index e5be399e1..1d9bc2ce2 100644 --- a/lib/triggers/toDo.d.ts +++ b/lib/triggers/toDo.d.ts @@ -14,7 +14,7 @@ export declare function createToDo; +}, userIds?: string[]): Promise<0 | 1>; /** * 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成 * 必须在entity的action的后trigger中调用 diff --git a/src/components/user/info/index.ts b/src/components/user/info/index.ts index bb6d77f5a..afc20e6f3 100644 --- a/src/components/user/info/index.ts +++ b/src/components/user/info/index.ts @@ -2,6 +2,7 @@ import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid'; import { OakOperationUnpermittedException } from 'oak-domain/lib/types'; import dayjs from 'dayjs'; import { EntityDict } from '../../../oak-app-domain'; +import { isMobile } from 'oak-domain/lib/utils/validator'; export default OakComponent({ entity: 'user', @@ -69,6 +70,7 @@ export default OakComponent({ nickname: 1, }, }, + hasPassword: 1, }, isList: false, formData({ data: user, features, origin }) { @@ -98,6 +100,7 @@ export default OakComponent({ return { id: user?.id, name: user?.name, + hasPassword: user?.password || user?.hasPassword, nameDirty: origin && user?.name !== origin?.name, nickname: user?.nickname, nnDirty: origin && user?.nickname !== origin?.nickname, @@ -124,6 +127,7 @@ export default OakComponent({ canSyncPublic, editable, executable, + isCreation: this.isCreation(), }; }, data: { @@ -149,14 +153,17 @@ export default OakComponent({ }, ], refreshing: false, - editAttr: '', + mobileInput: '', + mobileInputLegal: false, + }, actions: ['update'], properties: { changeMobileUrl: '', changePasswordUrl: '', authenticateUrl: '', + onConfirm: () => undefined as void, }, methods: { checkEditable(attr: string) { @@ -192,21 +199,33 @@ export default OakComponent({ throw err; } }, - goChangeMobile() { + editMobile() { this.checkEditable('nickname'); + if (this.state.isCreation) { + this.setState({ + editAttr: 'mobile', + }); + return; + } const { changeMobileUrl, oakId } = this.props; if (changeMobileUrl) { this.navigateTo({ url: changeMobileUrl, - oakId, + userId: oakId, }); } else if (process.env.NODE_ENV === 'development') { console.warn('changeMobileUrl unset'); } }, - goChangePassword() { + editPassword() { this.checkEditable('password'); + if (this.state.isCreation) { + this.setState({ + editAttr: 'password', + }); + return; + } const { changePasswordUrl, oakId } = this.props; if (changePasswordUrl) { this.navigateTo({ @@ -279,6 +298,15 @@ export default OakComponent({ birth, }); }, + + changePasswordMp(e: WechatMiniprogram.Input) { + const { value } = e.detail; + this.update({ + password: value, + hasPassword: !!value, + }); + }, + changeNicknameMp(e: WechatMiniprogram.Input) { const { value } = e.detail; this.update({ @@ -291,6 +319,30 @@ export default OakComponent({ name: value, }); }, + inputMobileMp(e: WechatMiniprogram.Input) { + const { value } = e.detail; + const mobileInputLegal = !!isMobile(value); + this.setState({ + mobileInput: value, + mobileInputLegal, + }); + }, + async confirmMobileInputMp() { + const { mobileInput } = this.state; + this.update({ + mobile$user: [ + { + id: await generateNewIdAsync(), + action: 'create', + data: { + id: await generateNewIdAsync(), + mobile: mobileInput, + ableState: 'enabled', + } + }, + ], + }); + }, async unbindingWechat(captcha?: string) { const { mobile, wechatUser } = this.state; try { @@ -348,6 +400,8 @@ export default OakComponent({ async onConfirm() { await this.execute(); this.reRender(); + const { onConfirm } = this.props; + onConfirm && onConfirm(); }, }, }); diff --git a/src/components/user/info/index.xml b/src/components/user/info/index.xml index ec56f1ad9..00681d22e 100644 --- a/src/components/user/info/index.xml +++ b/src/components/user/info/index.xml @@ -77,11 +77,26 @@ - + {{mobile || '未绑定'}} - - ****** + + + + + + {{hasPassword ? '******' : '未设置'}} + @@ -108,25 +123,46 @@ - - + + + + {{item.label}} + + + + + + - - {{item.label}} - - - + + {{t('common::confirm')}} + + + \ No newline at end of file diff --git a/src/components/user/info/locales/zh_CN.json b/src/components/user/info/locales/zh_CN.json index fa217af5e..3786f9d02 100644 --- a/src/components/user/info/locales/zh_CN.json +++ b/src/components/user/info/locales/zh_CN.json @@ -13,7 +13,8 @@ "unbindingWechat": "确定解绑微信账号", "placeholder": { "nickname": "请输入昵称,长度不超过20", - "Captcha": "输入4位短信验证码" + "Captcha": "输入4位短信验证码", + "mobile": "输入11位手机号" }, "unset": "未设置", "unknown": "未知", diff --git a/src/components/user/info/web.pc.tsx b/src/components/user/info/web.pc.tsx index 31be0598a..8777c529f 100644 --- a/src/components/user/info/web.pc.tsx +++ b/src/components/user/info/web.pc.tsx @@ -47,14 +47,13 @@ export default function Render( userStateColor: string; idStateStr: string; idStateColor: string; - + isCreation: boolean; editable: boolean; }, { - goUserManage: () => void; - goChangeMobile: () => void; + editMobile: () => void; sendCaptcha: () => void; - goChangePassword: () => void; + editPassword: () => void; goAuthenticate: () => void; updateMyInfo: () => void; unbindingWechat: (captcha?: string) => void; @@ -65,12 +64,11 @@ export default function Render( const { t, updateMyInfo, - goChangeMobile, + editMobile, goAuthenticate, sendCaptcha, unbindingWechat, - goChangePassword, - goUserManage, + editPassword, } = methods; const { nickname, @@ -89,6 +87,7 @@ export default function Render( idStateColor, idStateStr, isRoot, + isCreation, } = data; const [open, setOpen] = useState(false); const [open2, setOpen2] = useState(false); @@ -217,7 +216,7 @@ export default function Render(
- + {!isCreation &&
{ if (mobile) { - goChangeMobile(); + editMobile(); return; } setOpen(true); @@ -262,7 +261,7 @@ export default function Render( disabled={!editable} size="small" onClick={() => { - goChangePassword(); + editPassword(); return; }} > @@ -301,7 +300,7 @@ export default function Render( )}
-
+
} void; - goChangePassword: () => void; + editMobile: () => void; + editPassword: () => void; goAuthenticate: () => void; setAvatar: () => void; refreshWechatPublicUserInfo: () => void; @@ -64,10 +65,10 @@ export default function render( const { t, clean, - goChangeMobile, + editMobile, goAuthenticate, refreshWechatPublicUserInfo, - goChangePassword, + editPassword, editNickname, editName, editGender, @@ -84,6 +85,7 @@ export default function render( birth, gender, mobile, + isCreation, id, canSyncPublic, refreshing, @@ -202,22 +204,22 @@ export default function render( > {t('user:attr.birth')} - { - goChangeMobile(); + editMobile(); }} > {t('mobile')} - - } + {!isCreation && { - goChangePassword(); + editPassword(); }} > {t('password')} - + } diff --git a/src/data/i18n.ts b/src/data/i18n.ts index 355920e36..44ef54a18 100644 --- a/src/data/i18n.ts +++ b/src/data/i18n.ts @@ -158,38 +158,6 @@ const i18ns: I18n[] = [ "moreThanOne": "多于一条手机号" } }, - { - id: "d558d71567b4e379250a5f2cd43e4a27", - namespace: "oak-general-business-c-paper-detail", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/detail", - data: { - "detail": "详情" - } - }, - { - id: "992af92da3504b0ec27f55a4ac4e2432", - namespace: "oak-general-business-c-paper-list", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/list", - data: { - "action": { - "add": "添加" - } - } - }, - { - id: "6cedaa26d9738d509c3c99ad06064282", - namespace: "oak-general-business-c-paper-preview", - language: "zh-CN", - module: "oak-general-business", - position: "src/components/paper/preview", - data: { - "detail": "预览" - } - }, { id: "9bdbb9993789ecd48e7b0e10b7117620", namespace: "oak-general-business-c-passport", @@ -327,7 +295,8 @@ const i18ns: I18n[] = [ "unbindingWechat": "确定解绑微信账号", "placeholder": { "nickname": "请输入昵称,长度不超过20", - "Captcha": "输入4位短信验证码" + "Captcha": "输入4位短信验证码", + "mobile": "输入11位手机号" }, "unset": "未设置", "unknown": "未知",