Commit aa7353a9 authored by XieZhiXiong's avatar XieZhiXiong

完成授信申请单查询相关UI

parent 0ed3b36e
......@@ -3,7 +3,7 @@
* @Date: 2020-08-19 15:33:27
* @LastEditors: XieZhiXiong
* @Copyright: 1549414730@qq.com
* @LastEditTime: 2020-09-27 19:18:57
* @LastEditTime: 2020-09-29 10:42:23
*/
const payandSettleRoute = {
path:'/memberCenter/payandSettle',
......@@ -31,12 +31,23 @@ const payandSettleRoute = {
{
path: '/memberCenter/payandSettle/creditApplication/quotaMenage',
name: 'quotaMenage',
component: '@/pages/payandSettle/quotaMenage/index',
component: '@/pages/payandSettle/creditApplication/quotaMenage/index',
},
{
path: '/memberCenter/payandSettle/creditApplication/quotaMenage/detail',
name: 'quotaMenageDetail',
component: '@/pages/payandSettle/quotaMenage/detail/index',
component: '@/pages/payandSettle/creditApplication/quotaMenage/detail/index',
hideInMenu: true,
},
{
path: '/memberCenter/payandSettle/creditApplication/quotaFormQuery',
name: 'quotaFormQuery',
component: '@/pages/payandSettle/creditApplication/quotaFormQuery/index',
},
{
path: '/memberCenter/payandSettle/creditApplication/quotaFormQuery/detail',
name: 'quotaFormQueryDetail',
component: '@/pages/payandSettle/creditApplication/quotaFormQuery/detail',
hideInMenu: true,
},
],
......
......@@ -2,15 +2,56 @@
* @Author: XieZhiXiong
* @Date: 2020-08-26 17:32:45
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-27 15:00:07
* @LastEditTime: 2020-09-29 14:47:49
* @Description: 基于 antd Card 封装的适合项目 UI 的 Card,使用方式跟 antd Card 一样,这里只是修改了样式
*/
import React from 'react';
import { Card } from 'antd';
import classNames from 'classnames';
import { CardProps } from 'antd/lib/card';
import styled from 'styled-components'
import styles from './index.less';
const Wrap = styled(props => <div {...props}/>)`
> .ant-card {
border-radius: 8px;
.ant-card-head {
border-bottom: none;
.ant-card-head-title {
line-height: 24px;
padding-bottom: 0;
font-size: 16px;
font-weight: 500;
color: rgba(23, 43, 77, 1);
}
}
.ant-card-body {
padding: 14px 24px 24px;
}
}
&.fullHeight {
height: 100%;
.ant-card {
height: 100%;
display: flex;
flex-direction: column !important;
.ant-card-head {
flex-shrink: 0;
}
.ant-card-body {
flex: 1;
}
}
}
`
export interface MellowCardProps extends CardProps {
blockClassName?: string;
fullHeight?: boolean; // 是否占满父级的高度,一般用于多列使用改组件的情况
......@@ -18,16 +59,16 @@ export interface MellowCardProps extends CardProps {
const MellowCard: React.FC<MellowCardProps> = props => {
const { children, blockClassName, fullHeight, ...rest } = props;
const cls = classNames(styles.mellow, {
[styles.fullHeight]: fullHeight,
const cls = classNames({
'fullHeight': fullHeight,
});
return (
<div className={cls}>
<Wrap className={cls}>
<Card bordered={false} {...rest}>
{children}
</Card>
</div>
</Wrap>
)
};
......
/*
* @Author: LeeJiancong
* @Date: 2020-07-13 14:08:50
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-09-28 17:37:59
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-29 10:33:01
*/
export default {
......@@ -247,6 +247,8 @@ export default {
'menu.payandSettle.creditApplication': '授信申请',
'menu.payandSettle.creditApplication.quotaMenage': '授信额度管理',
'menu.payandSettle.creditApplication.quotaMenageDetail': '授信额度管理',
'menu.payandSettle.creditApplication.quotaFormQuery': '授信申请单查询',
'menu.payandSettle.creditApplication.quotaFormQueryDetail': '授信申请单详情',
// 权限管理
'menu.systemSetting': '系统',
......
......@@ -12,7 +12,7 @@ const HistoryList: React.FC = () => {
dataIndex: 'order',
render: text => (
<EyePreview
url={`/memberCenter/payandSettle/creditApplication/quotaMenage/detail`}
url={``}
>
{text}
</EyePreview>
......@@ -48,7 +48,7 @@ const HistoryList: React.FC = () => {
<MellowCard
title="历史授信申请"
style={{
marginTop: 24,
marginBottom: 24,
}}
>
<PolymericTable
......@@ -58,7 +58,7 @@ const HistoryList: React.FC = () => {
loading={false}
pagination={{
pageSize: 10,
total: 100,
total: 200,
}}
onPaginationChange={handlePaginationChange}
/>
......
import React from 'react';
import { Steps } from 'antd';
import MellowCard from '@/components/MellowCard';
import styles from './index.less';
interface OuterCirculation {
steps: {
title: string,
description: string,
}[];
};
const OuterCirculation: React.FC<OuterCirculation> = ({
steps = [],
}) => {
if (!Array.isArray(steps)) {
return null;
}
return (
<MellowCard
title="外部流转"
style={{
marginBottom: 24,
}}
>
<Steps style={{ marginTop: 30 }} progressDot current={2}>
{steps.map((item, index) => (
<Steps.Step key={index} title={item.title} description={item.description} />
))}
</Steps>
</MellowCard>
);
};
export default OuterCirculation;
\ No newline at end of file
import React from 'react';
import MellowCard from '@/components/MellowCard';
import PolymericTable from '@/components/PolymericTable';
import { EditableColumns } from '@/components/PolymericTable/interface';
import StatusTag from '@/components/StatusTag';
interface OuterCirculationRecordProps {
dataSource: {
id: number,
order: number,
role: string,
status: number,
action: string,
createTime: string,
opinion: string,
}[];
onPaginationChange?: (page: number, size: number) => void;
};
const OuterCirculationRecord: React.FC<OuterCirculationRecordProps> = ({
dataSource = [],
onPaginationChange,
}) => {
const columns: EditableColumns[] = [
{
title: '序号',
dataIndex: 'order',
align: 'center',
},
{
title: '操作角色',
dataIndex: 'role',
align: 'center',
},
{
title: '状态',
dataIndex: 'status',
align: 'center',
render: text => <StatusTag type="warnning" title="不接受申请" />
},
{
title: '操作',
dataIndex: 'action',
align: 'center',
ellipsis: true,
},
{
title: '操作时间',
dataIndex: 'createTime',
align: 'center',
},
{
title: '审核意见',
dataIndex: 'opinion',
align: 'center',
ellipsis: true,
},
];
const handlePaginationChange = (page, size) => {
if (onPaginationChange) {
onPaginationChange(page, size);
}
};
return (
<MellowCard
title="历史授信申请"
style={{
marginBottom: 24,
}}
>
<PolymericTable
rowKey="id"
dataSource={dataSource}
columns={columns}
loading={false}
pagination={{
pageSize: 10,
total: 200,
}}
onPaginationChange={handlePaginationChange}
/>
</MellowCard>
);
};
export default OuterCirculationRecord;
\ No newline at end of file
.statistic {
&-title {
margin-bottom: 28px;
line-height: 22px;
font-weight: 400;
color: #6B778C;
}
&-amount {
line-height: 40px;
font-size: 32px;
font-weight: 500;
color: #172B4D;
}
}
.adjustment {
font-size: 12px;
line-height: 22px;
font-weight: 400;
color: #6B778C;
}
.approval {
padding: 30px 0 0;
:global {
.ant-descriptions {
&-item {
&-container {
align-items: center;
}
&-label {
flex: 0 0 120px;
color: #FFFFFF;
}
&-content {
color: #FFFFFF;
}
}
}
}
&-amountWrap {
padding-bottom: 17px;
margin-bottom: 34px;
border-bottom: 1px dashed #FFFFFF;
}
&-amount {
line-height: 40px;
font-size: 30px;
font-weight: 500;
color: #FFFFFF;
}
}
\ No newline at end of file
import React, { useState } from 'react';
import {
Row,
Col,
Descriptions,
Upload,
Card,
Button,
Modal,
message,
} from 'antd';
import { FormOutlined, RightCircleFilled } from '@ant-design/icons';
import { createFormActions, FormEffectHooks } from '@formily/antd';
import MellowCard from '@/components/MellowCard';
import NiceForm from '@/components/NiceForm';
import { editModalSchema } from './schema';
import styles from './index.less';
const formActions = createFormActions();
interface QuotaApplicationInfo {
editable?: boolean;
onSubmit?: (values: {[key: string]: any}) => void;
};
const QuotaApplicationInfo: React.FC<QuotaApplicationInfo> = ({
editable = false,
onSubmit,
}) => {
const [modalVisible, setModalVisible] = useState(false);
const handleSubmit = values => {
if (onSubmit) {
onSubmit(values);
}
};
const MinMarks = (
<div>
<div>0</div>
<div
style={{
position: 'relative',
left: '-8px'
}}
>
当前额度
</div>
</div>
);
const MaxMarks = (
<div>
<div>12,000</div>
<div
style={{
position: 'relative',
left: '-21px'
}}
>
最高可调额度
</div>
</div>
);
const beforeUpload = file => {
if (file.size / 1024 < 20) {
message.warning('图片大小超过20M');
return Promise.reject();
}
};
return (
<>
<Row
gutter={24}
style={{
marginBottom: 24
}}
>
<Col span={14}>
<MellowCard
title="授信申请信息"
extra={(
<>
{
editable && (
<Button
type="link"
icon={<FormOutlined />}
onClick={() => setModalVisible(true)}
>
编辑
</Button>
)
}
</>
)}
fullHeight
>
<Card
type="inner"
style={{
background: '#EBECF0',
}}
>
<Row gutter={40}>
<Col span={8}>
<div className={styles.statistic}>
<div className={styles['statistic-title']}>本期账单(元):</div>
<div className={styles['statistic-amount']}>
<Row align="middle" justify="space-between">
<Col span={14}>100,000</Col>
<Col span={8}>
<div className={styles.adjustment}>
申请调整至
<RightCircleFilled style={{ marginLeft: 10 }} />
</div>
</Col>
</Row>
</div>
</div>
</Col>
<Col span={8}>
<div className={styles.statistic}>
<div className={styles['statistic-title']}>申请调整额度(元)</div>
<div className={styles['statistic-amount']}>
100,000
</div>
</div>
<Descriptions
column={1}
style={{
marginTop: 25,
}}
>
<Descriptions.Item label="申请调整账单日期">30日</Descriptions.Item>
<Descriptions.Item label="申请还款周期">30天</Descriptions.Item>
<Descriptions.Item label="申请时间">2020-08-21 08:58</Descriptions.Item>
</Descriptions>
</Col>
<Col span={8}>
<div className={styles.statistic}>
<div className={styles['statistic-title']}>申请附件:</div>
</div>
<Upload
defaultFileList={[
{
uid: '1',
name: 'xxx.png',
status: 'done',
url: 'http://www.baidu.com/xxx.png',
},
{
uid: '2',
name: 'yyy.png',
status: 'done',
url: 'http://www.baidu.com/yyy.png',
},
{
uid: '3',
name: 'zzz.png',
status: 'done',
url: 'http://www.baidu.com/zzz.png',
},
]}
disabled
/>
</Col>
</Row>
</Card>
</MellowCard>
</Col>
<Col span={10}>
<MellowCard
title={(
<div style={{ color: '#fff' }}>
授信审批信息
</div>
)}
style={{
background: '#4279DF',
}}
fullHeight
>
<div className={styles.approval}>
<div className={styles['approval-amountWrap']}>
<Descriptions column={1}>
<Descriptions.Item label="审批额度(元)">
<div className={styles['approval-amount']}>
500,000
</div>
</Descriptions.Item>
</Descriptions>
</div>
<Descriptions column={1}>
<Descriptions.Item label="审批账单日期">11日</Descriptions.Item>
<Descriptions.Item label="审批还款周期">0天</Descriptions.Item>
<Descriptions.Item label="审批时间">2020-08-21 08:58</Descriptions.Item>
</Descriptions>
</div>
</MellowCard>
</Col>
</Row>
<Modal
title="编辑授信申请信息"
width={576}
visible={modalVisible}
onOk={() => formActions.submit()}
onCancel={() => setModalVisible(false)}
destroyOnClose
>
<NiceForm
previewPlaceholder=""
effects={($, { setFieldState }) => {
}}
expressionScope={{
MinMarks,
MaxMarks,
beforeUpload,
}}
actions={formActions}
schema={editModalSchema}
onSubmit={handleSubmit}
/>
</Modal>
</>
);
};
export default QuotaApplicationInfo;
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2020-09-29 15:51:31
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-29 16:52:53
* @Description:
*/
import { ISchema } from '@formily/antd';
import { UPLOAD_TYPE } from '@/constants';
export const editModalSchema: ISchema = {
type: 'object',
properties: {
MEGA_LAYOUT: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
labelAlign: 'top',
full: true,
},
properties: {
quota: {
type: 'string',
title: '申请调整额度',
'x-component-props': {
placeholder: '',
addonBefore: '¥',
},
'x-rules': [
{
required: true,
message: '请填写申请调整额度',
},
],
},
quotaSlide: {
type: 'number',
title: '',
'x-component': 'range',
'x-component-props': {
min: 0,
max: 1024,
marks: {
0: {
label: '{{MinMarks}}',
},
1024: {
label: '{{MaxMarks}}',
},
},
style: {
margin: '0 20px 28px'
},
},
},
date: {
type: 'string',
title: '申请调整账单日期',
'x-component-props': {
placeholder: '',
addonAfter: '日',
},
'x-rules': [
{
required: true,
message: '请填写申请调整账单日期',
},
],
},
cycle: {
type: 'string',
title: '申请还款周期',
'x-component-props': {
placeholder: '',
addonAfter: '天',
},
'x-rules': [
{
required: true,
message: '请填写申请还款周期',
},
],
},
enclosure: {
type: 'string',
title: '申请附件',
'x-component': 'Upload',
'x-component-props': {
action: '/api/file/file/upload/prefix',
data: {
fileType: UPLOAD_TYPE,
prefix: '/creditApplication/',
},
beforeUpload: '{{beforeUpload}}',
accept: '.png, .jpg, .jpeg',
},
'x-rules': [
{
required: true,
message: '请上传申请附件',
},
],
description: '一次只能上传一个附件,每个附件大小不能超过20M',
},
},
},
},
};
\ No newline at end of file
import React, { Suspense } from 'react';
import {
PageHeader,
Descriptions,
Card,
Spin,
Button,
Badge,
message,
} from 'antd';
import { FormOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import AvatarWrap from '@/components/AvatarWrap';
import StatusTag from '@/components/StatusTag';
const OuterCirculation = React.lazy(() => import('../components/OuterCirculation'));
const QuotaApplicationInfo = React.lazy(() => import('../components/QuotaApplicationInfo'));
const HitoryList = React.lazy(() => import('../components/HistoryList'));
const OuterCirculationRecord = React.lazy(() => import('../components/OuterCirculationRecord'));
const QuotaFormQueryDetail: React.FC = () => {
const steps = [
{
title: '提交授信申请单',
description: '采购商',
},
{
title: '确认授信申请单',
description: '供应商',
},
{
title: '完成',
description: '',
},
];
const outerRecord = [
{
id: 1,
order: 1,
role: '采购商',
status: 2,
action: '提交授信申请单',
createTime: '2020-05-12 08:08',
opinion: '同意',
},
{
id: 2,
order: 2,
role: '采购商',
status: 2,
action: '提交授信申请单',
createTime: '2020-05-12 08:08',
opinion: '同意',
},
];
return (
<PageHeaderWrapper
title={
<>
<PageHeader
style={{ padding: '0' }}
onBack={() => history.goBack()}
title={
<AvatarWrap
info={{
aloneTxt: '单',
name: '申请单号:DPTY12',
}}
extra="青铜会员"
/>
}
extra={(
<>
</>
)}
>
<Descriptions
size="small"
column={3}
style={{
padding: '0 32px',
}}
>
<Descriptions.Item label="会员归属">广州白马皮具交易中心</Descriptions.Item>
<Descriptions.Item label="会员类型">企业会员</Descriptions.Item>
<Descriptions.Item label="会员角色名称">采购商</Descriptions.Item>
<Descriptions.Item label="会员状态">
<StatusTag type="success" title="正常" />
</Descriptions.Item>
<Descriptions.Item label="外部状态">
<StatusTag type="success" title="接受申请" />
</Descriptions.Item>
<Descriptions.Item label="内部状态">
<Badge color="#41CC9E" text="正常" />
</Descriptions.Item>
</Descriptions>
</PageHeader>
</>
}
>
<Suspense fallback={null}>
<OuterCirculation steps={steps} />
</Suspense>
<Suspense fallback={null}>
<QuotaApplicationInfo editable={true} />
</Suspense>
<Suspense fallback={null}>
<HitoryList />
</Suspense>
<Suspense fallback={null}>
<OuterCirculationRecord dataSource={outerRecord} />
</Suspense>
</PageHeaderWrapper>
);
};
export default QuotaFormQueryDetail;
\ No newline at end of file
import React, { useState, useRef } from 'react';
import { Card, Badge, Progress, Button } from 'antd';
import {
ClockCircleOutlined,
} from '@ant-design/icons';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { createFormActions } from '@formily/antd';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import EyePreview from '@/components/EyePreview';
import NiceForm from '@/components/NiceForm';
import StatusTag from '@/components/StatusTag';
import { listSearchSchema } from './schema';
import styles from './index.less';
const formActions = createFormActions();
const mock = [
{
id: 1,
orderNo: 'SPTY9',
applicationTime: '2020-05-12 08:08',
memberName: '广州白马皮具交易有限公司',
memberType: '企业会员',
memberRole: '采购商',
memberLevel: '青铜会员',
before : '48,000',
after: '50,000.00',
outerStatus: 1,
innerStatus: 1,
},
{
id: 2,
orderNo: 'SPTY9',
applicationTime: '2020-05-12 08:08',
memberName: '广州白马皮具交易有限公司',
memberType: '企业会员',
memberRole: '采购商',
memberLevel: '青铜会员',
before : '48,000',
after: '50,000.00',
outerStatus: 1,
innerStatus: 1,
},
];
const QuotaFormQuery: React.FC = () => {
const ref = useRef<any>({});
const defaultColumns: ColumnType<any>[] = [
{
title: '申请单号/时间',
dataIndex: 'orderNo',
align: 'center',
render: (text, record) => (
<>
<EyePreview
url={`/memberCenter/payandSettle/creditApplication/quotaFormQuery/detail`}
>
{text}
</EyePreview>
<div>
<ClockCircleOutlined /> {record.applicationTime}
</div>
</>
),
},
{
title: '会员归属',
dataIndex: 'memberName',
align: 'center',
},
{
title: '会员类型',
dataIndex: 'memberType',
align: 'center',
},
{
title: '会员角色',
dataIndex: 'memberRole',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: '所属会员等级',
dataIndex: 'memberLevel',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: '调整前额度(元)',
dataIndex: 'before',
align: 'center',
},
{
title: '申请调整后额度(元)',
dataIndex: 'after',
align: 'center',
},
{
title: '外部状态',
dataIndex: 'outerStatus',
align: 'center',
filters: [],
onFilter: (value, record) => record.outerStatus === value,
render: (text, record) => (
<StatusTag type="warnning" title="不接受申请" />
),
},
{
title: '内部状态',
dataIndex: 'innerStatus',
align: 'center',
filters: [],
onFilter: (value, record) => record.innerStatus === value,
render: (text, record) => <Badge color="#41CC9E" text="正常" />,
},
];
const [columns, setColumns] = useState<any[]>(defaultColumns);
const fetchListData = (params: any) => {
return Promise.resolve({
total: 2,
data: mock,
});
};
// 初始化高级筛选选项
const fetchSelectOptions = async () => {
return {};
};
return (
<PageHeaderWrapper>
<Card>
<StandardTable
tableProps={{
rowKey: 'id',
}}
columns={columns}
currentRef={ref}
fetchTableData={(params: any) => fetchListData(params)}
controlRender={
<NiceForm
actions={formActions}
onSubmit={values => ref.current.reload(values)}
effects={($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'name',
FORM_FILTER_PATH,
);
useAsyncInitSelect(
['innerStatus', 'outerStatus'],
fetchSelectOptions,
);
}}
schema={listSearchSchema}
/>
}
/>
</Card>
</PageHeaderWrapper>
);
};
export default QuotaFormQuery;
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2020-09-29 10:03:06
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-29 10:03:43
* @Description:
*/
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { UPLOAD_TYPE } from '@/constants';
export const listSearchSchema: ISchema = {
type: 'object',
properties: {
megaLayout: {
type: 'object',
'x-component': 'mega-layout',
properties: {
name: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '搜索',
align: 'flex-left',
tip: '输入 申请单号、会员归属 进行搜索',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
grid: true,
full: true,
autoRow: true,
columns: 6,
},
properties: {
'[startDate, endDate]': {
type: 'string',
default: '',
'x-component': 'dateSelect',
'x-component-props': {
placeholder: '单据时间(全部)',
allowClear: true,
},
},
outterStatus: {
type: 'string',
default: undefined,
enum: [],
'x-component-props': {
placeholder: '外部状态(全部)',
allowClear: true,
},
},
innerStatus: {
type: 'string',
default: undefined,
enum: [],
'x-component-props': {
placeholder: '内部状态(全部)',
allowClear: true,
},
},
submit: {
'x-component': 'Submit',
'x-mega-props': {
span: 1,
},
'x-component-props': {
children: '查询',
},
},
},
},
},
},
},
};
\ No newline at end of file
......@@ -16,7 +16,7 @@ const BillInfo: React.FC = () => {
return (
<MellowCard
style={{
marginTop: 24,
marginBottom: 24,
}}
bodyStyle={{
padding: '0 24px 24px',
......
......@@ -36,7 +36,12 @@ const IntroduceRow: React.FC<IntroduceRowProps> = ({
};
return (
<Row gutter={23}>
<Row
gutter={23}
style={{
marginBottom: 24,
}}
>
<Col span={10}>
<MellowCard title="授信额度" fullHeight>
<Row gutter={20} align="middle">
......
@import '../../../../../../global/styles/utils.less';
@import '../../../../../../../global/styles/utils.less';
.record {
.list {
......
......@@ -17,7 +17,7 @@ import styles from './index.less';
const IntroduceRow = React.lazy(() => import('./components/IntroduceRow'));
const BillInfo = React.lazy(() => import('./components/BillInfo'));
const HistoryList = React.lazy(() => import('./components/HistoryList'));
const HistoryList = React.lazy(() => import('../../components/HistoryList'));
const QuotaMenageDetail: React.FC = () => {
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-23 17:00:24
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-23 18:06:56
* @LastEditTime: 2020-09-29 16:40:00
* @Description:
*/
import { ISchema } from '@formily/antd';
......@@ -68,12 +68,13 @@ export const evaluateSchema: ISchema = {
'x-component': 'Upload',
'x-component-props': {
listType: 'card',
action: '/api/file/upload/prefix',
action: '/api/file/file/upload/prefix',
data: {
fileType: UPLOAD_TYPE,
prefix: '/test/',
},
beforeUpload: '{{beforeUpload}}',
accept: '.png, .jpg, .jpeg',
},
'x-mega-props': {
addonAfter: '{{UploadTip}}',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment