Commit 3a9a4ed4 authored by 前端-许佳敏's avatar 前端-许佳敏

Merge branch 'test' into dev

parents 25d68206 1945326c
......@@ -21,6 +21,7 @@ import jinhuodanIcon from '@/assets/imgs/jinhuodan.png'
import styles from './index.less'
import { GlobalConfig } from '@/global/config'
import { isEmpty } from 'lodash'
import { LAYOUT_TYPE, COMMODITY_TYPE, OrderModalType } from '@/constants'
const Logistics_Type = {
......
.no_result {
padding: 120px 0 120px 287px;
&_tip {
font-size: 14px;
color: #D32F2F;
font-weight: 500;
display: flex;
&_text {
line-height: 30px;
}
&_search {
color: #303133;
}
&_img {
width: 30px;
height: 30px;
overflow: hidden;
margin-right: 16px;
&>img {
width: 30px;
height: 30px;
}
}
}
&_suggest {
margin-top: 12px;
font-size: 12px;
color: #909399;
padding-left: 46px;
&_list {
padding: 0;
margin: 0;
&>li {
list-style: none;
}
}
}
}
\ 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 moment from 'moment';
import { ColumnType } from 'antd/lib/table/interface';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { createFormActions } from '@formily/antd';
import { PublicApi } from '@/services/api';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { coverColFiltersItem } from '@/utils';
import EyePreview from '@/components/EyePreview';
import NiceForm from '@/components/NiceForm';
import StatusTag from '@/components/StatusTag';
import { listSearchSchema } from './schema';
import {
CREDIT_OUTER_STATUS_TAG_MAP,
CREDIT_INNER_STATUS_BADGE_MAP,
} from '../../constant';
import styles from './index.less';
const formActions = createFormActions();
const QuotaFormQuery: React.FC = () => {
const ref = useRef<any>({});
const defaultColumns: ColumnType<any>[] = [
{
title: '申请单号/时间',
dataIndex: 'applyNo',
align: 'center',
render: (text, record) => (
<>
<EyePreview
url={`/memberCenter/payandSettle/creditApplication/quotaFormQuery/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
</EyePreview>
<div>
<ClockCircleOutlined /> {record.applyTime}
</div>
</>
),
},
{
title: '会员归属',
dataIndex: 'parentMemberName',
align: 'center',
},
{
title: '会员类型',
dataIndex: 'memberTypeName',
align: 'center',
},
{
title: '会员角色',
dataIndex: 'memberRoleName',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: '所属会员等级',
dataIndex: 'memberLevelName',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: '调整前额度(元)',
dataIndex: 'originalQuota',
align: 'center',
},
{
title: '申请调整后额度(元)',
dataIndex: 'applyQuota',
align: 'center',
},
{
title: '外部状态',
dataIndex: 'outerStatusName',
align: 'center',
filters: [],
onFilter: (value, record) => record.outerStatus === value,
render: (text, record) => (
<StatusTag type={CREDIT_OUTER_STATUS_TAG_MAP[record.outerStatus]} title={text} />
),
},
{
title: '内部状态',
dataIndex: 'innerStatusName',
align: 'center',
filters: [],
onFilter: (value, record) => record.innerStatus === value,
render: (text, record) => <Badge color={CREDIT_INNER_STATUS_BADGE_MAP[record.innerStatus]} text={text} />,
},
];
const [columns, setColumns] = useState<any[]>(defaultColumns);
const fetchListData = (params: any) => {
const { startTime, endTime, ...rest } = params;
return new Promise((resolve, reject) => {
PublicApi.getPayCreditApplyPageCreditApply({
startTime: startTime ? moment(startTime).format('YYYY-MM-DD') : null,
endTime: startTime ? moment(startTime).format('YYYY-MM-DD') : null,
...rest,
})
.then(res => {
if (res.code === 1000) {
resolve(res.data);
}
reject();
})
.catch(() => {
reject();
});
});
};
// 初始化高级筛选选项
const fetchSearchItems = async () => {
const res = await PublicApi.getPayCreditApplyPageItemsByConsumer();
if (res.code === 1000) {
const { data } = res;
const {
outerStatusList = [],
innerStatusList = [],
} = data;
const newColumns = columns.slice();
// filter 0 过滤掉全部选项
coverColFiltersItem(
newColumns,
'outerStatusName',
outerStatusList.map(item => ({ text: item.name, value: item.status })).filter(item => item.value),
);
coverColFiltersItem(
newColumns,
'innerStatusName',
innerStatusList.map(item => ({ text: item.name, value: item.status })).filter(item => item.value),
);
setColumns(newColumns);
return {
outerStatus: outerStatusList.map(item => ({ label: item.name, value: item.status })).filter(item => item.value),
innerStatus: innerStatusList.map(item => ({ label: item.name, value: item.status })).filter(item => item.value),
};
}
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,
'applyNo',
FORM_FILTER_PATH,
);
useAsyncInitSelect(
['innerStatus', 'outerStatus'],
fetchSearchItems,
);
}}
schema={listSearchSchema}
/>
}
/>
</Card>
</PageHeaderWrapper>
);
};
export default QuotaFormQuery;
\ No newline at end of file
import React, { useState, useRef } from 'react';
import {
Card,
Badge,
Progress,
Button,
Popconfirm,
message,
} from 'antd';
import {
ClockCircleOutlined,
} from '@ant-design/icons';
import { StandardTable } from 'god';
import { history } from 'umi';
import moment from 'moment';
import { ColumnType } from 'antd/lib/table/interface';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { createFormActions } from '@formily/antd';
import { PublicApi } from '@/services/api';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { coverColFiltersItem } from '@/utils';
import EyePreview from '@/components/EyePreview';
import NiceForm from '@/components/NiceForm';
import StatusTag from '@/components/StatusTag';
import { listSearchSchema } from './schema';
import {
CREDIT_INNER_STATUS_UNCOMMITTED,
CREDIT_OUTER_STATUS_FAILED,
} from '@/constants';
import {
CREDIT_OUTER_STATUS_TAG_MAP,
CREDIT_INNER_STATUS_BADGE_MAP,
} from '../../constant';
import styles from './index.less';
const formActions = createFormActions();
const QuotaPrSubmit: React.FC = () => {
const ref = useRef<any>({});
const handleSubmit = record => {
const msg = message.loading({
content: '正在提交',
duration: 0,
});
PublicApi.postPayCreditApplySubmitCreditApply({
applyId: record.id,
}).then(res => {
if (res.code === 1000) {
ref.current.reload();
}
}).finally(() => {
msg();
});
};
const handleJumpVerify = record => {
history.push(`/memberCenter/payandSettle/creditApplication/quotaPrSubmit/verify?id=${record.id}&creditId=${record.creditId}`);
};
const handleDelete = record => {
const msg = message.loading({
content: '正在删除',
duration: 0,
});
PublicApi.postPayCreditApplyDeleteCreditApply({
applyId: record.id,
}).then(res => {
if (res.code === 1000) {
ref.current.reload();
}
}).finally(() => {
msg();
});
};
const defaultColumns: ColumnType<any>[] = [
{
title: '申请单号/时间',
dataIndex: 'applyNo',
align: 'center',
render: (text, record) => (
<>
<EyePreview
url={`/memberCenter/payandSettle/creditApplication/quotaPrSubmit/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
</EyePreview>
<div>
<ClockCircleOutlined /> {record.applyTime}
</div>
</>
),
},
{
title: '会员归属',
dataIndex: 'parentMemberName',
align: 'center',
},
{
title: '会员类型',
dataIndex: 'memberTypeName',
align: 'center',
},
{
title: '会员角色',
dataIndex: 'memberRoleName',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: '所属会员等级',
dataIndex: 'memberLevelName',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: '调整前额度(元)',
dataIndex: 'originalQuota',
align: 'center',
},
{
title: '申请调整后额度(元)',
dataIndex: 'applyQuota',
align: 'center',
},
{
title: '外部状态',
dataIndex: 'outerStatus',
align: 'center',
filters: [],
onFilter: (value, record) => record.outerStatus === value,
render: (text, record) => (
<StatusTag type={CREDIT_OUTER_STATUS_TAG_MAP[record.outerStatus]} title={record.outerStatusName} />
),
},
{
title: '内部状态',
dataIndex: 'innerStatus',
align: 'center',
filters: [],
onFilter: (value, record) => record.innerStatus === value,
render: (text, record) => <Badge color={CREDIT_INNER_STATUS_BADGE_MAP[record.innerStatus]} text={record.innerStatusName} />,
},
{
title: '操作',
dataIndex: 'option',
align: 'center',
render: (text, record) => (
<>
{record.outerStatus === CREDIT_INNER_STATUS_UNCOMMITTED && (
<Button
type="link"
onClick={() => handleSubmit(record)}
>
提交
</Button>
)}
{record.outerStatus === CREDIT_INNER_STATUS_UNCOMMITTED && (
<Popconfirm
title="确定要删除吗?"
okText="是"
cancelText="否"
onConfirm={() => handleDelete(record)}
>
<Button
type="link"
danger
>
删除
</Button>
</Popconfirm>
)}
{record.outerStatus === CREDIT_OUTER_STATUS_FAILED && (
<Button
type="link"
onClick={() => handleJumpVerify(record)}
>
编辑
</Button>
)}
</>
),
},
];
const [columns, setColumns] = useState<any[]>(defaultColumns);
const fetchListData = (params: any) => {
const { startTime, endTime, ...rest } = params;
return new Promise((resolve, reject) => {
PublicApi.getPayCreditApplyPageWaitSubmitCreditApply({
startTime: startTime ? moment(startTime).format('YYYY-MM-DD') : null,
endTime: startTime ? moment(startTime).format('YYYY-MM-DD') : null,
...rest,
})
.then(res => {
if (res.code === 1000) {
resolve(res.data);
}
reject();
})
.catch(() => {
reject();
});
});
};
// 初始化高级筛选选项
const fetchSearchItems = async () => {
const res = await PublicApi.getPayCreditApplyPageItemsByConsumer();
if (res.code === 1000) {
const { data } = res;
const {
outerStatusList = [],
innerStatusList = [],
} = data;
const newColumns = columns.slice();
// filter 0 过滤掉全部选项
coverColFiltersItem(
newColumns,
'outerStatus',
outerStatusList.map(item => ({ text: item.name, value: item.status })).filter(item => item.value),
);
coverColFiltersItem(
newColumns,
'innerStatus',
innerStatusList.map(item => ({ text: item.name, value: item.status })).filter(item => item.value),
);
setColumns(newColumns);
return {
outerStatus: outerStatusList.map(item => ({ label: item.name, value: item.status })).filter(item => item.value),
innerStatus: innerStatusList.map(item => ({ label: item.name, value: item.status })).filter(item => item.value),
};
}
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,
'applyNo',
FORM_FILTER_PATH,
);
useAsyncInitSelect(
['innerStatus', 'outerStatus'],
fetchSearchItems,
);
}}
schema={listSearchSchema}
/>
}
/>
</Card>
</PageHeaderWrapper>
);
};
export default QuotaPrSubmit;
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2020-09-29 10:03:06
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-30 15:40:16
* @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: {
applyNo: {
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: {
'[startTime, endTime]': {
type: 'string',
default: '',
'x-component': 'dateSelect',
'x-component-props': {
placeholder: '单据时间(全部)',
allowClear: true,
},
},
outerStatus: {
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
......@@ -94,10 +94,6 @@ const QuotaPr1: React.FC = () => {
title: '内部状态',
dataIndex: 'innerStatusName',
align: 'center',
<<<<<<< HEAD
<<<<<<<< HEAD:src/pages/payandSettle/creditManage/quotaPr1/index.tsx
=======
>>>>>>> dev
render: (text, record) => <Badge color={CREDIT_INNER_STATUS_BADGE_MAP[record.innerStatus]} text={text} />,
},
{
......@@ -114,14 +110,6 @@ const QuotaPr1: React.FC = () => {
</Button>
</>
),
<<<<<<< HEAD
========
filters: [],
onFilter: (value, record) => record.innerStatus === value,
render: (text, record) => <Badge color={CREDIT_INNER_STATUS_BADGE_MAP[record.innerStatus]} text={text} />,
>>>>>>>> dev:src/pages/payandSettle/creditApplication/quotaFormQuery/index.tsx
=======
>>>>>>> dev
},
];
......
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