生成二维码增加mode参数web端调整

This commit is contained in:
wkj 2025-09-23 18:24:38 +08:00
parent 0a359eb287
commit 7463494fce
14 changed files with 116 additions and 92 deletions

View File

@ -18,6 +18,7 @@ type IQrCodeProps = {
maskColor: string; maskColor: string;
maskTextColor: string; maskTextColor: string;
maskText: string; maskText: string;
mode: 'default' | 'simple';
}; };
export default function Render(props: WebComponentProps<EntityDict, keyof EntityDict, false, IQrCodeProps & { export default function Render(props: WebComponentProps<EntityDict, keyof EntityDict, false, IQrCodeProps & {
isBase64: boolean; isBase64: boolean;

View File

@ -6,7 +6,7 @@ import './web.less';
export default function Render(props) { export default function Render(props) {
const { data, methods } = props; const { data, methods } = props;
const { t } = methods; const { t } = methods;
const { filename = 'qrCode.png', expiresAt, tips, onDownload, onRefresh, size = 280, url, loading = false, disableDownload = false, disabled = false, isBase64, expired, expiresAtStr, color, bgColor, maskColor, maskTextColor, maskText, } = data; const { filename = 'qrCode.png', expiresAt, tips, onDownload, onRefresh, size = 280, url, loading = false, disableDownload = false, disabled = false, isBase64, expired, expiresAtStr, color, bgColor, maskColor, maskTextColor, maskText, mode, } = data;
const prefixCls = 'oak'; const prefixCls = 'oak';
let V; let V;
if (expiresAtStr) { if (expiresAtStr) {
@ -24,12 +24,10 @@ export default function Render(props) {
} }
} }
return (<div id="oakQrCode" className={`${prefixCls}-qrCodeBox`}> return (<div id="oakQrCode" className={`${prefixCls}-qrCodeBox`}>
<div className={`${prefixCls}-qrCodeBox_qrcode`} style={{ <div className={`${prefixCls}-qrCodeBox_qrcode`} style={mode === 'default' ? {
// width: size,
// height: size,
marginBottom: 16, marginBottom: 16,
marginTop: 16, marginTop: 16,
}}> } : {}}>
<Spin spinning={loading}> <Spin spinning={loading}>
{isBase64 ? (<img src={url} alt="qrCode" width={size} height={size}/>) : url ? (<QRCodeCanvas value={url} size={size} fgColor={color} bgColor={bgColor}/>) : null} {isBase64 ? (<img src={url} alt="qrCode" width={size} height={size}/>) : url ? (<QRCodeCanvas value={url} size={size} fgColor={color} bgColor={bgColor}/>) : null}
</Spin> </Spin>
@ -41,6 +39,8 @@ export default function Render(props) {
</div> : null} </div> : null}
</div> </div>
{mode === 'default' ?
<>
{V} {V}
{tips} {tips}
{<Space className={`${prefixCls}-qrCodeBox_actions`}> {<Space className={`${prefixCls}-qrCodeBox_actions`}>
@ -70,5 +70,8 @@ export default function Render(props) {
<ReloadOutlined className={`${prefixCls}-qrCodeBox_actions_refreshIcon`}/> <ReloadOutlined className={`${prefixCls}-qrCodeBox_actions_refreshIcon`}/>
</Button>)} </Button>)}
</Space>} </Space>}
</>
: null}
</div>); </div>);
} }

View File

@ -7,5 +7,6 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
maskColor: string; maskColor: string;
maskText: string; maskText: string;
maskTextColor: string; maskTextColor: string;
mode: "default" | "simple";
}>) => React.ReactElement; }>) => React.ReactElement;
export default _default; export default _default;

View File

@ -76,5 +76,6 @@ export default OakComponent({
maskColor: 'rgba(255,255,255,0.96)', maskColor: 'rgba(255,255,255,0.96)',
maskText: '', maskText: '',
maskTextColor: 'rgba(0,0,0,0.88)', maskTextColor: 'rgba(0,0,0,0.88)',
mode: 'default',
}, },
}); });

View File

