feat: 头像占位图片支持

This commit is contained in:
zhangtao07 2024-01-05 17:50:40 +08:00
parent f858f95bde
commit ff94f7795a
4 changed files with 39 additions and 17 deletions

View File

@ -243,21 +243,22 @@ src、text 都支持变量,可以从上下文中动态获取图片或文字,
## 属性表
| 属性名 | 类型 | 默认值 | 说明 |
| ----------- | ------------------------------------------------------------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| className | `string` | | 外层 dom 的类名 |
| style | `object` | | 外层 dom 的样式 |
| fit | `'contain'` \| `'cover'` \| `'fill'` \| `'none'` \| `'scale-down'` | `'cover'` | 具体细节可以参考 MDN [文档](https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-fit) |
| src | `string` | | 图片地址 |
| text | `string` | | 文字 |
| icon | `string` | `'fa fa-user'` | 图标 |
| shape | `'circle'` \| `'square'` \| `'rounded'` | `'circle'` | 形状,有三种 `'circle'` (圆形)、`'square'`(正方形)、`'rounded'`(圆角) |
| size | `number` \| `'default'` \| `'normal'` \| `'small'` | `'default'` | `'default' \| 'normal' \| 'small'`三种字符串类型代表不同大小(分别是 48、40、32也可以直接数字表示 |
| gap | `number` | 4 | 控制字符类型距离左右两侧边界单位像素 |
| alt | `number` | | 图像无法显示时的替代文本 |
| draggable | `boolean` | | 图片是否允许拖动 |
| crossOrigin | `'anonymous'` \| `'use-credentials'` \| `''` | | 图片的 `CORS` 属性设置 |
| onError | `string` | | 图片加载失败的字符串,这个字符串是一个 New Function 内部执行的字符串,参数是 event使用 event.nativeEvent 获取原生 dom 事件),这个字符串需要返回 boolean 值。设置 `"return ture;"` 会在图片加载失败后,使用 `text` 或者 `icon` 代表的信息来进行替换。目前图片加载失败默认是不进行置换。注意:图片加载失败,不包括$获取数据为空情况 |
| 属性名 | 类型 | 默认值 | 说明 |
| ------------- | ------------------------------------------------------------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| className | `string` | | 外层 dom 的类名 |
| style | `object` | | 外层 dom 的样式 |
| fit | `'contain'` \| `'cover'` \| `'fill'` \| `'none'` \| `'scale-down'` | `'cover'` | 具体细节可以参考 MDN [文档](https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-fit) |
| src | `string` | | 图片地址 |
| defaultAvatar | `string` | | 占位图 |
| text | `string` | | 文字 |
| icon | `string` | `'fa fa-user'` | 图标 |
| shape | `'circle'` \| `'square'` \| `'rounded'` | `'circle'` | 形状,有三种 `'circle'` (圆形)、`'square'`(正方形)、`'rounded'`(圆角) |
| size | `number` \| `'default'` \| `'normal'` \| `'small'` | `'default'` | `'default' \| 'normal' \| 'small'`三种字符串类型代表不同大小(分别是 48、40、32也可以直接数字表示 |
| gap | `number` | 4 | 控制字符类型距离左右两侧边界单位像素 |
| alt | `number` | | 图像无法显示时的替代文本 |
| draggable | `boolean` | | 图片是否允许拖动 |
| crossOrigin | `'anonymous'` \| `'use-credentials'` \| `''` | | 图片的 `CORS` 属性设置 |
| onError | `string` | | 图片加载失败的字符串,这个字符串是一个 New Function 内部执行的字符串,参数是 event使用 event.nativeEvent 获取原生 dom 事件),这个字符串需要返回 boolean 值。设置 `"return ture;"` 会在图片加载失败后,使用 `text` 或者 `icon` 代表的信息来进行替换。目前图片加载失败默认是不进行置换。注意:图片加载失败,不包括$获取数据为空情况 |
## 事件表

View File

@ -81,6 +81,14 @@
background-color: #f7f7f9;
}
fieldset {
margin-bottom: var(--Form-item-gap);
.cxd-Collapse-content {
background-color: transparent;
}
}
&.right::after {
right: 12px;
left: auto;

View File

@ -159,6 +159,7 @@ export class AvatarPlugin extends BasePlugin {
onChange: (value: any, origin: any, item: any, form: any) => {
form.setValues({
src: undefined,
defaultAvatar: undefined,
fit: 'cover',
text: undefined,
gap: 4,
@ -182,7 +183,13 @@ export class AvatarPlugin extends BasePlugin {
type: 'input-url'
},
name: 'src',
label: '链接',
label: '头像地址',
visibleOn: 'data.showtype === "image"'
}),
// 占位图片
getSchemaTpl('imageUrl', {
name: 'defaultAvatar',
label: '默认头像',
visibleOn: 'data.showtype === "image"'
}),
{

View File

@ -34,6 +34,11 @@ export interface AvatarSchema extends BaseSchema {
*/
src?: string;
/**
*
*/
defaultAvatar?: string;
/**
*
*/
@ -113,6 +118,7 @@ export class AvatarField extends React.Component<AvatarProps> {
className,
classnames: cx,
src,
defaultAvatar,
icon = 'fa fa-user',
fit,
shape,
@ -153,7 +159,7 @@ export class AvatarField extends React.Component<AvatarProps> {
style={style}
className={className}
classnames={cx}
src={src}
src={src || defaultAvatar}
icon={icon}
fit={fit}
shape={shape}