Commit d85c30c3 authored by Bill's avatar Bill

对接结算能力完成

parent 7f749d46
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
/* /*
* @Author: Bill * @Author: Bill
* @Date: 2020-10-12 09:45:20 * @Date: 2020-10-12 09:45:20
* @LastEditTime: 2020-10-27 14:53:56 * @LastEditTime: 2020-10-30 15:51:10
* @Description: 加工能力路由 * @Description: 加工能力路由
*/ */
...@@ -97,7 +97,8 @@ const HandlingRoute = { ...@@ -97,7 +97,8 @@ const HandlingRoute = {
path: '/memberCenter/balance/platformSettlement/accountReceivable/detail', path: '/memberCenter/balance/platformSettlement/accountReceivable/detail',
name: 'accountReceivableInfo', name: 'accountReceivableInfo',
icon: 'smile', icon: 'smile',
component: '@/pages/balance/platformSettlement/accountReceivable/info' component: '@/pages/balance/platformSettlement/accountReceivable/info',
hideInMenu: true,
}, },
// 平台结算管理 -> 积分结算列表页 // 平台结算管理 -> 积分结算列表页
{ {
...@@ -111,7 +112,8 @@ const HandlingRoute = { ...@@ -111,7 +112,8 @@ const HandlingRoute = {
path: '/memberCenter/balance/platformSettlement/integral/detail', path: '/memberCenter/balance/platformSettlement/integral/detail',
name: 'integralInfo', name: 'integralInfo',
icon: 'smile', icon: 'smile',
component: '@/pages/balance/platformSettlement/integral/info' component: '@/pages/balance/platformSettlement/integral/info',
hideInMenu: true,
} }
] ]
}, },
......
...@@ -22,7 +22,8 @@ import { Moment } from 'moment'; ...@@ -22,7 +22,8 @@ import { Moment } from 'moment';
import { payStatus } from '../../common'; import { payStatus } from '../../common';
const formActions = createFormActions(); const formActions = createFormActions();
// 应付账款 - 付款方查看凭证, 能力中心
const PAYABLE_PAYER = 1;
interface SearchParams { interface SearchParams {
settlementName?: string, settlementName?: string,
payName?: string, payName?: string,
...@@ -95,7 +96,7 @@ const SettlementList = () => { ...@@ -95,7 +96,7 @@ const SettlementList = () => {
excludes={[1, 3]} excludes={[1, 3]}
settlementId={record.memberId || 1} settlementId={record.memberId || 1}
handleUpload={handleUploadVoucher} handleUpload={handleUploadVoucher}
type={1} type={PAYABLE_PAYER}
/> />
) )
} }
......
...@@ -21,6 +21,8 @@ import EyePreview from '@/components/EyePreview'; ...@@ -21,6 +21,8 @@ import EyePreview from '@/components/EyePreview';
import { payStatus } from '../../common'; import { payStatus } from '../../common';
const formActions = createFormActions(); const formActions = createFormActions();
// 应收账款管理-收款方查看凭证, 能力中心
const RECEIABLE_BENEFICIARY = 2;
const SettlementList = () => { const SettlementList = () => {
const ref = useRef<any>({}) const ref = useRef<any>({})
...@@ -73,7 +75,7 @@ const SettlementList = () => { ...@@ -73,7 +75,7 @@ const SettlementList = () => {
<StatusActions <StatusActions
excludes={[2]} excludes={[2]}
id={record.id} id={record.id}
type={2} type={RECEIABLE_BENEFICIARY}
status={record.status} status={record.status}
settlementDate={record.settlementDate} settlementDate={record.settlementDate}
payName={record.payName} payName={record.payName}
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
*/ */
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Drawer, Input, DatePicker } from 'antd'; import { Drawer, Input, DatePicker, message } from 'antd';
import InvoiceInfo from './InvoiceInfo'; import InvoiceInfo from './InvoiceInfo';
import { import {
SchemaForm, SchemaForm,
...@@ -61,6 +61,13 @@ const InvoiceDrawer: React.FC<Iprops> = (props) => { ...@@ -61,6 +61,13 @@ const InvoiceDrawer: React.FC<Iprops> = (props) => {
onCancel(); onCancel();
return; return;
} }
if(typeof value.list === 'undefined' || value.list.length == 0) {
message.error({
content: '请添加发票信息'
})
return;
}
const { kindName, typeName, ...rest } = invoiceInfo const { kindName, typeName, ...rest } = invoiceInfo
const proveList = value.list.map((item) => { return {number: item.number, remark: item.remark, invoiceDate: item.invoiceDate.format('YYYY-MM-DD')} }) const proveList = value.list.map((item) => { return {number: item.number, remark: item.remark, invoiceDate: item.invoiceDate.format('YYYY-MM-DD')} })
const postData = { const postData = {
......
...@@ -27,6 +27,19 @@ interface Iprops { ...@@ -27,6 +27,19 @@ interface Iprops {
handleUpload?: (params: any) => void, // 上传凭证 handleUpload?: (params: any) => void, // 上传凭证
} }
// 应付账款 - 付款方查看凭证, 能力中心
const PAYABLE_PAYER = 1;
// 应收账款管理-收款方查看凭证, 能力中心
const RECEIABLE_BENEFICIARY = 2;
// 平台代收账款结算 - 收款方查看凭证 能力中心
const PLATFORM_BENEFICIARY = 3;
// 平台代收账款结算 - 付款方查看凭证 这是平台后台
const PLATFORM_PAYER = 4;
// 平台积分结算-收款方查看凭证, 能力中心
const SCORE_BENEFINCIARY = 5;
// 平台积分结算-付款方查看凭证 , 这是平台后天
const SCORE_PAYER = 6;
// 显示确认对账 // 显示确认对账
const ConfirmAccountComponent: React.FC<Iprops> = (props) => { const ConfirmAccountComponent: React.FC<Iprops> = (props) => {
const { settlementDate, payName } = props; const { settlementDate, payName } = props;
...@@ -90,12 +103,20 @@ const ConfirmCollected = (props) => { ...@@ -90,12 +103,20 @@ const ConfirmCollected = (props) => {
const WrapVoucher = ({ id, type}) => { const WrapVoucher = ({ id, type}) => {
const [files, setFiles] = useState([]); const [files, setFiles] = useState([]);
const SERVICES_MAP = {
// /settle/accounts/member/settlement/getPayablePayProve
[PAYABLE_PAYER]: PublicApi.getSettleAccountsMemberSettlementGetPayablePayProve,
[RECEIABLE_BENEFICIARY]: PublicApi.getSettleAccountsMemberSettlementGetReceivablePayProve,
///settle/accounts/platform/settlement/getReceivablePayProve
[PLATFORM_BENEFICIARY]: PublicApi.getSettleAccountsPlatformSettlementGetReceivablePayProve,
[PLATFORM_PAYER]: PublicApi.getSettleAccountsPlatformSettlementGetPayablePayProve,
// /settle/accounts/platform/score/settlement/getReceivablePayProve
[SCORE_BENEFINCIARY]: PublicApi.getSettleAccountsPlatformScoreSettlementGetReceivablePayProve,
[SCORE_PAYER]: PublicApi.getSettleAccountsPlatformScoreSettlementGetPayablePayProve
}
useEffect(() => { useEffect(() => {
if(id) { if(id) {
const service = type == 1 const service = SERVICES_MAP[type];
? PublicApi.getSettleAccountsMemberSettlementGetPayablePayProve
: PublicApi.getSettleAccountsMemberSettlementGetReceivablePayProve
service({id}).then((data) => { service({id}).then((data) => {
if(data.code == 1000) { if(data.code == 1000) {
......
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
import React, { useRef } from 'react'; import React, { useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Card, Button, DatePicker, Tag, Modal, Space } from 'antd'; import { Card, DatePicker } from 'antd';
import NiceForm from '@/components/NiceForm'; import NiceForm from '@/components/NiceForm';
import { FORM_FILTER_PATH } from '@/formSchema/const'; import { FORM_FILTER_PATH } from '@/formSchema/const';
import { ISchema, createFormActions } from '@formily/antd'; import { createFormActions } from '@formily/antd';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'; import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect'; import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
...@@ -18,22 +18,37 @@ import StatusTag from '../../components/StatusTag'; ...@@ -18,22 +18,37 @@ import StatusTag from '../../components/StatusTag';
import StatusActions from '../../components/StatusActions'; import StatusActions from '../../components/StatusActions';
import { payStatus } from '../../common'; import { payStatus } from '../../common';
import { PublicApi } from '@/services/api' import { PublicApi } from '@/services/api'
import EyePreview from '@/components/EyePreview'
import { text } from 'express';
const formActions = createFormActions(); const formActions = createFormActions();
// 平台代收账款结算 - 收款方查看凭证 能力中心
const PLATFORM_BENEFICIARY = 3;
const AccountReceivable = () => { const AccountReceivable = () => {
const ref = useRef<any>({}) const ref = useRef<any>({})
const fetchListData = async (params) => { const fetchListData = async (params) => {
const searchData = { const searchData = {
status: 0, ...params,
...params status: typeof params.status == 'undefined' ? 0 : params.status,
} }
///settle/accounts/platform/settlement/pageReceivableSettlement ///settle/accounts/platform/settlement/pageReceivableSettlement
const { data } = await PublicApi.getSettleAccountsPlatformSettlementPageReceivableSettlement(searchData); const { data } = await PublicApi.getSettleAccountsPlatformSettlementPageReceivableSettlement(searchData);
return data return data
} }
const columns = [ const columns = [
{title: '结算单号', dataIndex: 'settlementNo'}, {
title: '结算单号',
dataIndex: 'settlementNo',
render: (text, record) => {
return (
<EyePreview
url={`/memberCenter/balance/platformSettlement/accountReceivable/detail?id=${record.id}`}
>{record.settlementNo}</EyePreview>
)
}
},
{title: '结算日期', dataIndex: 'settlementDate'}, {title: '结算日期', dataIndex: 'settlementDate'},
{title: '结算方式', dataIndex: 'settlementWayName'}, {title: '结算方式', dataIndex: 'settlementWayName'},
{title: '总单数', dataIndex: 'totalCount'}, {title: '总单数', dataIndex: 'totalCount'},
...@@ -59,7 +74,7 @@ const AccountReceivable = () => { ...@@ -59,7 +74,7 @@ const AccountReceivable = () => {
<StatusActions <StatusActions
excludes={[2]} excludes={[2]}
id={record.id} id={record.id}
type={2} type={PLATFORM_BENEFICIARY}
status={record.status} status={record.status}
settlementDate={record.settlementDate} settlementDate={record.settlementDate}
payName={"平台"} payName={"平台"}
...@@ -78,8 +93,8 @@ const AccountReceivable = () => { ...@@ -78,8 +93,8 @@ const AccountReceivable = () => {
* @param {cancel: function, id: number} cancel 为关闭回调函数 * @param {cancel: function, id: number} cancel 为关闭回调函数
*/ */
const handleConfirm = (params: any) => { const handleConfirm = (params: any) => {
///settle/accounts/platform/settlement/confirmAccountComplete // /settle/accounts/platform/settlement/confirmAccountComplete
PublicApi.postSettleAccountsMemberSettlementConfirmAccountComplete({settlementId: params.id}) PublicApi.postSettleAccountsPlatformSettlementConfirmAccountComplete({settlementId: params.id})
.then((data) => { .then((data) => {
if(data.code === 1000) { if(data.code === 1000) {
params.onCancel(); params.onCancel();
...@@ -93,7 +108,7 @@ const AccountReceivable = () => { ...@@ -93,7 +108,7 @@ const AccountReceivable = () => {
* @param {onCancel:function, id: number, status: number} * @param {onCancel:function, id: number, status: number}
*/ */
const handleComfirmInCompletePayment = (params: any) => { const handleComfirmInCompletePayment = (params: any) => {
PublicApi.postSettleAccountsMemberSettlementConfirmPayProve({id: params.id, status: params.status}) PublicApi.postSettleAccountsPlatformSettlementConfirmPayProve({id: params.id, status: params.status})
.then((data) => { .then((data) => {
if(data.code === 1000) { if(data.code === 1000) {
formActions.submit(); formActions.submit();
...@@ -107,7 +122,8 @@ const AccountReceivable = () => { ...@@ -107,7 +122,8 @@ const AccountReceivable = () => {
* @param {onCancel:function, id: number, status: number} * @param {onCancel:function, id: number, status: number}
*/ */
const handleComfirmCompletePayment = (params: any) => { const handleComfirmCompletePayment = (params: any) => {
PublicApi.postSettleAccountsMemberSettlementConfirmPayProve({id: params.id, status: params.status}) ///settle/accounts/platform/settlement/confirmPayProve
PublicApi.postSettleAccountsPlatformSettlementConfirmPayProve({id: params.id, status: params.status})
.then((data) => { .then((data) => {
if(data.code === 1000) { if(data.code === 1000) {
formActions.submit(); formActions.submit();
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* @Description: 平台代收账款结算详情 * @Description: 平台代收账款结算详情
*/ */
import React, { useRef } from 'react'; import React, { useRef, useEffect, useState } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Card, PageHeader, Descriptions, Button} from 'antd'; import { Card, PageHeader, Descriptions, Button} from 'antd';
import { history } from 'umi'; import { history } from 'umi';
...@@ -16,29 +16,78 @@ import { StandardTable } from 'god'; ...@@ -16,29 +16,78 @@ import { StandardTable } from 'god';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'; import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect'; import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { detailSchema } from './schema'; import { detailSchema } from './schema';
import { PublicApi } from '@/services/api';
import { usePageStatus } from '@/hooks/usePageStatus';
import StatusTag from '../../components/StatusTag';
import { timeRange } from '@/utils/index';
import moment from 'moment';
const formActions = createFormActions(); const formActions = createFormActions();
const columns = [ const columns = [
{title: '单据号', dataIndex: 'no'}, {title: '单据号', dataIndex: 'orderNo'},
{title: '单据摘要', dataIndex: 'desc'}, {title: '单据摘要', dataIndex: 'orderAbstract'},
{title: '单据类型', dataIndex: 'type'}, {title: '单据类型', dataIndex: 'settlementOrderTypeName'},
{title: '单据时间', dataIndex: 'time'}, {title: '单据时间', dataIndex: 'orderTime'},
{title: '订单类型', dataIndex: 'orderType'}, {title: '订单类型', dataIndex: 'orderTypeName'},
{title: '单据总额', dataIndex: 'total'}, {title: '单据总额', dataIndex: 'orderAmount'},
{title: '代收金额', dataIndex: 'price'}, {title: '代收金额', dataIndex: 'collectAmount'},
{title: '支付时间', dataIndex: 'payTime'}, {title: '支付时间', dataIndex: 'payTime'},
{title: '佣金比例', dataIndex: 'percent'}, {
{title: '扣减佣金', dataIndex: 'koujian'}, title: '佣金比例',
{title: '本期结余额', dataIndex: 'rest'} dataIndex: 'ratio',
render: (text, record) => {
return record.ratio + "%"
}
},
{title: '扣减佣金', dataIndex: 'brokerage'},
{title: '本期结余额', dataIndex: 'settlementAmount'}
] ]
const Info: React.FC = () => { const Info: React.FC = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [infoDetail, setInfoDetail] = useState<any>(null);
const { id, preview } = usePageStatus();
const fetchListData = async (params) => { const fetchListData = async (params) => {
return {} const postData = {
settlementId: id,
...params
}
///settle/accounts/platform/settlement/pageReceivableSettlementDetail
const res = await PublicApi.getSettleAccountsPlatformSettlementPageReceivableSettlementDetail(postData)
return res.data
} }
useEffect(() => {
if(id) {
// 获取详情
async function fetchDetail() {
const { data, code } = await PublicApi.getSettleAccountsPlatformSettlementGetReceivableDetail({id})
if(code == 1000) {
setInfoDetail(data);
}
}
fetchDetail();
}
}, [id])
/**
* 搜索
*/
const handleSearch = (values) => {
console.log(values);
const format = 'YYYY-MM-DD'
const { payTime, orderTime, ...rest } = values;
const payTimeRange = payTime ? timeRange(values.payTime): null;
const payStartTime = payTimeRange ? moment(payTimeRange.st).format(format) : null;
const payEndTime = payTimeRange ? moment(payTimeRange.et).format(format) : null;
const orderTimeRange = orderTime ? timeRange(values.orderTime) : null;
const orderStartTime = orderTimeRange ? moment(orderTimeRange.st).format(format) : null;
const orderEndTime = orderTimeRange ? moment(orderTimeRange.et).format(format) : null;
ref.current.reload({...rest, payStartTime, payEndTime, orderStartTime, orderEndTime});
}
return ( return (
<PageHeaderWrapper <PageHeaderWrapper
title={ title={
...@@ -53,7 +102,7 @@ const Info: React.FC = () => { ...@@ -53,7 +102,7 @@ const Info: React.FC = () => {
name: "结算单号:" name: "结算单号:"
}} }}
extra={( extra={(
<span style={{ fontSize: 12, fontWeight: 'normal' }}>{"TPTY12"}</span> <span style={{ fontSize: 12, fontWeight: 'normal' }}>{infoDetail?.settlementNo}</span>
)} )}
/> />
} }
...@@ -64,11 +113,13 @@ const Info: React.FC = () => { ...@@ -64,11 +113,13 @@ const Info: React.FC = () => {
padding: '0 32px', padding: '0 32px',
}} }}
> >
<Descriptions.Item label="结算日期:">{"2020-08-25"}</Descriptions.Item> <Descriptions.Item label="结算日期:">{infoDetail?.settlementDate}</Descriptions.Item>
<Descriptions.Item label="结算单数:">{"1,238"}</Descriptions.Item> <Descriptions.Item label="结算单数:">{infoDetail?.totalCount }</Descriptions.Item>
<Descriptions.Item label="结算金额:">{"¥668,684,59"}</Descriptions.Item> <Descriptions.Item label="结算金额:">{infoDetail?.amount}</Descriptions.Item>
<Descriptions.Item label="结算方式:">{"月结"}</Descriptions.Item> <Descriptions.Item label="结算方式:">{infoDetail?.settlementWayName}</Descriptions.Item>
<Descriptions.Item label="外部状态:">{"待对账"}</Descriptions.Item> <Descriptions.Item label="外部状态:">
<StatusTag text={infoDetail?.statusName} />
</Descriptions.Item>
</Descriptions> </Descriptions>
</PageHeader> </PageHeader>
</> </>
...@@ -77,7 +128,7 @@ const Info: React.FC = () => { ...@@ -77,7 +128,7 @@ const Info: React.FC = () => {
<Card> <Card>
<StandardTable <StandardTable
tableProps={{ tableProps={{
rowKey: 'id', rowKey: record => (`${record.orderNo}-${record.payTime}`),
}} }}
columns={columns} columns={columns}
currentRef={ref} currentRef={ref}
...@@ -93,14 +144,14 @@ const Info: React.FC = () => { ...@@ -93,14 +144,14 @@ const Info: React.FC = () => {
) )
}} }}
effects={($, actions) => { effects={($, actions) => {
useStateFilterSearchLinkageEffect($, actions, 'megaLayout.topLayout.search', FORM_FILTER_PATH); useStateFilterSearchLinkageEffect($, actions, 'megaLayout.topLayout.orderNo', FORM_FILTER_PATH);
// useAsyncInitSelect( // useAsyncInitSelect(
// ['innerStatus', 'outerStatus'], // ['innerStatus', 'outerStatus'],
// fetchSelectOptions, // fetchSelectOptions,
// ); // );
}} }}
schema={detailSchema} schema={detailSchema}
onSubmit={values => ref.current.reload(values)} onSubmit={handleSearch}
/> />
} }
/> />
......
...@@ -80,6 +80,19 @@ export const schema: ISchema = { ...@@ -80,6 +80,19 @@ export const schema: ISchema = {
* 平台代收账款结算--详情 * 平台代收账款结算--详情
*/ */
export const commonTimeList = [
{ label: '今天', value: 1},
{ label: '一周内', value: 2},
{ label: '一个月内', value: 3},
{ label: '三个月内', value: 4},
{ label: '六个月内', value: 5},
{ label: '一年内', value: 6 },
{ label: '一年前', value: 7}
];
const orderTime = [{label: '下单时间(所有)', value: 0}].concat(commonTimeList);
const payTime = [{label: '支付时间(所有)', value: 0}].concat(commonTimeList);
export const detailSchema: ISchema = { export const detailSchema: ISchema = {
type: 'object', type: 'object',
properties: { properties: {
...@@ -101,11 +114,11 @@ export const detailSchema: ISchema = { ...@@ -101,11 +114,11 @@ export const detailSchema: ISchema = {
children: '{{exportBtn}}', children: '{{exportBtn}}',
}, },
}, },
search: { orderNo: {
type: 'string', type: 'string',
'x-component': 'Search', 'x-component': 'Search',
'x-component-props': { 'x-component-props': {
placeholder: '搜索', placeholder: '搜索(单据号)',
}, },
}, },
}, },
...@@ -119,32 +132,40 @@ export const detailSchema: ISchema = { ...@@ -119,32 +132,40 @@ export const detailSchema: ISchema = {
}, },
}, },
properties: { properties: {
orderAbstract: {
type: 'string',
'x-component-props': {
placeholder: '单据摘要'
}
},
orderTime: { orderTime: {
type: 'string', type: 'string',
enum: [], enum: orderTime,
default: 0,
'x-component-props': { 'x-component-props': {
placeholder: '加工企业名称(全部)', placeholder: '下单时间(全部)',
allowClear: true, allowClear: true,
}, },
}, },
payTime: { payTime: {
type: 'string', type: 'string',
enum: [], enum: payTime,
default: 0,
'x-component-props': { 'x-component-props': {
placeholder: '加工企业名称(全部)', placeholder: '支付时间(全部)',
allowClear: true, allowClear: true,
}, },
}, },
// submit: { submit: {
// 'x-component': 'Submit', 'x-component': 'Submit',
// 'x-mega-props': { 'x-mega-props': {
// span: 1, span: 1,
// }, },
// 'x-component-props': { 'x-component-props': {
// children: '查询', children: '查询',
// }, },
// }, },
}, },
}, },
}, },
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
import React, { useRef } from 'react'; import React, { useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Card, Button, Modal,Tag, Space, DatePicker } from 'antd'; import { Card, DatePicker } from 'antd';
import NiceForm from '@/components/NiceForm'; import NiceForm from '@/components/NiceForm';
import { FORM_FILTER_PATH } from '@/formSchema/const'; import { FORM_FILTER_PATH } from '@/formSchema/const';
import { createFormActions } from '@formily/antd'; import { createFormActions } from '@formily/antd';
...@@ -17,26 +17,49 @@ import { schema } from './schema/index'; ...@@ -17,26 +17,49 @@ import { schema } from './schema/index';
import StatusActions from '../../components/StatusActions'; import StatusActions from '../../components/StatusActions';
import StatusTag from '../../components/StatusTag'; import StatusTag from '../../components/StatusTag';
import { payStatus } from '../../common'; import { payStatus } from '../../common';
import { PublicApi } from '@/services/api';
import EyePreview from '@/components/EyePreview';
// 平台积分结算-收款方查看凭证, 能力中心
const SCORE_BENEFINCIARY = 5;
const formActions = createFormActions(); const formActions = createFormActions();
const Integral: React.FC = () => { const Integral: React.FC = () => {
const ref = useRef<any>({}) const ref = useRef<any>({})
const fetchListData = async (params) => { const fetchListData = async (params) => {
return { const searchData = {
data: [{id: 1}], ...params,
totalCount: 1 status: typeof params.status == 'undefined' ? 0 : params.status,
} }
// /settle/accounts/platform/score/settlement/pageReceivableSettlement
const { data } = await PublicApi.getSettleAccountsPlatformScoreSettlementPageReceivableSettlement(searchData);
return data
} }
const columns = [ const columns = [
{title: '结算单号', dataIndex: 'num'}, {
{title: '结算日期', dataIndex: 'num'}, title: '结算单号',
{title: '结算方式', dataIndex: 'num'}, dataIndex: 'settlementNo',
{title: '总单数', dataIndex: 'num'}, render: (text, record) => {
{title: '代收金额', dataIndex: 'num'}, return (
{title: '佣金', dataIndex: 'num'}, <EyePreview
{title: '结算金额', dataIndex: 'num'}, url={`/memberCenter/balance/platformSettlement/integral/detail?id=${record.id}`}
{title: '结算日期', dataIndex: 'num'}, >{record.settlementNo}</EyePreview>
{title: '支付方式', dataIndex: 'payMethod'}, )
}
},
{title: '结算日期', dataIndex: 'settlementDate'},
{title: '结算方式', dataIndex: 'settlementWayName'},
{title: '总单数', dataIndex: 'totalCount'},
{title: '结算积分总数', dataIndex: 'score'},
{
title: '兑换比率',
dataIndex: 'ratio',
render: (text, record) => {
return (record.ratio * 100 + "%");
}
},
{title: '结算金额', dataIndex: 'amount'},
{title: '结算时间', dataIndex: 'settlementTime'},
{title: '支付方式', dataIndex: 'payWayName'},
{ {
title: '结算状态', dataIndex: 'status', title: '结算状态', dataIndex: 'status',
filters: payStatus, filters: payStatus,
...@@ -55,10 +78,10 @@ const Integral: React.FC = () => { ...@@ -55,10 +78,10 @@ const Integral: React.FC = () => {
<StatusActions <StatusActions
excludes={[2]} excludes={[2]}
id={record.id} id={record.id}
type={2} type={SCORE_BENEFINCIARY}
status={record.status} status={record.status}
settlementDate={record.settlementDate} settlementDate={record.settlementDate}
payName={record.payName} payName={"平台"}
handleReconciledComfirm={handleConfirm} handleReconciledComfirm={handleConfirm}
handleComfirmInCompletePayment={handleComfirmInCompletePayment} handleComfirmInCompletePayment={handleComfirmInCompletePayment}
handleComfirmCompletePayment={handleComfirmCompletePayment} handleComfirmCompletePayment={handleComfirmCompletePayment}
...@@ -71,20 +94,58 @@ const Integral: React.FC = () => { ...@@ -71,20 +94,58 @@ const Integral: React.FC = () => {
/** /**
* 确认对账 * 确认对账
* @param cancel 关闭回调函数 * @param {cancel: function, id: number} cancel 为关闭回调函数
*/ */
const handleConfirm = (params) => { const handleConfirm = (params: any) => {
console.log(123) ///settle/accounts/platform/settlement/confirmAccountComplete
params.cancel(); // /settle/accounts/platform/score/settlement/confirmAccountComplete
PublicApi.postSettleAccountsPlatformScoreSettlementConfirmAccountComplete({settlementId: params.id})
.then((data) => {
if(data.code === 1000) {
params.onCancel();
formActions.submit();
}
})
} }
/**
* 确认未到款
* @param {onCancel:function, id: number, status: number}
*/
const handleComfirmInCompletePayment = (params: any) => { const handleComfirmInCompletePayment = (params: any) => {
console.log(params); // /settle/accounts/platform/score/settlement/confirmPayProve
params.onCancel() PublicApi.postSettleAccountsPlatformScoreSettlementConfirmPayProve({id: params.id, status: params.status})
.then((data) => {
if(data.code === 1000) {
formActions.submit();
params.onCancel();
}
})
} }
/**
* 确认到款
* @param {onCancel:function, id: number, status: number}
*/
const handleComfirmCompletePayment = (params: any) => { const handleComfirmCompletePayment = (params: any) => {
params.onCancel(); PublicApi.postSettleAccountsPlatformScoreSettlementConfirmPayProve({id: params.id, status: params.status})
.then((data) => {
if(data.code === 1000) {
formActions.submit();
params.onCancel();
}
})
} }
/**
* 搜索
*/
const handleSearch = (values: any) => {
const format = 'YYYY-MM-DD'
const startTime = values.startTime?.format(format);
const endTime = values.endTime?.format(format);
ref.current.reload({...values, startTime, endTime});
}
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -102,13 +163,9 @@ const Integral: React.FC = () => { ...@@ -102,13 +163,9 @@ const Integral: React.FC = () => {
expressionScope={{}} expressionScope={{}}
effects={($, actions) => { effects={($, actions) => {
useStateFilterSearchLinkageEffect($, actions, 'megaLayout.name', FORM_FILTER_PATH); useStateFilterSearchLinkageEffect($, actions, 'megaLayout.name', FORM_FILTER_PATH);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}} }}
schema={schema} schema={schema}
onSubmit={values => ref.current.reload(values)} onSubmit={handleSearch}
/> />
} }
/> />
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* @Description: 积分结算详情页 * @Description: 积分结算详情页
*/ */
import React, { useRef } from 'react'; import React, { useRef, useState, useEffect } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Card, PageHeader, Descriptions, Button} from 'antd'; import { Card, PageHeader, Descriptions, Button} from 'antd';
import { history } from 'umi'; import { history } from 'umi';
...@@ -16,27 +16,77 @@ import { StandardTable } from 'god'; ...@@ -16,27 +16,77 @@ import { StandardTable } from 'god';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'; import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect'; import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { detailSchema } from './schema'; import { detailSchema } from './schema';
import { timeRange } from '@/utils/index';
import moment from 'moment';
import { PublicApi } from '@/services/api';
import { usePageStatus } from '@/hooks/usePageStatus';
import StatusTag from '../../components/StatusTag';
const formActions = createFormActions(); const formActions = createFormActions();
const columns = [ const columns = [
{title: '单据号', dataIndex: 'no'}, {title: '单据号', dataIndex: 'orderNo'},
{title: '单据摘要', dataIndex: 'desc'}, {title: '单据摘要', dataIndex: 'orderAbstract'},
{title: '单据类型', dataIndex: 'type'}, {title: '单据类型', dataIndex: 'settlementOrderTypeName'},
{title: '单据时间', dataIndex: 'time'}, {title: '单据时间', dataIndex: 'orderTime'},
{title: '订单类型', dataIndex: 'orderType'}, {title: '订单类型', dataIndex: 'orderTypeName'},
{title: '单据总额', dataIndex: 'total'}, {title: '所需积分', dataIndex: 'orderScore'},
{title: '代收金额', dataIndex: 'price'}, {title: '支付积分', dataIndex: 'payScore'},
{title: '支付时间', dataIndex: 'payTime'}, {title: '支付时间', dataIndex: 'payTime'},
{title: '佣金比例', dataIndex: 'percent'}, {
{title: '扣减佣金', dataIndex: 'koujian'}, title: '兑换比率',
{title: '本期结余额', dataIndex: 'rest'} dataIndex: 'ratio',
render: (text, record) => {
return record.ratio * 100 + "%"
}
},
{title: '本期结余额', dataIndex: 'settlementAmount'}
] ]
const Info: React.FC = () => { const Info: React.FC = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [infoDetail, setInfoDetail] = useState<any>(null);
const { id, preview } = usePageStatus();
const fetchListData = async (params) => { const fetchListData = async (params) => {
return {} const postData = {
settlementId: id,
...params
}
const res = await PublicApi.getSettleAccountsPlatformScoreSettlementPageReceivableSettlementDetail(postData)
return res.data
} }
useEffect(() => {
if(id) {
// 获取详情
async function fetchDetail() {
const { data, code } = await PublicApi.getSettleAccountsPlatformScoreSettlementGetReceivableDetail({id})
if(code == 1000) {
setInfoDetail(data);
}
}
fetchDetail();
}
}, [id])
/**
* 搜索
*/
const handleSearch = (values) => {
console.log(values);
const format = 'YYYY-MM-DD'
const { payTime, orderTime, ...rest } = values;
const payTimeRange = payTime ? timeRange(values.payTime): null;
const payStartTime = payTimeRange ? moment(payTimeRange.st).format(format) : null;
const payEndTime = payTimeRange ? moment(payTimeRange.et).format(format) : null;
const orderTimeRange = orderTime ? timeRange(values.orderTime) : null;
const orderStartTime = orderTimeRange ? moment(orderTimeRange.st).format(format) : null;
const orderEndTime = orderTimeRange ? moment(orderTimeRange.et).format(format) : null;
ref.current.reload({...rest, payStartTime, payEndTime, orderStartTime, orderEndTime});
}
return ( return (
<PageHeaderWrapper <PageHeaderWrapper
title={ title={
...@@ -62,11 +112,13 @@ const Info: React.FC = () => { ...@@ -62,11 +112,13 @@ const Info: React.FC = () => {
padding: '0 32px', padding: '0 32px',
}} }}
> >
<Descriptions.Item label="结算日期:">{"2020-08-25"}</Descriptions.Item> <Descriptions.Item label="结算日期:">{infoDetail?.settlementDate}</Descriptions.Item>
<Descriptions.Item label="结算单数:">{"1,238"}</Descriptions.Item> <Descriptions.Item label="结算单数:">{infoDetail?.totalCount }</Descriptions.Item>
<Descriptions.Item label="结算金额:">{"¥668,684,59"}</Descriptions.Item> <Descriptions.Item label="结算金额:">{infoDetail?.amount}</Descriptions.Item>
<Descriptions.Item label="结算方式:">{"月结"}</Descriptions.Item> <Descriptions.Item label="结算方式:">{infoDetail?.settlementWayName}</Descriptions.Item>
<Descriptions.Item label="外部状态:">{"待对账"}</Descriptions.Item> <Descriptions.Item label="外部状态:">
<StatusTag text={infoDetail?.statusName} />
</Descriptions.Item>
</Descriptions> </Descriptions>
</PageHeader> </PageHeader>
</> </>
...@@ -75,7 +127,7 @@ const Info: React.FC = () => { ...@@ -75,7 +127,7 @@ const Info: React.FC = () => {
<Card> <Card>
<StandardTable <StandardTable
tableProps={{ tableProps={{
rowKey: 'id', rowKey: record => (`${record.orderNo}-${record.payTime}`),
}} }}
columns={columns} columns={columns}
currentRef={ref} currentRef={ref}
...@@ -91,14 +143,14 @@ const Info: React.FC = () => { ...@@ -91,14 +143,14 @@ const Info: React.FC = () => {
) )
}} }}
effects={($, actions) => { effects={($, actions) => {
useStateFilterSearchLinkageEffect($, actions, 'megaLayout.topLayout.search', FORM_FILTER_PATH); useStateFilterSearchLinkageEffect($, actions, 'megaLayout.topLayout.orderNo', FORM_FILTER_PATH);
// useAsyncInitSelect( // useAsyncInitSelect(
// ['innerStatus', 'outerStatus'], // ['innerStatus', 'outerStatus'],
// fetchSelectOptions, // fetchSelectOptions,
// ); // );
}} }}
schema={detailSchema} schema={detailSchema}
onSubmit={values => ref.current.reload(values)} onSubmit={handleSearch}
/> />
} }
/> />
......
...@@ -52,21 +52,28 @@ export const schema: ISchema = { ...@@ -52,21 +52,28 @@ export const schema: ISchema = {
}, },
status: { status: {
type: 'string', type: 'string',
enum: [], enum: [
{label: '结算状态(全部)', value: 0},
{label: '待对账', value: 1},
{label: '待付款', value: 2},
{label: '待收款', value: 3},
{label: '待完成', value: 4},
],
'x-component-props': { 'x-component-props': {
placeholder: '结算状态(全部)', placeholder: '结算状态(全部)',
allowClear: true, allowClear: true,
}, },
default: 0
},
submit: {
'x-component': 'Submit',
'x-mega-props': {
span: 1,
},
'x-component-props': {
children: '查询',
},
}, },
// submit: {
// 'x-component': 'Submit',
// 'x-mega-props': {
// span: 1,
// },
// 'x-component-props': {
// children: '查询',
// },
// },
}, },
}, },
}, },
...@@ -77,6 +84,17 @@ export const schema: ISchema = { ...@@ -77,6 +84,17 @@ export const schema: ISchema = {
/** /**
* 平台积分结算- 平台积分结算明细 * 平台积分结算- 平台积分结算明细
*/ */
export const commonTimeList = [
{ label: '今天', value: 1},
{ label: '一周内', value: 2},
{ label: '一个月内', value: 3},
{ label: '三个月内', value: 4},
{ label: '六个月内', value: 5},
{ label: '一年内', value: 6 },
{ label: '一年前', value: 7}
];
const orderTime = [{label: '下单时间(所有)', value: 0}].concat(commonTimeList);
const payTime = [{label: '支付时间(所有)', value: 0}].concat(commonTimeList);
export const detailSchema: ISchema = { export const detailSchema: ISchema = {
type: 'object', type: 'object',
...@@ -99,11 +117,11 @@ export const detailSchema: ISchema = { ...@@ -99,11 +117,11 @@ export const detailSchema: ISchema = {
children: '{{exportBtn}}', children: '{{exportBtn}}',
}, },
}, },
search: { orderNo: {
type: 'string', type: 'string',
'x-component': 'Search', 'x-component': 'Search',
'x-component-props': { 'x-component-props': {
placeholder: '搜索', placeholder: '搜索 (单据号)',
}, },
}, },
}, },
...@@ -117,31 +135,39 @@ export const detailSchema: ISchema = { ...@@ -117,31 +135,39 @@ export const detailSchema: ISchema = {
}, },
}, },
properties: { properties: {
orderAbstract: {
type: 'string',
'x-component-props': {
placeholder: '单据摘要'
}
},
orderTime: { orderTime: {
type: 'string', type: 'string',
enum: [], enum: orderTime,
default: 0,
'x-component-props': { 'x-component-props': {
placeholder: '加工企业名称(全部)', placeholder: '下单时间(全部)',
allowClear: true, allowClear: true,
}, },
}, },
payTime: { payTime: {
type: 'string', type: 'string',
enum: [], enum: payTime,
default: 0,
'x-component-props': { 'x-component-props': {
placeholder: '加工企业名称(全部)', placeholder: '支付时间(全部)',
allowClear: true, allowClear: true,
}, },
}, },
// submit: { submit: {
// 'x-component': 'Submit', 'x-component': 'Submit',
// 'x-mega-props': { 'x-mega-props': {
// span: 1, span: 1,
// }, },
// 'x-component-props': { 'x-component-props': {
// children: '查询', children: '查询',
// }, },
// }, },
}, },
}, },
}, },
......
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