Commit df468bf6 authored by XieZhiXiong's avatar XieZhiXiong
parents 859068e4 7f749d46
...@@ -19,6 +19,8 @@ import StatusActions from '../../components/StatusActions'; ...@@ -19,6 +19,8 @@ import StatusActions from '../../components/StatusActions';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import EyePreview from '@/components/EyePreview'; import EyePreview from '@/components/EyePreview';
import { Moment } from 'moment'; import { Moment } from 'moment';
import { payStatus } from '../../common';
const formActions = createFormActions(); const formActions = createFormActions();
interface SearchParams { interface SearchParams {
...@@ -75,12 +77,7 @@ const SettlementList = () => { ...@@ -75,12 +77,7 @@ const SettlementList = () => {
{title: '支付方式', dataIndex: 'payWayName'}, {title: '支付方式', dataIndex: 'payWayName'},
{ {
title: '结算状态', dataIndex: 'status', title: '结算状态', dataIndex: 'status',
filters: [ filters: payStatus,
{ text: '待对账', value: 1 },
{ text: '待付款', value: 2 },
{ text: '待收款', value: 3 },
{ text: '以完成', value: 4 },
],
onFilter: (value: number, record: any) => record.status == value, onFilter: (value: number, record: any) => record.status == value,
render: (text: string, record: any) => { render: (text: string, record: any) => {
return ( return (
......
.text {
color: @main-color;
cursor: pointer;
}
\ No newline at end of file
...@@ -17,7 +17,8 @@ import { schema } from './schema'; ...@@ -17,7 +17,8 @@ import { schema } from './schema';
import ModalContainer from '../../components/ModalContainer' import ModalContainer from '../../components/ModalContainer'
import InvoiceCreate from '../../components/InvoiceCreate' import InvoiceCreate from '../../components/InvoiceCreate'
import { PublicApi } from '@/services/api' import { PublicApi } from '@/services/api'
import PayStatusTag from '@/components/StatusTag'; import StatusTag from '../../components/StatusTag';
import styles from './index.less'
const RangePicker = DatePicker.RangePicker; const RangePicker = DatePicker.RangePicker;
const formActions = createFormActions(); const formActions = createFormActions();
...@@ -29,7 +30,7 @@ const columns = [ ...@@ -29,7 +30,7 @@ const columns = [
return ( return (
<div> <div>
<p>{record.orderNo}</p> <p>{record.orderNo}</p>
<Tag>{record.settlementOrderTypeName}</Tag> <StatusTag text={record.settlementOrderTypeName} />
</div> </div>
) )
} }
...@@ -55,7 +56,7 @@ const columns = [ ...@@ -55,7 +56,7 @@ const columns = [
return ( return (
<div> <div>
<p>{record.batch}</p> <p>{record.batch}</p>
<p>{record.payNode }</p> <p>{record.payNode}</p>
</div> </div>
) )
} }
...@@ -65,11 +66,15 @@ const columns = [ ...@@ -65,11 +66,15 @@ const columns = [
{ {
title: '开票状态', title: '开票状态',
dataIndex: 'invoiceStatus', dataIndex: 'invoiceStatus',
filters: [
{ text: '未开票', value: 0 },
{ text: '已开票', value: 1 },
],
onFilter: (value: number, record: any) => record.invoiceStatus == value,
render: (text, record) => { render: (text, record) => {
const color = record.status ? 'green': 'blue'
return ( return (
<div> <div>
<Tag color={color}>{record.invoiceStatusName}</Tag> <StatusTag text={record.invoiceStatusName} />
</div> </div>
) )
} }
...@@ -77,6 +82,11 @@ const columns = [ ...@@ -77,6 +82,11 @@ const columns = [
{ {
title: '支付状态', title: '支付状态',
dataIndex: 'status', dataIndex: 'status',
filters: [
{ text: '未支付', value: '未支付' },
{ text: '已支付', value: '已支付' },
],
onFilter: (value: number, record: any) => record.payStatusName == value,
render: (text, record) => { render: (text, record) => {
const color = record.payStatusName == '已支付' ? 'green': '#C0C4CC'; const color = record.payStatusName == '已支付' ? 'green': '#C0C4CC';
return ( return (
...@@ -94,8 +104,16 @@ const columns = [ ...@@ -94,8 +104,16 @@ const columns = [
({visible, show, cancel}) => { ({visible, show, cancel}) => {
return ( return (
<> <>
<InvoiceCreate id={record.id} title="开具发票" width={800} visible={visible} onCancel={cancel} /> <InvoiceCreate
<div onClick={show}>{record.invoiceStatus == 1 ? '查看' : '开票'}</div> id={record.id}
type={record.invoiceStatus}
title="开具发票"
width={800}
visible={visible}
onCancel={cancel}
refresh={() => formActions.submit()}
/>
<div className={styles.text} onClick={show}>{record.invoiceStatus == 1 ? '查看' : '开票'}</div>
</> </>
) )
} }
...@@ -118,12 +136,17 @@ const SettlementList = () => { ...@@ -118,12 +136,17 @@ const SettlementList = () => {
// /settle/accounts/member/settlement/pageReceiptInvoice // /settle/accounts/member/settlement/pageReceiptInvoice
const searchParams = { const searchParams = {
...params, ...params,
invoiceStatus: params.orderType || 2, invoiceStatus: typeof params.invoiceStatus == 'undefined' ? 2 : params.invoiceStatus ,
payStatus: params.status || 2, payStatus: typeof params.payStatus == 'undefined' ? 2 : params.payStatus,
} }
const { data } = await PublicApi.getSettleAccountsMemberSettlementPageReceiptInvoice(searchParams); const { data } = await PublicApi.getSettleAccountsMemberSettlementPageReceiptInvoice(searchParams);
return data return data
} }
const reload = (values) => {
ref.current.reload(values);
}
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -153,7 +176,7 @@ const SettlementList = () => { ...@@ -153,7 +176,7 @@ const SettlementList = () => {
// ); // );
}} }}
schema={schema} schema={schema}
onSubmit={values => ref.current.reload(values)} onSubmit={reload}
/> />
} }
/> />
......
...@@ -69,9 +69,11 @@ export const schema: ISchema = { ...@@ -69,9 +69,11 @@ export const schema: ISchema = {
}, },
invoiceStatus: { invoiceStatus: {
type: 'string', type: 'string',
default: 0, default: 2,
enum: [ enum: [
{label: '开票状态(全部)', value: 0} {label: '开票状态(全部)', value: 2},
{label: '未开票', value: 0},
{label: '已开票', value: 1}
], ],
'x-component-props': { 'x-component-props': {
placeholder: '开票状态(全部)', placeholder: '开票状态(全部)',
...@@ -80,9 +82,11 @@ export const schema: ISchema = { ...@@ -80,9 +82,11 @@ export const schema: ISchema = {
}, },
payStatus: { payStatus: {
type: 'string', type: 'string',
default: 0, default: 2,
enum: [ enum: [
{label: '支付状态(全部)', value: 0} {label: '支付状态(全部)', value: 2},
{label: '未支付', value: 0},
{label: '已支付', value: 1}
], ],
'x-component-props': { 'x-component-props': {
placeholder: '支付状态(全部)', placeholder: '支付状态(全部)',
......
...@@ -18,6 +18,7 @@ import { PublicApi } from '@/services/api'; ...@@ -18,6 +18,7 @@ import { PublicApi } from '@/services/api';
import StatusActions from '../../components/StatusActions'; import StatusActions from '../../components/StatusActions';
import StatusTag from '../../components/StatusTag'; import StatusTag from '../../components/StatusTag';
import EyePreview from '@/components/EyePreview'; import EyePreview from '@/components/EyePreview';
import { payStatus } from '../../common';
const formActions = createFormActions(); const formActions = createFormActions();
...@@ -57,12 +58,7 @@ const SettlementList = () => { ...@@ -57,12 +58,7 @@ const SettlementList = () => {
{title: '支付方式', dataIndex: 'payWayName'}, {title: '支付方式', dataIndex: 'payWayName'},
{ {
title: '结算状态', dataIndex: 'status', title: '结算状态', dataIndex: 'status',
filters: [ filters: payStatus,
{ text: '待对账', value: 1 },
{ text: '待付款', value: 2 },
{ text: '待收款', value: 3 },
{ text: '以完成', value: 4 },
],
onFilter: (value: number, record: any) => record.status == value, onFilter: (value: number, record: any) => record.status == value,
render: (text, record) => { render: (text, record) => {
return ( return (
......
/**
* 用于平台结算管理,应收,应付账款管理列表页 结算状态下拉筛选
*/
export const payStatus = [
{ text: '待对账', value: 1 },
{ text: '待付款', value: 2 },
{ text: '待收款', value: 3 },
{ text: '以完成', value: 4 },
];
\ No newline at end of file
...@@ -18,4 +18,71 @@ export interface VoucherFileProps { ...@@ -18,4 +18,71 @@ export interface VoucherFileProps {
* 文件路径 * 文件路径
*/ */
proveUrl: string proveUrl: string
} }
\ No newline at end of file
export interface ProveListProps {
/**
* 发票号
*/
number: string,
/**
* 开具时间
*/
invoiceDate: string,
/**
* 备注
*/
remark: string
}
/**
* 开票管理中, 发票的信息, 用于开票管理查看发票,开票
*/
export interface InvoiceInfoProps {
/**
* 开具类型
*/
typeName: string,
/**
* 发票种类
*/
kindName: string,
/**
* 发票抬头
*/
invoiceTitle: string,
/**
* 纳税号
*/
taxNo: string,
/**
* 开户行
*/
bankOfDeposit: string,
/**
* 账号
*/
account: string,
/**
* 电话
*/
tel: string,
/**
* 地址
*/
address: string,
/**
* 发票数组
*/
proveList: ProveListProps[]
}
...@@ -51,7 +51,6 @@ const InvoiceArray = (props) => { ...@@ -51,7 +51,6 @@ const InvoiceArray = (props) => {
...componentProps ...componentProps
} = schema.getExtendsComponentProps() || {} } = schema.getExtendsComponentProps() || {}
console.log(componentProps);
const onAdd = () => { const onAdd = () => {
const items = Array.isArray(schema.items) const items = Array.isArray(schema.items)
? schema.items[schema.items.length - 1] ? schema.items[schema.items.length - 1]
......
...@@ -9,32 +9,84 @@ import { Drawer, Input, DatePicker } from 'antd'; ...@@ -9,32 +9,84 @@ import { Drawer, Input, DatePicker } from 'antd';
import InvoiceInfo from './InvoiceInfo'; import InvoiceInfo from './InvoiceInfo';
import { import {
SchemaForm, SchemaForm,
SchemaField,
SchemaMarkupField as Field SchemaMarkupField as Field
} from '@formily/antd' } from '@formily/antd'
import InvoiceArray from './InvoiceArray'; import InvoiceArray from './InvoiceArray';
import moment from 'moment'; import { Button, Table } from 'antd';
import { Button } from 'antd';
import { createFormActions } from '@formily/antd'; import { createFormActions } from '@formily/antd';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { InvoiceInfoProps, ProveListProps } from '../../common/type';
import { Moment } from 'moment';
import styles from './index.less';
const formActions = createFormActions(); const formActions = createFormActions();
const InvoiceDrawer = (props) => { interface Iprops {
const { visible, title, onCancel, width } = props; visible: boolean,
const [invoiceInfo, setInvoiceInfo] = useState({}) title: string,
width: number,
type: number, // 0 -> 开票, 1-> 查看
id: string, // 开票管理id,
onCancel: () => void,
refresh: () => void
}
interface SubmitProps {
list: {
number: string,
remark: string,
invoiceDate: Moment
}[]
}
const columns = [
{title: '发票号码', dataIndex:'number'},
{title: '发票时间', dataIndex:'invoiceDate'},
{title: '备注', dataIndex:'remark'},
]
const InvoiceDrawer: React.FC<Iprops> = (props) => {
const { visible, title, onCancel, width, type, id } = props;
const [invoiceInfo, setInvoiceInfo] = useState<InvoiceInfoProps>(null);
const [submitLoading, setSubmitLoading] = useState<boolean>(false)
const handleSubmit = () => { const handleSubmit = () => {
formActions.submit() if(type == 0) {
formActions.submit()
}
} }
const handleForm = (value) => { const handleForm = (value: SubmitProps) => {
console.log(value); // 如果当前type 为查看,那么直接关闭
if(type == 1) {
onCancel();
return;
}
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 postData = {
...rest,
proveList: proveList,
kind: kindName == '增值税普通发票' ? 1 : 2,
type: typeName == '企业' ? 1 : 2,
receiptInvoiceId: parseInt(id)
}
setSubmitLoading(true)
console.log(postData);
// /settle/accounts/member/settlement/invoiceProve
PublicApi.postSettleAccountsMemberSettlementInvoiceProve(postData)
.then((data) => {
if(data.code === 1000) {
setSubmitLoading(false)
props.refresh();
onCancel();
}
})
} }
useEffect(() => { useEffect(() => {
if(props.visible) { if(props.visible) {
///settle/accounts/member/settlement/getInvoiceProveDetail ///settle/accounts/member/settlement/getInvoiceProveDetail
PublicApi.getSettleAccountsMemberSettlementGetInvoiceProveDetail({id: props.id}) PublicApi.getSettleAccountsMemberSettlementGetInvoiceProveDetail({id: id})
.then((data) => { .then((data) => {
if(data.code === 1000) { if(data.code === 1000) {
setInvoiceInfo(data.data) setInvoiceInfo(data.data)
...@@ -42,42 +94,64 @@ const InvoiceDrawer = (props) => { ...@@ -42,42 +94,64 @@ const InvoiceDrawer = (props) => {
}) })
} }
}, [props.id, props.visible]) }, [id, visible])
return ( return (
<Drawer visible={visible} title={title} width={width} onClose={onCancel} footer={ <Drawer
<div visible={visible}
style={{ title={title}
textAlign: 'right', width={width}
}} onClose={onCancel}
> footer={
<Button onClick={onCancel} style={{ marginRight: 8 }}> <div
取消 style={{
</Button> textAlign: 'right',
<Button onClick={handleSubmit} type="primary"> }}
确认 >
</Button> <Button onClick={onCancel} style={{ marginRight: 8 }}>
</div> 取消
}> </Button>
<Button onClick={handleSubmit} type="primary">
确认
</Button>
</div>
}
>
<InvoiceInfo infos={invoiceInfo} /> <InvoiceInfo infos={invoiceInfo} />
<div style={{display: 'flex', margin: '50px 0 15px 0'}}> {
<div style={{width: '170px', marginRight: '16px'}}>发票号码</div> type == 0
<div style={{width: '140px', marginRight: '16px'}}>开票日期</div> ? (
<div>备注</div> <>
</div> <div className={styles.formHeader}>
<SchemaForm onSubmit={handleForm} actions={formActions} components={{ InvoiceArray, Input, DatePicker }}> <div className={styles.invoiceNum}>发票号码</div>
<Field <div className={styles.invoiceDate}>开票日期</div>
name="userList" <div>备注</div>
type="array" </div>
x-component="InvoiceArray" <SchemaForm onSubmit={handleForm} actions={formActions} components={{ InvoiceArray, Input, DatePicker }}>
> <Field
<Field type="object"> name="list"
<Field name="no" x-component="Input" x-rules={[{required: true, message: '请填写发票号'}]} /> type="array"
<Field name="date" x-component="DatePicker" x-rules={[{required: true, message: '请选择发票日期'}]} /> x-component="InvoiceArray"
<Field name="desc" x-component="Input" x-component-props={{style: {width: '240px'}}} /> >
</Field> <Field type="object">
</Field> <Field name="number" x-component="Input" x-rules={[{required: true, message: '请填写发票号'}]} />
</SchemaForm> <Field name="invoiceDate" x-component="DatePicker" x-rules={[{required: true, message: '请选择发票日期'}]} />
<Field name="remark" x-component="Input" x-component-props={{style: {width: '240px'}}} />
</Field>
</Field>
</SchemaForm>
</>
)
: (
<Table
columns={columns}
dataSource={invoiceInfo?.proveList}
rowKey={"number"}
/>
)
}
</Drawer> </Drawer>
) )
} }
......
...@@ -6,9 +6,11 @@ ...@@ -6,9 +6,11 @@
import React from 'react'; import React from 'react';
import { Row, Col } from 'antd'; import { Row, Col } from 'antd';
import { InvoiceInfoProps } from '../../common/type';
import styles from './index.less';
interface Iprops { interface Iprops {
infos: any infos: InvoiceInfoProps
} }
const infoList = [ const infoList = [
...@@ -30,8 +32,8 @@ const InvoiceInfo: React.FC<Iprops> = (props) => { ...@@ -30,8 +32,8 @@ const InvoiceInfo: React.FC<Iprops> = (props) => {
{ {
infoList.map((item) => { infoList.map((item) => {
return ( return (
<Row style={{marginBottom: '24px', fontSize: '13px'}} key={item.dataIndex}> <Row className={styles.row} key={item.dataIndex}>
<Col span={3} style={{color: '#909399'}}>{item.title}</Col> <Col span={3} className={styles.label}>{item.title}</Col>
<Col span={16}>{infos && infos[item.dataIndex]}</Col> <Col span={16}>{infos && infos[item.dataIndex]}</Col>
</Row> </Row>
) )
......
@font-size: 13px;
@label-color: #909399;
@margin-top: 50px;
.row {
margin-bottom: @margin-lg;
font-size: @font-size;
.label {
color: @label-color;
}
}
.formHeader {
display: flex;
margin: 50px 0 @margin-md 0;
.invoiceNum {
width: 170px;
margin-right: @margin-md;
}
.invoiceDate {
width: 140px;
margin-right: @margin-md;
}
}
\ No newline at end of file
...@@ -20,7 +20,7 @@ interface Iprops { ...@@ -20,7 +20,7 @@ interface Iprops {
settlementId?: number, // 结算方id settlementId?: number, // 结算方id
payName?: string, //付款方 payName?: string, //付款方
excludes: number[], // 排除数组,比如当应付的时候,只留下查看凭证跟付款, 应收账款的时候保留三个 excludes: number[], // 排除数组,比如当应付的时候,只留下查看凭证跟付款, 应收账款的时候保留三个
type?: number, // 1 -> 应付账款结算 2-> 应收账款结算, 用于判断 查看付款凭证 type?: number, // 1 -> 应付账款结算 2-> 应收账款结算, 用于判断 是否有查看付款凭证
handleReconciledComfirm?: (params: any) => void // 对账确定回调 handleReconciledComfirm?: (params: any) => void // 对账确定回调
handleComfirmInCompletePayment?: (params: any) => void, // 确认未到款回调 handleComfirmInCompletePayment?: (params: any) => void, // 确认未到款回调
handleComfirmCompletePayment?: (params:any) => void, //确认到款回调 handleComfirmCompletePayment?: (params:any) => void, //确认到款回调
...@@ -90,7 +90,6 @@ const ConfirmCollected = (props) => { ...@@ -90,7 +90,6 @@ const ConfirmCollected = (props) => {
const WrapVoucher = ({ id, type}) => { const WrapVoucher = ({ id, type}) => {
const [files, setFiles] = useState([]); const [files, setFiles] = useState([]);
console.log(id);
useEffect(() => { useEffect(() => {
if(id) { if(id) {
const service = type == 1 const service = type == 1
......
.tag-out-border {
border: none;
}
\ No newline at end of file
import React from 'react'; import React from 'react';
import { Tag } from 'antd'; import { Tag } from 'antd';
import './index.less';
export const TO_BE_RECONCILED = 1; // 待对账 export const TO_BE_RECONCILED = 1; // 待对账
export const TO_BE_PAY = 2 // 待付款 export const TO_BE_PAY = 2 // 待付款
...@@ -14,13 +15,16 @@ export enum StatusEnum { ...@@ -14,13 +15,16 @@ export enum StatusEnum {
} }
const COLOR = [ const COLOR = [
"purple", // 随意给一个 "", // 随意给一个
"gold", // 待对账 "gold", // 待对账
"red", // 待付款 "red", // 待付款
"blue", // 代收款, "blue", // 代收款,
"green", // 以完成 "green", // 以完成
] ]
/**
* 以下用于 应收账款管理, 应付账款管理 列表页, 以及应收,应付款详情页状态
*/
const STATUS_TEXT = [ const STATUS_TEXT = [
"无", "无",
"待对账", "待对账",
...@@ -36,6 +40,35 @@ const STATUS_TEXT_MAP = { ...@@ -36,6 +40,35 @@ const STATUS_TEXT_MAP = {
"已完成": 4 "已完成": 4
} }
/**
* 开票管理, 开票类型, 其中 value 的值对应上面 COLOR 的值
*/
const INVOICE_TYPE = {
"生产通知单": 0,
"积分订单": 1,
"退货申请单": 2,
"订单": 3,
"物流单": 4,
}
/**
* 开票管理, 开票状态
*/
const INVOICE_STATUS = {
"未开票": 3,
"已开票": 4,
}
/**
* 将开票类型跟 应收应付账款管理合并
*/
const ALL_COLOR_MAP = {
...INVOICE_TYPE,
...STATUS_TEXT_MAP,
...INVOICE_STATUS
}
interface Iprops { interface Iprops {
status?: StatusEnum, status?: StatusEnum,
text?: string text?: string
...@@ -43,13 +76,26 @@ interface Iprops { ...@@ -43,13 +76,26 @@ interface Iprops {
const StatusTag: React.FC<Iprops> = (props: Iprops) => { const StatusTag: React.FC<Iprops> = (props: Iprops) => {
const { status, text } = props const { status, text } = props
return ( return (
<Tag color={ text ? COLOR[STATUS_TEXT_MAP[text]] : COLOR[status]}>{text ? text : STATUS_TEXT[status]}</Tag> <Tag
className="tag-out-border"
color={
text
? COLOR[ALL_COLOR_MAP[text]]
: COLOR[status]
}
>
{
text || STATUS_TEXT[status]
}
</Tag>
) )
} }
StatusTag.defaultProps = { // StatusTag.defaultProps = {
status: 1 // status: 1
} // }
export default StatusTag export default StatusTag
\ No newline at end of file
...@@ -117,7 +117,7 @@ const UploadPayVoucher: React.FC<Iprops> = (props) => { ...@@ -117,7 +117,7 @@ const UploadPayVoucher: React.FC<Iprops> = (props) => {
<Voucher files={fileList} /> <Voucher files={fileList} />
<div className={styles.upload}> <div className={styles.upload}>
<Upload {...uploadProps}> <Upload {...uploadProps}>
<Button icon={<UploadOutlined />}>上传凭证</Button> <Button icon={<UploadOutlined />} loading={loading}>上传凭证</Button>
<p className={styles.tips}>单个凭证文件大小不能超过200K</p> <p className={styles.tips}>单个凭证文件大小不能超过200K</p>
</Upload> </Upload>
</div> </div>
......
...@@ -16,29 +16,36 @@ import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect'; ...@@ -16,29 +16,36 @@ import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { schema } from './schema'; import { schema } from './schema';
import StatusTag from '../../components/StatusTag'; import StatusTag from '../../components/StatusTag';
import StatusActions from '../../components/StatusActions'; import StatusActions from '../../components/StatusActions';
import { payStatus } from '../../common';
import { PublicApi } from '@/services/api'
const formActions = createFormActions(); const formActions = createFormActions();
const AccountReceivable = () => { const AccountReceivable = () => {
const ref = useRef<any>({}) const ref = useRef<any>({})
const fetchListData = async (params) => { const fetchListData = async (params) => {
return { const searchData = {
data: [{id: 1}], status: 0,
totalCount: 1 ...params
} }
///settle/accounts/platform/settlement/pageReceivableSettlement
const { data } = await PublicApi.getSettleAccountsPlatformSettlementPageReceivableSettlement(searchData);
return data
} }
const columns = [ const columns = [
{title: '结算单号', dataIndex: 'num'}, {title: '结算单号', dataIndex: 'settlementNo'},
{title: '结算日期', dataIndex: 'num'}, {title: '结算日期', dataIndex: 'settlementDate'},
{title: '结算方式', dataIndex: 'num'}, {title: '结算方式', dataIndex: 'settlementWayName'},
{title: '总单数', dataIndex: 'num'}, {title: '总单数', dataIndex: 'totalCount'},
{title: '代收金额', dataIndex: 'num'}, {title: '代收金额', dataIndex: 'collectAmount'},
{title: '佣金', dataIndex: 'num'}, {title: '佣金', dataIndex: 'brokerage'},
{title: '结算金额', dataIndex: 'num'}, {title: '结算金额', dataIndex: 'amount'},
{title: '结算日期', dataIndex: 'num'}, {title: '结算时间', dataIndex: 'settlementTime'},
{title: '支付方式', dataIndex: 'payMethod'}, {title: '支付方式', dataIndex: 'payWayName'},
{ {
title: '结算状态', dataIndex: 'status', title: '结算状态', dataIndex: 'status',
filters: payStatus,
onFilter: (value: number, record: any) => record.status == value,
render: (text, record) => { render: (text, record) => {
return ( return (
<StatusTag status={record.status || 1} /> <StatusTag status={record.status || 1} />
...@@ -50,7 +57,12 @@ const AccountReceivable = () => { ...@@ -50,7 +57,12 @@ const AccountReceivable = () => {
render: (text, record) => { render: (text, record) => {
return ( return (
<StatusActions <StatusActions
status={record.status || 3} excludes={[2]}
id={record.id}
type={2}
status={record.status}
settlementDate={record.settlementDate}
payName={"平台"}
handleReconciledComfirm={handleConfirm} handleReconciledComfirm={handleConfirm}
handleComfirmInCompletePayment={handleComfirmInCompletePayment} handleComfirmInCompletePayment={handleComfirmInCompletePayment}
handleComfirmCompletePayment={handleComfirmCompletePayment} handleComfirmCompletePayment={handleComfirmCompletePayment}
...@@ -60,22 +72,58 @@ const AccountReceivable = () => { ...@@ -60,22 +72,58 @@ const AccountReceivable = () => {
} }
] ]
/**
/**
* 确认对账 * 确认对账
* @param cancel 关闭回调函数 * @param {cancel: function, id: number} cancel 为关闭回调函数
*/ */
const handleConfirm = (params: any) => { const handleConfirm = (params: any) => {
console.log(123) ///settle/accounts/platform/settlement/confirmAccountComplete
params.onCancel(); PublicApi.postSettleAccountsMemberSettlementConfirmAccountComplete({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); PublicApi.postSettleAccountsMemberSettlementConfirmPayProve({id: params.id, status: params.status})
params.onCancel() .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.postSettleAccountsMemberSettlementConfirmPayProve({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 (
...@@ -95,14 +143,14 @@ const AccountReceivable = () => { ...@@ -95,14 +143,14 @@ const AccountReceivable = () => {
expressionScope={{}} expressionScope={{}}
components={{DatePicker}} components={{DatePicker}}
effects={($, actions) => { effects={($, actions) => {
useStateFilterSearchLinkageEffect($, actions, 'megaLayout.name', FORM_FILTER_PATH); useStateFilterSearchLinkageEffect($, actions, 'megaLayout.settlementName', FORM_FILTER_PATH);
// useAsyncInitSelect( // useAsyncInitSelect(
// ['innerStatus', 'outerStatus'], // ['innerStatus', 'outerStatus'],
// fetchSelectOptions, // fetchSelectOptions,
// ); // );
}} }}
schema={schema} schema={schema}
onSubmit={values => ref.current.reload(values)} onSubmit={handleSearch}
/> />
} }
/> />
......
...@@ -12,13 +12,13 @@ export const schema: ISchema = { ...@@ -12,13 +12,13 @@ export const schema: ISchema = {
type: 'object', type: 'object',
'x-component': 'mega-layout', 'x-component': 'mega-layout',
properties: { properties: {
name: { settlementName: {
type: 'string', type: 'string',
'x-component': 'Search', 'x-component': 'Search',
'x-component-props': { 'x-component-props': {
placeholder: '搜索', placeholder: '搜索结算单号',
align: 'flex-left', align: 'flex-left',
// tip: '输入通知单号、通知单摘要进行搜索', tip: '输入 结算单号 进行搜索',
}, },
}, },
[FORM_FILTER_PATH]: { [FORM_FILTER_PATH]: {
...@@ -47,21 +47,28 @@ export const schema: ISchema = { ...@@ -47,21 +47,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},
],
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: '查询',
// }, },
// }, },
}, },
}, },
}, },
......
...@@ -14,9 +14,9 @@ import { StandardTable } from 'god'; ...@@ -14,9 +14,9 @@ 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 { schema } from './schema/index'; import { schema } from './schema/index';
import ModalContainer from '../../components/ModalContainer'; import StatusActions from '../../components/StatusActions';
import ConfirmAccount from '../../components/ConfirmAccount'; import StatusTag from '../../components/StatusTag';
import Voucher from '../../components/Voucher'; import { payStatus } from '../../common';
const formActions = createFormActions(); const formActions = createFormActions();
const Integral: React.FC = () => { const Integral: React.FC = () => {
...@@ -39,9 +39,11 @@ const Integral: React.FC = () => { ...@@ -39,9 +39,11 @@ const Integral: React.FC = () => {
{title: '支付方式', dataIndex: 'payMethod'}, {title: '支付方式', dataIndex: 'payMethod'},
{ {
title: '结算状态', dataIndex: 'status', title: '结算状态', dataIndex: 'status',
filters: payStatus,
onFilter: (value: number, record: any) => record.status == value,
render: (text, record) => { render: (text, record) => {
return ( return (
<Tag>待对账</Tag> <StatusTag status={record.status || 1} />
) )
} }
}, },
...@@ -50,56 +52,17 @@ const Integral: React.FC = () => { ...@@ -50,56 +52,17 @@ const Integral: React.FC = () => {
render: (text, record) => { render: (text, record) => {
return ( return (
<> <>
<ModalContainer> <StatusActions
{ excludes={[2]}
({visible, show, cancel}) => { id={record.id}
return ( type={2}
<> status={record.status}
<Modal width={400} title="确认对账完成" visible={visible} onCancel={cancel} onOk={() => handleConfirm(cancel)}> settlementDate={record.settlementDate}
<ConfirmAccount /> payName={record.payName}
</Modal> handleReconciledComfirm={handleConfirm}
<div onClick={show}>确认对账完成</div> handleComfirmInCompletePayment={handleComfirmInCompletePayment}
</> handleComfirmCompletePayment={handleComfirmCompletePayment}
) />
}
}
</ModalContainer>
<ModalContainer>
{
({visible, show, cancel}) => {
return (
<>
<Modal width={548} title="查看付款凭证" onCancel={cancel} visible={visible} footer={null}>
<Voucher />
</Modal>
<div onClick={show}>查看付款凭证</div>
</>
)
}
}
</ModalContainer>
<ModalContainer>
{
({visible, show, cancel}) => {
return (
<>
<Modal width={548} title="确认付款凭证" onCancel={cancel} visible={visible}
footer={(
<Space>
<Button>取消</Button>
<Button>确认未到款</Button>
<Button>确认到款</Button>
</Space>
)}
>
<Voucher />
</Modal>
<div onClick={show}>确认付款凭证</div>
</>
)
}
}
</ModalContainer>
</> </>
) )
} }
...@@ -110,9 +73,17 @@ const Integral: React.FC = () => { ...@@ -110,9 +73,17 @@ const Integral: React.FC = () => {
* 确认对账 * 确认对账
* @param cancel 关闭回调函数 * @param cancel 关闭回调函数
*/ */
const handleConfirm = (cancel) => { const handleConfirm = (params) => {
console.log(123) console.log(123)
cancel(); params.cancel();
}
const handleComfirmInCompletePayment = (params: any) => {
console.log(params);
params.onCancel()
}
const handleComfirmCompletePayment = (params: any) => {
params.onCancel();
} }
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
......
...@@ -16,7 +16,6 @@ import { StandardTable } from 'god'; ...@@ -16,7 +16,6 @@ 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';
const formActions = createFormActions(); const formActions = createFormActions();
const columns = [ const columns = [
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import NiceForm from '@/components/NiceForm'; import NiceForm from '@/components/NiceForm';
import { Card, Button } from 'antd'; import { Card, Button, message } from 'antd';
import { createFormActions } from '@formily/antd'; import { createFormActions } from '@formily/antd';
import { PlusOutlined } from '@ant-design/icons' import { PlusOutlined } from '@ant-design/icons'
import ModalTable from '@/components/ModalTable'; import ModalTable from '@/components/ModalTable';
...@@ -175,20 +175,26 @@ const MemberSettleAdd: React.FC = () => { ...@@ -175,20 +175,26 @@ const MemberSettleAdd: React.FC = () => {
useEffect(() => { useEffect(() => {
if(id) { if(id) {
async function getInfo() { async function getInfo() {
const { data } = await getSettleAccountsPlatformConfigGetMemberSettlementStrategyDetail({id}) const res = await getSettleAccountsPlatformConfigGetMemberSettlementStrategyDetail({id})
setInitialValue({ if(res.code === 1000) {
name: data.name, setInitialValue({
settlementOrderType: data.settlementOrderType.toString(), name: res.data.name,
memberList: data.memberList, settlementOrderType: res.data.settlementOrderType.toString(),
settlementWay: { memberList: res.data.memberList,
active: data.settlementWay, settlementWay: {
otherValues: [data.settlementDays, data.settlementDate], active: res.data.settlementWay,
} otherValues: [res.data.settlementDays, res.data.settlementDate],
}) }
formActions.setFieldValue('Tabs.memberTab.someLists', data.memberList); })
// 必须设置key formActions.setFieldValue('Tabs.memberTab.someLists', res.data.memberList);
memberRowCtl.setSelectRow(data.memberList); // 必须设置key
memberRowCtl.setSelectedRowKeys(data.memberList.map((item) => item.memberId)) memberRowCtl.setSelectRow(res.data.memberList);
memberRowCtl.setSelectedRowKeys(res.data.memberList.map((item) => item.memberId))
} else {
message.error({content: res.message})
}
} }
getInfo(); getInfo();
} }
...@@ -197,7 +203,7 @@ const MemberSettleAdd: React.FC = () => { ...@@ -197,7 +203,7 @@ const MemberSettleAdd: React.FC = () => {
return ( return (
<PageHeaderWrapper <PageHeaderWrapper
extra={[ extra={[
<Button key="1" type="primary" onClick={handleClick} > <Button loading={submitLoading} key="1" type="primary" onClick={handleClick} >
保存 保存
</Button>, </Button>,
]} ]}
......
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