This commit is contained in:
Xu Chang 2024-08-30 14:26:00 +08:00
parent a50b3768af
commit 7532bef091
144 changed files with 964 additions and 322 deletions

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "address", true, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "address", true, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "address", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "address", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "application", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "application", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "application", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "application", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "application", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "application", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -22,7 +22,7 @@ export default function Render(props) {
{
label: <div className={Styles.tabLabel}>{t('config')}</div>,
key: 'config',
children: (<ConfigUpsert entity="application" entityId={id} config={config || {}} name={name} type={config?.type}/>),
children: (<ConfigUpsert entity="application" entityId={id} config={config || {}} name={name} type={type}/>),
},
{
label: <div className={Styles.tabLabel}>{t('style')}</div>,

View File

@ -1,4 +1,4 @@
/// <reference types="wechat-miniprogram" />
import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "application", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "application", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,5 +1,5 @@
import { EntityDict } from "../../oak-app-domain";
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "applicationPassport", true, {
systemId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,5 +1,5 @@
import { groupBy, isEqual } from "oak-domain/lib/utils/lodash";
import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid';
import { groupBy, isEqual, uniq } from "oak-domain/lib/utils/lodash";
import { generateNewId, generateNewIdAsync } from "oak-domain/lib/utils/uuid";
export default OakComponent({
entity: 'applicationPassport',
isList: true,
@ -49,47 +49,72 @@ export default OakComponent({
async 'aps,applications,passports'(prev, next) {
if (!this.arraysAreEqual(prev.aps, next.aps) || !this.arraysAreEqual(prev.applications, next.applications) || !this.arraysAreEqual(prev.passports, next.passports)) {
let apArray = [];
const records = groupBy(next.passports, 'type');
if (next.applications && next.applications.length > 0 && next.passports && next.passports.length > 0) {
for (const a of next.applications) {
let item = {
aId: a.id,
aName: a.name,
passports: [],
typeRecords: {},
defaultOptions: [],
defaultValue: '',
};
let pArray = [];
for (const p of next.passports) {
const { disabled, disabledTip } = this.checkDisabled(a, p);
pArray.push({
pId: p.id,
apId: await generateNewIdAsync(),
checked: false,
disabled,
disabledTip,
});
let typeRecords = {};
for (const key of Object.keys(records)) {
const r = records[key];
const render = this.getRender(key, r, a.type);
if (render === 'select') {
const passportOptions = r.map((ele) => {
const { disabled, disabledTip } = this.checkDisabled(a, ele);
return {
label: ele.type === 'email' ? ele.config.account : ele.config.appId,
value: ele.id,
apId: generateNewId(),
disabled,
disabledTip,
};
});
const d = !passportOptions.find((ele) => !ele.disabled);
let disabledTip = '';
if (d) {
disabledTip = '暂不支持该登录方式';
}
Object.assign(typeRecords, { [key]: { render, passportOptions, chekedValue: undefined, disabled: d, disabledTip } });
}
else {
const { disabled, disabledTip } = this.checkDisabled(a, r[0]);
const apId = await generateNewIdAsync();
Object.assign(typeRecords, { [key]: { render, pId: r[0].id, checked: false, disabled, disabledTip, apId, } });
}
}
Object.assign(item, { passports: pArray });
Object.assign(item, { typeRecords });
apArray.push(item);
}
if (next.aps && next.aps.length > 0) {
const applicationPassports = groupBy(next.aps, 'applicationId');
const aIds = Object.keys(applicationPassports);
for (const ap of next.aps) {
const aIdx = apArray.findIndex((ele) => ele.aId === ap.applicationId);
if (aIdx !== -1) {
const pIdx = apArray[aIdx].passports.findIndex((ele) => ele.pId === ap.passportId);
if (pIdx !== -1) {
apArray[aIdx].passports[pIdx].apId = ap.id;
apArray[aIdx].passports[pIdx].checked = true;
apArray[aIdx].defaultOptions.push({
label: this.t(`passport:v.type.${ap.passport.type}`),
value: ap.id,
});
if (ap.isDefault) {
apArray[aIdx].defaultValue = ap.id;
const p = ap.passport;
const t = p.type;
if (apArray[aIdx].typeRecords[t].render === 'select') {
apArray[aIdx].typeRecords[t].checkedValue = p.id;
apArray[aIdx].typeRecords[t].apId = ap.id;
const option = apArray[aIdx].typeRecords[t].passportOptions?.find((ele) => ele.value === p.id);
option && Object.assign(option, { apId: ap.id });
}
else {
if (apArray[aIdx].typeRecords[t].pId === p.id) {
apArray[aIdx].typeRecords[t].checked = true;
apArray[aIdx].typeRecords[t].apId = ap.id;
}
}
apArray[aIdx].defaultOptions.push({
label: this.t(`passport:v.type.${p.type}`),
value: ap.id,
});
if (ap.isDefault) {
apArray[aIdx].defaultValue = ap.id;
}
}
}
}
@ -104,6 +129,7 @@ export default OakComponent({
applications: [],
passports: [],
apArray: [],
types: [],
},
lifetimes: {
async ready() {
@ -141,9 +167,11 @@ export default OakComponent({
});
const applications = applicationDatas;
const passports = passportDatas;
const types = uniq(passports.map((ele) => ele.type));
this.setState({
applications,
passports,
types,
});
}
},
@ -180,37 +208,20 @@ export default OakComponent({
}
break;
case 'email':
// if (!(pConfig as EmailConfig).host || (pConfig as EmailConfig).host === '') {
// return {
// disabled: true,
// disabledTip: '邮箱登录未配置主机名',
// }
// } else if (!(pConfig as EmailConfig).port) {
// return {
// disabled: true,
// disabledTip: '邮箱登录未配置端口号',
// }
// } else
if (!pConfig.account || pConfig.account === '') {
return {
disabled: true,
disabledTip: '邮箱登录未配置账号',
};
}
// else if (!(pConfig as EmailConfig).password || (pConfig as EmailConfig).password === '') {
// return {
// disabled: true,
// disabledTip: '邮箱登录未配置SMTP授权码',
// }
// }
else if (!pConfig.subject || pConfig.subject === '') {
return {
disabled: true,
disabledTip: '邮箱登录未配置邮件主题',
};
}
else if ((!pConfig.text || pConfig.text === '') &&
(!pConfig.html || pConfig.html === '')) {
else if ((!pConfig.text || pConfig.text === '' || !pConfig.text?.includes('${code}')) &&
(!pConfig.html || pConfig.html === '' || !pConfig.html?.includes('${code}'))) {
return {
disabled: true,
disabledTip: '邮箱登录未配置邮件内容模板',
@ -287,11 +298,10 @@ export default OakComponent({
disabledTip: undefined,
};
},
async onCheckedChange(apId, pId, aId, checked) {
async onCheckedChange(aId, pId, checked, apId) {
if (checked) {
//create applicationPassport
this.addItem({
id: apId,
applicationId: aId,
passportId: pId,
isDefault: true,
@ -299,19 +309,44 @@ export default OakComponent({
}
else {
//remove id为apId的applicationPassport
this.removeItem(apId);
apId && this.removeItem(apId);
}
},
checkLastOne(aId, apId) {
checkLastOne(aId, pId) {
const { apArray } = this.state;
const idx = apArray.findIndex((ele) => ele.aId === aId);
if (idx !== -1) {
const otherChecked = apArray[idx].passports.filter((ele) => ele.checked && ele.apId !== apId);
if (!(otherChecked && otherChecked.length > 0)) {
return true;
const records = apArray[idx].typeRecords;
for (const key of Object.keys(records)) {
const r = records[key];
if ((r.checkedValue && r.checkedValue !== pId && !!r.checkedValue) || (r.pId && r.pId !== pId && !!r.checked)) {
return false;
}
}
return true;
}
return false;
},
async onSelectChange(aId, addPId, removeApId) {
if (removeApId) {
removeApId && this.removeItem(removeApId);
}
if (addPId) {
this.addItem({
applicationId: aId,
passportId: addPId,
isDefault: true,
});
}
},
getRender(pType, passports, aType) {
let render = 'switch';
if (passports.length > 1) {
if (aType === 'web' || (['wechatMp', 'wechatPublic'].includes(aType) && ['email', 'sms'].includes(pType))) {
render = 'select';
}
}
return render;
}
}
});

View File

@ -4,27 +4,40 @@ import { EntityDict } from '../../oak-app-domain';
type RowItem = {
aId: string;
aName: string;
passports: {
pId: string;
apId: string;
checked: boolean;
disabled: boolean;
disabledTip: string;
}[];
typeRecords: TypeRecord;
defaultOptions: {
label: string;
value: string;
}[];
defaultValue: string;
};
type TypeRecord = Record<string, {
render: 'switch' | 'select';
passportOptions?: PassportOption[];
checkedValue?: string;
pId?: string;
apId?: string;
checked?: boolean;
disabled: boolean;
disabledTip: string;
}>;
type PassportOption = {
label: string;
value: string;
apId: string;
disabled: boolean;
disabledTip?: string;
};
export default function render(props: WebComponentProps<EntityDict, 'applicationPassport', true, {
applicationPassports: EntityDict['applicationPassport']['OpSchema'][];
systemId: string;
applications: EntityDict['application']['Schema'][];
passports: EntityDict['passport']['Schema'][];
types: EntityDict['passport']['Schema']['type'][];
apArray: RowItem[];
}, {
onCheckedChange: (apId: string, pId: string, aId: string, checked: boolean) => void;
checkLastOne: (aId: string, apId: string) => boolean;
onCheckedChange: (aId: string, pId: string, checked: boolean, apId?: string) => void;
checkLastOne: (aId: string, pId: string) => boolean;
onSelectChange: (aId: string, addPId?: string, removeApId?: string) => void;
}>): React.JSX.Element;
export {};

View File

@ -1,12 +1,12 @@
import React from 'react';
import { Button, Space, Switch, Table, Tooltip, Modal, Select } from 'antd';
import { Button, Space, Switch, Table, Tooltip, Modal, Select, } from 'antd';
import Styles from './web.pc.module.less';
import { CheckOutlined, CloseOutlined, ExclamationCircleFilled } from '@ant-design/icons';
const { confirm } = Modal;
export default function render(props) {
const { data, methods } = props;
const { oakFullpath, oakDirty, oakExecutable, oakExecuting, applicationPassports, systemId, applications, passports, apArray, } = data;
const { clean, execute, t, onCheckedChange, updateItem, checkLastOne } = methods;
const { oakFullpath, oakDirty, oakExecutable, oakExecuting, applicationPassports, systemId, applications, passports, types, apArray, } = data;
const { clean, execute, t, onCheckedChange, updateItem, checkLastOne, onSelectChange } = methods;
if (!(applications && applications.length > 0)) {
return (<div>请先前往应用管理创建application</div>);
}
@ -19,38 +19,54 @@ export default function render(props) {
key: 'applicationName',
dataIndex: 'aName',
fixed: 'left',
width: 100,
},
];
const showConfirm = (apId, pId, aId) => {
const showConfirm = (aId, pId, apId) => {
confirm({
title: '当前application将无登录方式',
icon: <ExclamationCircleFilled />,
content: '关闭后当前applicaion将无登录方式可能影响用户登录',
onOk() {
onCheckedChange(apId, pId, aId, false);
onCheckedChange(aId, pId, false, apId);
},
onCancel() {
},
});
};
if (passports && passports.length > 0) {
for (let idx = 0; idx < passports.length; ++idx) {
if (types && types.length > 0) {
for (const type of types) {
columns.push({
title: t(`passport:v.type.${passports[idx].type}`) + t('login'),
dataIndex: 'passports[' + idx + ']',
key: `${passports[idx].id} `,
title: t(`passport:v.type.${type}`),
dataIndex: 'typeRecords',
key: `${type} `,
align: 'center',
render: (_, { passports, aId }) => <Space direction="vertical">
<Tooltip title={passports[idx].disabled ? passports[idx].disabledTip : ''}>
<Switch disabled={passports[idx].disabled} checkedChildren={<CheckOutlined />} unCheckedChildren={<CloseOutlined />} checked={passports[idx].checked} onChange={(checked) => {
if (!checked && checkLastOne(aId, passports[idx].apId)) {
showConfirm(passports[idx].apId, passports[idx].pId, aId);
}
else {
onCheckedChange(passports[idx].apId, passports[idx].pId, aId, checked);
}
}}/>
</Tooltip>
width: 120,
render: (_, { typeRecords, aId }) => <Space direction="vertical">
{typeRecords[type].render === 'select' ? (<Tooltip title={typeRecords[type].disabled ? typeRecords[type].disabledTip : ''}>
<Select allowClear value={typeRecords[type].checkedValue} onChange={(value, option) => {
onSelectChange(aId, value, typeRecords[type].apId);
}} onClear={() => {
if (checkLastOne(aId, typeRecords[type].pId)) {
showConfirm(aId, typeRecords[type].pId, typeRecords[type].apId);
}
else {
onSelectChange(aId, undefined, typeRecords[type].apId);
}
}} disabled={typeRecords[type].disabled} options={typeRecords[type].passportOptions} optionRender={(option) => (<Tooltip title={(option.data.disabled) ? option.data.disabledTip : ''}>
<div>{option.data.label}</div>
</Tooltip>)} style={{ width: 140 }}/>
</Tooltip>) : (<Tooltip title={typeRecords[type].disabled ? typeRecords[type].disabledTip : ''}>
<Switch disabled={typeRecords[type].disabled} checkedChildren={<CheckOutlined />} unCheckedChildren={<CloseOutlined />} checked={!!typeRecords[type].checked} onChange={(checked) => {
if (!checked && checkLastOne(aId, typeRecords[type].pId)) {
showConfirm(aId, typeRecords[type].pId, typeRecords[type].apId);
}
else {
onCheckedChange(aId, typeRecords[type].pId, checked, typeRecords[type].apId);
}
}}/>
</Tooltip>)}
</Space>
});
}

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -15,5 +15,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
articleId: string;
currentArticle: string;
setCurrentArticle: (id: string) => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -2,5 +2,5 @@ import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "article", false, {
articleMenuId: string;
changeIsEdit: () => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -22,5 +22,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
}) => void;
currentArticle: string;
setCurrentArticle: (id: string) => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -29,5 +29,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
}) => void;
currentArticle: string;
setCurrentArticle: (id: string) => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -4,5 +4,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
show: string;
articleMenuId: string;
articleId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../oak-app-domain").EntityDict, keyof import("../../oak-app-domain").EntityDict, false, {
oakId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -17,5 +17,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
border: boolean;
selectedIconPath: string;
iconPath: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -8,5 +8,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entityId: string;
type: string;
isService: boolean;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,5 +1,5 @@
import React from 'react';
import { Row, Col, Card, Divider, Input, Form, Space, Select, Switch, message, } from 'antd';
import { Row, Col, Card, Divider, Input, Form, Space, message, } from 'antd';
import Styles from './web.module.less';
export default function Web(props) {
const { config, setValue } = props;
@ -32,50 +32,80 @@ export default function Web(props) {
<Input placeholder="请输入授权回调域" type="text" value={config?.wechat?.domain} onChange={(e) => setValue(`wechat.domain`, e.target.value)}/>
</>
</Form.Item>
<Form.Item label="微信网站应用授权登录"
// name="enable"
tooltip="开启后,登录页显示微信扫码入口,微信扫码后使用微信网站应用授权登录" help="开启当前登录方式时,将同时关闭微信公众号扫码登录">
<>
<Switch checkedChildren="是" unCheckedChildren="否" checked={config?.wechat?.enable} onChange={(checked) => setValue(`wechat.enable`, checked)}/>
</>
</Form.Item>
{/* <Form.Item
label="微信网站应用授权登录"
// name="enable"
tooltip="开启后,登录页显示微信扫码入口,微信扫码后使用微信网站应用授权登录"
help="开启当前登录方式时,将同时关闭微信公众号扫码登录"
>
<>
<Switch
checkedChildren="是"
unCheckedChildren="否"
checked={config?.wechat?.enable}
onChange={(checked) =>
setValue(`wechat.enable`, checked)
}
/>
</>
</Form.Item> */}
</Form>
</Col>
<Col flex="auto">
<Divider orientation="left" className={Styles.title}>
网站-授权方式
</Divider>
<Form colon={true} labelAlign="left" layout="vertical" style={{ marginTop: 10 }}>
<Form.Item label="passport">
<>
<Select mode="multiple" allowClear style={{ width: '100%' }} placeholder="请选择授权方式" value={config?.passport} onChange={(value) => {
if (value.includes('wechat') && value.includes('wechatPublic')) {
message.warning('微信网站和微信公众号中,只能选择一个');
return;
}
setValue(`passport`, value);
}} options={[
{
label: '邮箱',
value: 'email',
},
{
label: '手机号',
value: 'mobile',
},
{
label: '微信网站',
value: 'wechat',
},
{
label: '微信公众号',
value: 'wechatPublic',
},
]}/>
</>
</Form.Item>
</Form>
</Col>
{/* <Col flex="auto">
<Divider orientation="left" className={Styles.title}>
网站-授权方式
</Divider>
<Form
colon={true}
labelAlign="left"
layout="vertical"
style={{ marginTop: 10 }}
>
<Form.Item label="passport"
//name="passport"
>
<>
<Select
mode="multiple"
allowClear
style={{ width: '100%' }}
placeholder="请选择授权方式"
value={config?.passport as Passport[]}
onChange={(value: Passport[]) => {
if (value.includes('wechat') && value.includes('wechatPublic')) {
message.warning('微信网站和微信公众号中,只能选择一个')
return;
}
setValue(`passport`, value);
}}
options={
[
{
label: '邮箱',
value: 'email',
},
{
label: '手机号',
value: 'mobile',
},
{
label: '微信网站',
value: 'wechat',
},
{
label: '微信公众号',
value: 'wechatPublic',
},
] as Array<{
label: string;
value: Passport;
}>
}
/>
</>
</Form.Item>
</Form>
</Col> */}
</Space>);
}

View File

@ -1,5 +1,5 @@
import React, { useState } from 'react';
import { Row, Col, Card, Divider, Input, Form, Space, Switch, message, Select, } from 'antd';
import { Row, Col, Card, Divider, Input, Form, Space, Switch, Select, } from 'antd';
import Styles from './web.module.less';
export default function WechatPublic(props) {
const [open, setModal] = useState(false);
@ -39,42 +39,62 @@ export default function WechatPublic(props) {
</Form.Item>)}
</Form>
</Col>
<Col flex="auto">
<Divider orientation="left" className={Styles.title}>
网站-授权方式
</Divider>
<Form colon={true} labelAlign="left" layout="vertical" style={{ marginTop: 10 }}>
<Form.Item label="passport">
<>
<Select mode="multiple" allowClear style={{ width: '100%' }} placeholder="请选择授权方式" value={config?.passport} onChange={(value) => {
if (value.includes('wechat') && value.includes('wechatPublic')) {
// messageApi.warning('微信网站和微信公众号中,只能选择一个');
message.warning('微信网站和微信公众号中,只能选择一个');
return;
}
setValue(`passport`, value);
}} options={[
{
label: '邮箱',
value: 'email',
},
{
label: '手机号',
value: 'mobile',
},
{
label: '微信网站',
value: 'wechat',
},
{
label: '微信公众号',
value: 'wechatPublic',
},
]}/>
</>
</Form.Item>
</Form>
</Col>
{/* <Col flex="auto">
<Divider orientation="left" className={Styles.title}>
网站-授权方式
</Divider>
<Form
colon={true}
labelAlign="left"
layout="vertical"
style={{ marginTop: 10 }}
>
<Form.Item label="passport"
//name="passport"
>
<>
<Select
mode="multiple"
allowClear
style={{ width: '100%' }}
placeholder="请选择授权方式"
value={config?.passport as Passport[]}
onChange={(value: Passport[]) => {
if (value.includes('wechat') && value.includes('wechatPublic')) {
// messageApi.warning('微信网站和微信公众号中,只能选择一个');
message.warning('微信网站和微信公众号中,只能选择一个')
return;
}
setValue(`passport`, value);
}}
options={
[
{
label: '邮箱',
value: 'email',
},
{
label: '手机号',
value: 'mobile',
},
{
label: '微信网站',
value: 'wechat',
},
{
label: '微信公众号',
value: 'wechatPublic',
},
] as Array<{
label: string;
value: Passport;
}>
}
/>
</>
</Form.Item>
</Form>
</Col> */}
<Col flex="auto">
<Divider orientation="left" className={Styles.title}>
微信公众号-跳转小程序-小程序配置

View File

@ -4,5 +4,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entity: "application" | "system" | "platform";
entityId: string;
name: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -44,7 +44,7 @@ export default function Email(props) {
}}/>
</Form.Item>
<Form.Item label="授权码">
<Input type="password" value={ele.password} onChange={(e) => {
<Input.Password type="password" value={ele.password} onChange={(e) => {
setValue(`${idx}.password`, e.target.value);
}}/>
</Form.Item>
@ -79,7 +79,7 @@ export default function Email(props) {
}}/>
</Form.Item>
<Form.Item label="授权码">
<Input type="password" value="" onChange={(e) => {
<Input.Password type="password" value="" onChange={(e) => {
setValue(`0.password`, e.target.value);
}}/>
</Form.Item>

View File

@ -4,5 +4,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entity: "system" | "platform";
name: string;
entityId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "domain", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "domain", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "domain", true, {
systemId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "domain", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "domain", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -12,5 +12,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entityId: string;
tag1: string;
tag2: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -4,5 +4,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entity: keyof EntityDict;
entityId: string;
autoUpload: boolean;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, boolean, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, boolean, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "message", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "message", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "message", true, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "message", true, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "message", true, {
onClose: (() => void) | undefined;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -2,5 +2,5 @@ import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "messageTypeSmsTemplate", true, {
systemId: string;
origin: import("../../../oak-app-domain/SmsTemplate/Schema").Origin;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,5 +1,5 @@
import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, keyof EntityDict, false, {
systemId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,5 +1,5 @@
import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "messageTypeTemplate", true, {
applicationId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -3,5 +3,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
onlyPassword: boolean;
eventLoggedIn: string;
callback: (() => void) | undefined;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "mobile", true, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "mobile", true, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,5 +1,5 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "mobile", true, {
onFinish: (() => void) | undefined;
bindNum: number;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -3,5 +3,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
size: string | number;
iconColor: string;
iconName: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, {
showLogout: boolean;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", true, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "article", true, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
/// <reference types="wechat-miniprogram" />
import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "article", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "parasite", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "parasite", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
/// <reference types="wechat-miniprogram" />
import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, keyof EntityDict, false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, keyof EntityDict, false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -2,5 +2,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entity: string;
entityId: string;
nameLabel: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -2,5 +2,5 @@ import { EntityDict } from "../../oak-app-domain";
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "passport", true, {
systemId: string;
systemName: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -136,8 +136,8 @@ export default OakComponent({
});
}
}
else if ((!config.text || config.text === '') &&
(!config.html || config.html === '')) {
else if ((!config.text || config.text === '' || !config.text?.includes('${code}')) &&
(!config.html || config.html === '' || !config.html?.includes('${code}'))) {
const emailWarning = warnings.find((ele) => ele.id === id);
if (emailWarning) {
Object.assign(emailWarning, { tip: emailWarning.tip + '、邮件内容模板' });

View File

@ -1,5 +1,5 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "area", true, {
depth: number;
onAreaSelected: (id: string) => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "platform", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "platform", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "platform", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "platform", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "system", true, {
platformId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "platform", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "platform", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -3,5 +3,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
onSelect: (id: string) => void;
isEntity: boolean;
name: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -3,5 +3,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
isEntity: boolean;
entityDisplay: (data: any) => any[];
entityProjection: any;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -9,5 +9,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
sessionId: string;
dialog: boolean;
onItemClick: ((sessionId: string) => {}) | null | undefined;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -2,5 +2,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
sessionId: string;
entity: string;
entityId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "sessionMessage", false, {
isEntity: boolean;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -8,5 +8,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entityId: string;
entityDisplay: (data: EntityDict['session']['Schema'][] | RowWithActions<EntityDict, 'session'>[]) => any[];
entityProjection: any;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -5,5 +5,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
customUpload: (file: UploadFile) => void;
send: () => void;
setText: (text: string) => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../../oak-app-domain").EntityDict, "subscription", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../../oak-app-domain").EntityDict, "subscription", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "subscription", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "subscription", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -2,5 +2,5 @@ import { EntityDict } from '../../../oak-app-domain/EntityDict';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "subscription", false, {
entityId: string;
entity: keyof EntityDict;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "subway", true, {}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "subway", true, {}>) => React.ReactElement;
export default _default;

View File

@ -3,5 +3,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
onCancel: (() => void) | undefined;
onConfirm: ((stationIds: string[]) => void) | undefined;
selectIds: string[] | undefined;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -3,5 +3,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
openStation: boolean;
onClose: () => void;
subwayId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -2,5 +2,5 @@ import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "subway", false, {
openSubway: boolean;
onClose: () => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "application", true, {
systemId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "system", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "system", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "system", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "system", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -61,6 +61,7 @@ export default function Render(props) {
{t('login')}
</div>),
key: 'passport-list',
destroyInactiveTabPane: true,
children: (<Passport oakPath={`$system-passport`} systemId={id} systemName={name}/>),
},
]}/>

View File

@ -1,5 +1,5 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, {
systemId: string;
systemName: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "system", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "system", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "token", true, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "token", true, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -6,5 +6,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entity: string;
autoUpload: boolean;
disabled: boolean;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -4,5 +4,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
autoUpload: boolean;
onFinish: (() => void) | undefined;
needUploadPhotos: boolean;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -5,5 +5,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
callback: (() => void) | undefined;
setLoginMode: (value: string) => void;
digit: number;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -6,5 +6,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
redirectUri: string;
url: string;
callback: (() => void) | undefined;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -80,7 +80,7 @@ export default OakComponent({
const smsDigit = applicationPassports.find((ele) => ele.passport.type === 'sms')?.passport.config.digit || 4;
const emailDigit = applicationPassports.find((ele) => ele.passport.type === 'email')?.passport.config.digit || 4;
const { onlyCaptcha, onlyPassword } = this.props;
let loginMode = (await this.load(LOGIN_MODE)) || defaultPassport.passport.type;
let loginMode = (await this.load(LOGIN_MODE)) || defaultPassport?.passport?.type || 'sms';
let inputOptions = [], scanOptions = [];
if (onlyPassword) {
loginMode = 'password';

View File

@ -8,5 +8,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
allowEmail: boolean;
allowWechatMp: boolean;
setLoginMode: (value: string) => void;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,15 +1,14 @@
<view class="inputItem">
<oak-icon name="mobilephone" size="28" color="#808080" />
<oak-icon name="mine" size="28" color="#808080" />
<l-input
hide-label="{{true}}"
placeholder="{{t('placeholder.Mobile')}}"
placeholder="{{t('placeholder.Account')}}"
clear="{{true}}"
showRow="{{false}}"
l-class="my-input"
style="flex:1;"
data-attr="mobile"
maxlength="11"
value="{{mobile}}"
data-attr="account"
value="{{account}}"
bind:lininput="inputChangeMp"
bind:linclear="inputChangeMp"
/>
@ -30,7 +29,7 @@
bind:linclear="inputChangeMp"
/>
</view>
<l-button size="long" disabled="{{!!disabled || !allowSubmit || loading}}" catch:lintap="loginByPassword" height="{{80}}" style="width:100%">
<l-button size="long" disabled="{{!!disabled || !allowSubmit || loading}}" catch:lintap="loginByAccount" height="{{80}}" style="width:100%">
{{t('Login')}}
</l-button>
<view class="methods">

View File

@ -4,7 +4,7 @@ import { EntityDict } from '../../../oak-app-domain';
export default function Render(props: WebComponentProps<EntityDict, 'token', false, {
loading: boolean;
disabled?: string;
mobile: string;
account: string;
password: string;
validMobile: boolean;
validPassword: boolean;

View File

@ -6,18 +6,18 @@ import { LockOutlined, UserOutlined, } from '@ant-design/icons';
import Style from './web.module.less';
export default function Render(props) {
const { data, methods } = props;
const { loading, disabled, mobile, password, validMobile, validPassword, allowSubmit, allowSms, allowEmail, } = data;
const { loading, disabled, account, password, validMobile, validPassword, allowSubmit, allowSms, allowEmail, } = data;
const { loginByAccount, t, inputChange } = methods;
return (<Form colon={true}>
<Form.Item name="mobile">
<Input allowClear value={mobile} type="tel" size="large"
<Input allowClear value={account} size="large"
// maxLength={11}
prefix={<UserOutlined />} placeholder={allowSms ? t('placeholder.Account') + t('placeholder.Mobile') : (allowEmail ? t('placeholder.Account') + t('placeholder.Email') : t('placeholder.Account'))} onChange={(e) => {
inputChange('account', e.target.value);
}} className={Style['loginbox-input']}/>
</Form.Item>
<Form.Item name="password">
<Input allowClear size="large" value={password} prefix={<LockOutlined />} type="password" placeholder={t('placeholder.Password')} onChange={(e) => {
<Input.Password allowClear size="large" value={password} prefix={<LockOutlined />} placeholder={t('placeholder.Password')} onChange={(e) => {
inputChange('password', e.target.value);
}} className={Style['loginbox-input']}/>
</Form.Item>

View File

@ -7,5 +7,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
allowWechatMp: boolean;
setLoginMode: (value: string) => void;
digit: number;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,3 +1,3 @@
/// <reference types="wechat-miniprogram" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../../oak-app-domain").EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../../oak-app-domain").EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, "user", true, {
event: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -1,4 +1,4 @@
/// <reference types="wechat-miniprogram" />
import { EntityDict } from "../../../../oak-app-domain";
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, "user", false, WechatMiniprogram.Component.DataOption>) => React.ReactElement;
export default _default;

View File

@ -16,5 +16,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
hideInfo: boolean;
hideTip: boolean;
afterClaim: ((ueg: EntityDict['userEntityGrant']['OpSchema']) => void) | undefined;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -10,5 +10,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
onPickRows: (ids: string[]) => void;
pickedRowIds: string[] | undefined;
pickedRelationIds: string[] | undefined;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

View File

@ -3,5 +3,5 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entityId: string;
relationEntity: string;
relationEntityFilter: {};
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
}>) => React.ReactElement;
export default _default;

Some files were not shown because too many files have changed in this diff Show More