@ -7,7 +7,9 @@
<block wx:elif="{{url}}"> <block wx:elif="{{url}}">
<qrCode url="{{url}}" expiresAt="{{expiresAt}}" disableDownload="{{disableDownload}}" <qrCode url="{{url}}" expiresAt="{{expiresAt}}" disableDownload="{{disableDownload}}"
size="{{size}}" disabled="{{disabled}}" color="{{color}}" bgColor="{{bgColor}}" size="{{size}}" disabled="{{disabled}}" color="{{color}}" bgColor="{{bgColor}}"
maskColor="{{maskColor}}" maskText="{{maskText}}" maskTextColor="{{maskTextColor}}" /> maskColor="{{maskColor}}" maskText="{{maskText}}" maskTextColor="{{maskTextColor}}"
mode="{{mode}}"
/>
</block> </block>
<block wx:else> <block wx:else>
</block> </block>

View File

@ -12,4 +12,5 @@ export default function Render(props: WebComponentProps<EntityDict, 'userEntityG
maskColor: string; maskColor: string;
maskText: string; maskText: string;
maskTextColor: string; maskTextColor: string;
mode: 'default' | 'simple';
}, {}>): React.JSX.Element | null; }, {}>): React.JSX.Element | null;

View File

@ -2,12 +2,12 @@ import React from 'react';
import QrCode from '../../common/qrCode'; import QrCode from '../../common/qrCode';
import { DotLoading } from 'antd-mobile'; import { DotLoading } from 'antd-mobile';
export default function Render(props) { export default function Render(props) {
const { url, expiresAt, oakLoading, disableDownload, size, disabled, color, bgColor, maskColor, maskText, maskTextColor } = props.data; const { url, expiresAt, oakLoading, disableDownload, size, disabled, color, bgColor, maskColor, maskText, maskTextColor, mode } = props.data;
if (oakLoading) { if (oakLoading) {
return <DotLoading color="primary"/>; return <DotLoading color="primary"/>;
} }
if (url) { if (url) {
return (<QrCode url={url} expiresAt={expiresAt} disableDownload={disableDownload} size={size} disabled={disabled} color={color} bgColor={bgColor} maskColor={maskColor} maskText={maskText} maskTextColor={maskTextColor}/>); return (<QrCode url={url} expiresAt={expiresAt} disableDownload={disableDownload} size={size} disabled={disabled} color={color} bgColor={bgColor} maskColor={maskColor} maskText={maskText} maskTextColor={maskTextColor} mode={mode}/>);
} }
return null; return null;
} }

View File

@ -12,4 +12,5 @@ export default function Render(props: WebComponentProps<EntityDict, 'userEntityG
maskColor: string; maskColor: string;
maskText: string; maskText: string;
maskTextColor: string; maskTextColor: string;
mode: 'default' | 'simple';
}, {}>): React.JSX.Element | null; }, {}>): React.JSX.Element | null;

View File

@ -2,12 +2,12 @@ import React from 'react';
import QrCode from '../../common/qrCode'; import QrCode from '../../common/qrCode';
import { Spin } from 'antd'; import { Spin } from 'antd';
export default function Render(props) { export default function Render(props) {
const { url, expiresAt, oakLoading, disableDownload, size, disabled, color, bgColor, maskColor, maskText, maskTextColor } = props.data; const { url, expiresAt, oakLoading, disableDownload, size, disabled, color, bgColor, maskColor, maskText, maskTextColor, mode } = props.data;
if (oakLoading) { if (oakLoading) {
return <Spin />; return <Spin />;
} }
if (url) { if (url) {
return (<QrCode url={url} expiresAt={expiresAt} disableDownload={disableDownload} size={size} disabled={disabled} color={color} bgColor={bgColor} maskColor={maskColor} maskText={maskText} maskTextColor={maskTextColor}/>); return (<QrCode url={url} expiresAt={expiresAt} disableDownload={disableDownload} size={size} disabled={disabled} color={color} bgColor={bgColor} maskColor={maskColor} maskText={maskText} maskTextColor={maskTextColor} mode={mode}/>);
} }
return null; return null;
} }

View File

@ -23,6 +23,7 @@ type IQrCodeProps = {
maskColor: string; maskColor: string;
maskTextColor: string; maskTextColor: string;
maskText: string; maskText: string;
mode: 'default' | 'simple';
}; };
export default function Render( export default function Render(
@ -60,6 +61,7 @@ export default function Render(
maskColor, maskColor,
maskTextColor, maskTextColor,
maskText, maskText,
mode,
} = data; } = data;
const prefixCls = 'oak'; const prefixCls = 'oak';
let V; let V;
@ -85,12 +87,10 @@ export default function Render(
<div id="oakQrCode" className={`${prefixCls}-qrCodeBox`}> <div id="oakQrCode" className={`${prefixCls}-qrCodeBox`}>
<div <div
className={`${prefixCls}-qrCodeBox_qrcode`} className={`${prefixCls}-qrCodeBox_qrcode`}
style={{ style={mode === 'default' ? {
// width: size,
// height: size,
marginBottom: 16, marginBottom: 16,
marginTop: 16, marginTop: 16,
}} }: {}}
> >
<Spin spinning={loading}> <Spin spinning={loading}>
{isBase64 ? ( {isBase64 ? (
@ -112,6 +112,9 @@ export default function Render(
</div> : null} </div> : null}
</div> </div>
{
mode === 'default' ?
<>
{V} {V}
{tips} {tips}
{ {
@ -160,6 +163,10 @@ export default function Render(
)} )}
</Space> </Space>
} }
</>
: null
}
</div> </div>
); );
} }

View File

@ -78,5 +78,6 @@ export default OakComponent({
maskColor: 'rgba(255,255,255,0.96)', maskColor: 'rgba(255,255,255,0.96)',
maskText: '', maskText: '',
maskTextColor: 'rgba(0,0,0,0.88)', maskTextColor: 'rgba(0,0,0,0.88)',
mode: 'default' as 'default' | 'simple',
}, },
}); });

View File

@ -7,7 +7,9 @@
<block wx:elif="{{url}}"> <block wx:elif="{{url}}">
<qrCode url="{{url}}" expiresAt="{{expiresAt}}" disableDownload="{{disableDownload}}" <qrCode url="{{url}}" expiresAt="{{expiresAt}}" disableDownload="{{disableDownload}}"
size="{{size}}" disabled="{{disabled}}" color="{{color}}" bgColor="{{bgColor}}" size="{{size}}" disabled="{{disabled}}" color="{{color}}" bgColor="{{bgColor}}"
maskColor="{{maskColor}}" maskText="{{maskText}}" maskTextColor="{{maskTextColor}}" /> maskColor="{{maskColor}}" maskText="{{maskText}}" maskTextColor="{{maskTextColor}}"
mode="{{mode}}"
/>
</block> </block>
<block wx:else> <block wx:else>
</block> </block>

View File

@ -20,11 +20,12 @@ export default function Render(
maskColor: string; maskColor: string;
maskText: string; maskText: string;
maskTextColor: string; maskTextColor: string;
mode: 'default' | 'simple';
}, },
{} {}
> >
) { ) {
const { url, expiresAt, oakLoading, disableDownload, size, disabled, color, bgColor, maskColor, maskText, maskTextColor } = props.data; const { url, expiresAt, oakLoading, disableDownload, size, disabled, color, bgColor, maskColor, maskText, maskTextColor, mode } = props.data;
if (oakLoading) { if (oakLoading) {
return <Spin />; return <Spin />;
} }
@ -41,6 +42,7 @@ export default function Render(
maskColor={maskColor} maskColor={maskColor}
maskText={maskText} maskText={maskText}
maskTextColor={maskTextColor} maskTextColor={maskTextColor}
mode={mode}
/> />
); );
} }

View File

@ -20,11 +20,12 @@ export default function Render(
maskColor: string; maskColor: string;
maskText: string; maskText: string;
maskTextColor: string; maskTextColor: string;
mode: 'default' | 'simple';
}, },
{} {}
> >
) { ) {
const { url, expiresAt, oakLoading, disableDownload, size, disabled, color, bgColor, maskColor, maskText, maskTextColor } = props.data; const { url, expiresAt, oakLoading, disableDownload, size, disabled, color, bgColor, maskColor, maskText, maskTextColor, mode } = props.data;
if (oakLoading) { if (oakLoading) {
return <DotLoading color="primary" />; return <DotLoading color="primary" />;
} }
@ -41,6 +42,7 @@ export default function Render(
maskColor={maskColor} maskColor={maskColor}
maskText={maskText} maskText={maskText}
maskTextColor={maskTextColor} maskTextColor={maskTextColor}
mode={mode}
/> />
); );
} }