Commit 932096bb authored by Bill's avatar Bill

结算能力-结算规则配置接口对接完成,剩余部分等接口

parent 0cfef8dc
......@@ -7,7 +7,7 @@
/*
* @Author: Bill
* @Date: 2020-10-12 09:45:20
* @LastEditTime: 2020-10-21 16:37:03
* @LastEditTime: 2020-10-23 16:08:13
* @Description: 加工能力路由
*/
......@@ -66,6 +66,15 @@ const HandlingRoute = {
path: '/memberCenter/balance/settleRules/memberSettleList/add',
name: 'memberSettleAdd',
icon: 'smile',
hideInMenu: true,
component: '@/pages/balance/settleRules/memberSettle/info'
},
// 结算规则配置 -> 会员支付策略详情
{
path: '/memberCenter/balance/settleRules/memberSettleList/detail',
name: 'memberSettleDetail',
icon: 'smile',
hideInMenu: true,
component: '@/pages/balance/settleRules/memberSettle/info'
},
]
......
......@@ -3,6 +3,7 @@
* @Date: 2020-07-13 14:08:50
<<<<<<< HEAD
* @LastEditors: Please set LastEditors
<<<<<<< HEAD
* @LastEditTime: 2020-10-26 18:20:31
=======
* @LastEditors: Please set LastEditors
......@@ -12,6 +13,9 @@
=======
* @LastEditTime: 2020-10-20 13:40:28
>>>>>>> 26b20691... 结算能力页面大致完成
=======
* @LastEditTime: 2020-10-23 16:07:53
>>>>>>> b7a56747... 结算能力-结算规则配置接口对接完成,剩余部分等接口
*/
export default {
......@@ -506,6 +510,7 @@ export default {
'menu.balance.settleRules.receiptInfoAdd': '新增发票信息',
'menu.balance.settleRules.receiptInfo': '发票详情',
'menu.balance.settleRules.memberSettleAdd': '新增会员结算策略',
'menu.balance.settleRules.memberSettleDetail': '会员结算详情',
'menu.balance.platformSettlement': '平台结算管理',
'menu.balance.platformSettlement.accountReceivable': '平台代收账款结算',
'menu.balance.platformSettlement.accountReceivableInfo': '平台代收账款结算明细',
......
......@@ -10,8 +10,8 @@ import { QuestionCircleOutlined } from '@ant-design/icons';
import styles from './index.less';
import { registerValidationRules } from '@formily/antd' // 或者 @formily/next
const DAY = 0;
const MONTH = 1;
const DAY = 1;
const MONTH = 2;
registerValidationRules({
settleMethodRule: value => {
......@@ -29,34 +29,26 @@ registerValidationRules({
const SettleMethod = (props) => {
const { active = DAY, otherValues = [30, 1] } = props.value || {};
// const componentProps = props.props['x-component-props'] || {};
const { daysVisible, monthVisible } = props;
const handleChange = (e, type) => {
if(active == type) {
return ;
}
const previewValue = otherValues
// setActive(type)
props.mutators.change({
props.onChange({
active: type,
otherValues: previewValue
})
}
useEffect(() => {
const componentProps = props.props['x-component-props'] || {};
const defaultValue = componentProps.default || {};
if(typeof props.initialValue == 'undefined') {
props.mutators.change(defaultValue)
} else {
props.mutators.change(props.initialValue)
}
}, [props.initialValue])
const handleInputChange = (value, type) => {
const target = type;
const target = type - 1;
console.log(target);
const temp = [...otherValues];
temp[target] = value;
props.mutators.change({
console.log(temp[target]);
props.onChange({
active: type,
otherValues: temp
})
......@@ -64,39 +56,92 @@ const SettleMethod = (props) => {
return (
<div>
<div className={styles.period}>
<div>
<Radio name="method" checked={active == DAY} onChange={(e) => handleChange(e, DAY)}>账期(默认)</Radio>
<Tooltip title="选择账期并设置账期天数后,即结算时间为T+账期天数,系统每天自动将支付时间达到账期天数的支付金额进行结算,如设置账期天数为30天,则系统每天结算支付时间达到30天的支付金额">
<QuestionCircleOutlined />
</Tooltip>
</div>
<div className={styles.days}>
<div style={{margin: '0 20px 0 12px'}}>账期天数</div>
<div>
<Input
addonAfter={"天"}
value={otherValues[DAY]}
onChange={(e) => handleInputChange(e.target.value, DAY)}
disabled={active !== DAY}
style={{width: '160px'}}
/></div>
</div>
</div>
<div className={styles.period}>
<div >
<Radio name="method" checked={active == MONTH} onChange={(e) => handleChange(e, MONTH)}>月结</Radio>
<Tooltip title="选择月结并设置每月结算日期后,系统将在每月结算日当天自动将上月发生的支付金额进行结算,如每月结算日期设置为每月1号,则每月1号系统自动结算上月所有已发生的支付金额">
<QuestionCircleOutlined />
</Tooltip>
</div>
<div className={styles.days}>
<div style={{marginRight: '20px'}}>每月结算日期:每月</div>
<div><Input addonAfter={"号"} style={{width: '160px'}} value={otherValues[MONTH]} onChange={(e) => handleInputChange(e.target.value, MONTH)} disabled={active !== MONTH}/></div> </div>
{
daysVisible
? (
<div className={styles.period}>
<div>
<Radio name="method" checked={active == DAY} onChange={(e) => handleChange(e, DAY)}>账期(默认)</Radio>
<Tooltip title="选择账期并设置账期天数后,即结算时间为T+账期天数,系统每天自动将支付时间达到账期天数的支付金额进行结算,如设置账期天数为30天,则系统每天结算支付时间达到30天的支付金额">
<QuestionCircleOutlined />
</Tooltip>
</div>
<div className={styles.days}>
<div style={{margin: '0 20px 0 12px'}}>账期天数</div>
<div>
<Input
addonAfter={"天"}
value={otherValues[DAY - 1]}
onChange={(e) => handleInputChange(e.target.value, DAY)}
disabled={active !== DAY}
style={{width: '160px'}}
/></div>
</div>
</div>
)
: null
}
{
monthVisible
? <div className={styles.period}>
<div >
<Radio name="method" checked={active == MONTH} onChange={(e) => handleChange(e, MONTH)}>月结</Radio>
<Tooltip title="选择月结并设置每月结算日期后,系统将在每月结算日当天自动将上月发生的支付金额进行结算,如每月结算日期设置为每月1号,则每月1号系统自动结算上月所有已发生的支付金额">
<QuestionCircleOutlined />
</Tooltip>
</div>
<div className={styles.days}>
<div style={{marginRight: '20px'}}>每月结算日期:每月</div>
<div><Input addonAfter={"号"} style={{width: '160px'}} value={otherValues[MONTH - 1]} onChange={(e) => handleInputChange(e.target.value, MONTH)} disabled={active !== MONTH}/></div> </div>
</div>
: null
}
<div>
{
!monthVisible && !daysVisible
? <div>请在pass平台配置结算方式,否则无法创建会员策略</div>
: null
}
</div>
</div>
)
}
SettleMethod.isFieldComponent = true;
export default SettleMethod;
\ No newline at end of file
const Index = (props) => {
const value = props.value || {active: 0, otherValues: [30, 1]};
const componentProps = props.props['x-component-props'] || {};
const options = componentProps.options || {};
// 默认选择
useEffect(() => {
// const componentProps = props.props['x-component-props'] || {};
const defaultValue = componentProps.default || {};
if(!options.days && !options.month) {
return
}
if(typeof props.initialValue == 'undefined') {
props.mutators.change(defaultValue)
} else {
props.mutators.change(props.initialValue)
}
}, [props.initialValue, options])
const onChange = (value) => {
console.log(value);
props.mutators.change(value);
}
return (
<div>
<SettleMethod
value={value}
daysVisible={options.days}
monthVisible={options.month}
onChange={onChange}
/>
</div>
)
}
Index.isFieldComponent = true;
export default Index;
\ No newline at end of file
.modalBtn {
color: @main-color;
cursor: pointer;
}
\ No newline at end of file
/*
* @Author: your name
* @Date: 2020-10-23 17:24:23
* @Description: 结算能力列表操作
*/
import React from 'react';
import ModalContainer from '../ModalContainer';
import { Modal, Space, Button } from 'antd';
import ConfirmAccount from '../../components/ConfirmAccount';
import Voucher from '../../components/Voucher';
import { StatusEnum, TO_BE_RECONCILED, TO_BE_PAY, TO_BE_COLLECTED, COMPLETED } from '../../components/StatusTag';
import styles from './index.less';
interface Iprops {
status: StatusEnum,
handleReconciledComfirm?: (params: any) => void // 对账确定回调
handleComfirmInCompletePayment?: (params: any) => void, // 确认未到款回调
handleComfirmCompletePayment?: (params:any) => void, //确认到款回调
}
// 显示确认对账
const ConfirmAccountComponent: React.FC<Iprops> = (props) => {
return (
<ModalContainer>
{
({visible, show, cancel}) => {
return (
<>
<Modal
width={400}
title="确认对账完成"
visible={visible}
onCancel={cancel}
onOk={() => props.handleReconciledComfirm({onCancel: cancel})}
>
<ConfirmAccount />
</Modal>
<div className={styles.modalBtn} onClick={show}>确认对账完成</div>
</>
)
}
}
</ModalContainer>
)
}
// 确认付款凭证
const ConfirmCollected = (props) => {
return (
<ModalContainer>
{
({visible, show, cancel}) => {
return (
<>
<Modal width={548} title="确认付款凭证" onCancel={cancel} visible={visible}
footer={(
<Space>
<Button onClick={cancel}>取消</Button>
<Button
danger
onClick={() => props.handleComfirmInCompletePayment({onCancel: cancel})}
>确认未到款</Button>
<Button
type={"primary"}
onClick={() => props.handleComfirmCompletePayment({onCancel: cancel})}
>确认到款</Button>
</Space>
)}
>
<Voucher />
</Modal>
<div className={styles.modalBtn} onClick={show}>确认付款凭证</div>
</>
)
}
}
</ModalContainer>
)
}
// 显示查看付款凭证
const ViewPaymentVoucher: React.FC = (props) => {
return (
<ModalContainer>
{
({visible, show, cancel}) => {
return (
<>
<Modal width={548} title="查看付款凭证" onCancel={cancel} visible={visible} footer={null}>
<Voucher />
</Modal>
<div className={styles.modalBtn} onClick={show}>查看付款凭证</div>
</>
)
}
}
</ModalContainer>
)
}
// 待对账时显示确认对账, 待付款 什么都不显示, 代收款显示确认付款凭证, 以完成显示 查看付款凭证
const ChildrenComponent = {
[TO_BE_RECONCILED]: ConfirmAccountComponent,
[TO_BE_PAY]: null,
[TO_BE_COLLECTED]: ConfirmCollected,
[COMPLETED]: ViewPaymentVoucher
}
const StatusActions: React.FC<Iprops> = (props: Iprops) => {
const { status } = props;
const Component = ChildrenComponent[status];
return (
<>
{Component && <Component {...props} />}
</>
)
}
export default StatusActions
\ No newline at end of file
import React from 'react';
import { Tag } from 'antd';
export const TO_BE_RECONCILED = 1; // 待对账
export const TO_BE_PAY = 2 // 待付款
export const TO_BE_COLLECTED = 3; // 待收款
export const COMPLETED = 4 // 以完成
export enum StatusEnum {
TO_BE_RECONCILED,
TO_BE_PAY,
TO_BE_COLLECTED,
COMPLETED
}
const COLOR = [
"purple", // 随意给一个
"gold", // 待对账
"red", // 待付款
"blue", // 代收款,
"green", // 以完成
]
const STATUS_TEXT = [
"无",
"待对账",
"待付款",
"待收款",
"已完成"
]
interface Iprops {
status: StatusEnum
}
const StatusTag: React.FC<Iprops> = (props: Iprops) => {
return (
<Tag color={COLOR[props.status]}>{STATUS_TEXT[props.status]}</Tag>
)
}
StatusTag.defaultProps = {
status: 1
}
export default StatusTag
\ No newline at end of file
......@@ -14,9 +14,8 @@ import { StandardTable } from 'god';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { schema } from './schema';
import ModalContainer from '../../components/ModalContainer';
import ConfirmAccount from '../../components/ConfirmAccount';
import Voucher from '../../components/Voucher';
import StatusTag from '../../components/StatusTag';
import StatusActions from '../../components/StatusActions';
const formActions = createFormActions();
......@@ -42,7 +41,7 @@ const AccountReceivable = () => {
title: '结算状态', dataIndex: 'status',
render: (text, record) => {
return (
<Tag>待对账</Tag>
<StatusTag status={record.status || 1} />
)
}
},
......@@ -50,58 +49,12 @@ const AccountReceivable = () => {
title: '操作',
render: (text, record) => {
return (
<>
<ModalContainer>
{
({visible, show, cancel}) => {
return (
<>
<Modal width={400} title="确认对账完成" visible={visible} onCancel={cancel} onOk={() => handleConfirm(cancel)}>
<ConfirmAccount />
</Modal>
<div onClick={show}>确认对账完成</div>
</>
)
}
}
</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>
</>
<StatusActions
status={record.status || 3}
handleReconciledComfirm={handleConfirm}
handleComfirmInCompletePayment={handleComfirmInCompletePayment}
handleComfirmCompletePayment={handleComfirmCompletePayment}
/>
)
}
}
......@@ -111,9 +64,18 @@ const AccountReceivable = () => {
* 确认对账
* @param cancel 关闭回调函数
*/
const handleConfirm = (cancel) => {
const handleConfirm = (params: any) => {
console.log(123)
cancel();
params.onCancel();
}
const handleComfirmInCompletePayment = (params: any) => {
console.log(params);
params.onCancel()
}
const handleComfirmCompletePayment = (params: any) => {
params.onCancel();
}
return (
......
......@@ -19,39 +19,17 @@ interface Config {
cacheValue: string,
changeEdit?: any,
pattern?: any,
message?: string
message?: string,
dataIndex: string,
}
const CONFIGS: Config[] = [
{
name: '账号名称',
image: company,
value: '',
cacheValue: '',
isEdit: false,
canEdit: false
},
{
name: '银行账号',
image: bank_account,
value: '',
cacheValue: '',
isEdit: false,
canEdit: true,
pattern: /^([1-9]{1})(\d{14}|\d{18})$/,
message: '请输入正确的银行账号'
},
{
name: '开户行',
image: bank,
value: '',
cacheValue: '',
isEdit: false,
canEdit: true,
pattern: /^[\u4e00-\u9fa5]{0,50}|[0-9a-zA-Z]{0,100}$/,
message: '最多50个汉字'
},
]
interface AccountDetal {
id: number,
name: string,
bankAccount: string,
bankDeposit: string,
memberId: number
}
const ItemRender: React.FC<Config> = (props) => {
const { isEdit, name, canEdit, value, image, changeEdit, pattern, message } = props;
......@@ -114,8 +92,9 @@ const ItemRender: React.FC<Config> = (props) => {
}
const CorporateAccount = () => {
const [configs, setConfigs] = useState<Config[]>(CONFIGS);
const [unsaved, setUnsaved] = useState<Boolean>(false)
const [configs, setConfigs] = useState<Config[]>([]);
const [unsaved, setUnsaved] = useState<boolean>(false)
const [datas, setDatas] = useState<AccountDetal>(null);
const changeEdit = (name: string, res: any, type: string) => {
let temp = [...configs];
const index = temp.findIndex((row) => row.name === name);
......@@ -126,6 +105,7 @@ const CorporateAccount = () => {
...target,
...res,
}
setConfigs(temp);
} else if(type == 'cancel') {
setUnsaved(false);
temp[index] = {
......@@ -133,24 +113,74 @@ const CorporateAccount = () => {
...res,
value: type == 'cancel' ? target.cacheValue : target.value,
}
setConfigs(temp);
} else if(type == 'confirm') {
setUnsaved(false);
temp[index] = {
...target,
...res,
cacheValue: type == 'confirm' ? target.value : target.cacheValue
const postData = {
...datas,
[target.dataIndex]: target.value
}
console.log(postData);
///settle/accounts/corporate/account/update
PublicApi.postSettleAccountsCorporateAccountUpdate(postData)
.then((data) => {
if(data.code == 1000) {
setUnsaved(false);
setDatas(postData);
temp[index] = {
...target,
...res,
cacheValue: type == 'confirm' ? target.value : target.cacheValue
}
setConfigs(temp);
}
})
}
setConfigs(temp);
}
useEffect(() => {
const { memberId } = getAuth() || {};
// 进行基础赋值, fetchData
///settle/accounts/corporate/account/getDetail
async function fetchData() {
const res = await PublicApi.getSettleAccountsCorporateAccountConfig({memberId: memberId});
console.log(res);
const { data } = await PublicApi.getSettleAccountsCorporateAccountGetDetail({memberId: memberId});
console.log(data);
setDatas(data);
setConfigs(
[
{
name: '账号名称',
dataIndex: 'name',
image: company,
value: data.name,
cacheValue: data.name,
isEdit: false,
canEdit: false
},
{
name: '银行账号',
dataIndex: 'bankAccount',
image: bank_account,
value: data.bankAccount,
cacheValue: data.bankAccount,
isEdit: false,
canEdit: true,
pattern: /^([1-9]{1})(\d{14}|\d{18})$/,
message: '请输入正确的银行账号'
},
{
name: '开户行',
dataIndex: 'bankDeposit',
image: bank,
value: data.bankDeposit,
cacheValue: data.bankDeposit,
isEdit: false,
canEdit: true,
pattern: /^[\u4e00-\u9fa5]{0,50}|[0-9a-zA-Z]{0,100}$/,
message: '最多50个汉字'
},
]
)
}
fetchData();
}, [])
......
......@@ -15,68 +15,31 @@ import StatusSwitch from '@/components/StatusSwitch';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import { PlusOutlined } from '@ant-design/icons';
import { ColumnsType } from 'antd/es/table';
import { history } from 'umi';
import { indexSchema } from './schema';
const formActions = createFormActions();
const schema = {
type: 'object',
properties: {
layout: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
grid: true,
columns: 6
},
properties: {
createBtn: {
type: 'object',
'x-component': 'Children',
'x-component-props': {
children: '{{createBtn}}'
},
"x-mega-props": {
"span": 4
},
},
name: {
type: 'string',
'x-component': 'Search',
"x-mega-props": {
"span": 2
},
'x-component-props': {
placeholder: '搜索',
advanced: false,
},
},
}
}
}
}
const MemberSettle: React.FC<{}> = () => {
const ref = useRef<any>({});
const fetchData = async (params: any) => {
console.log(params);
// let res = await PublicApi.getMemberAbilityInfoPage(params);
// return res.data;
return {}
const { current, pageSize, name } = params
const postData = {current, pageSize, name: name || ''}
const { data } = await PublicApi.getSettleAccountsPlatformConfigPageMemberSettlementStrategy(postData);
return data;
};
const handleModify = (record) => {
console.log(record);
const handleModify = async (record) => {
const { code } = await PublicApi.postSettleAccountsPlatformConfigSetMemberSettlementStrategyStatus({id: record.id, status: record.status ? 0 : 1})
if(code == 1000) {
formActions.submit();
}
}
const columns: ColumnsType<any> = [
{
title: 'ID',
dataIndex: 'id',
},
{title: 'ID',dataIndex: 'id',},
{
title: '策略名称',
dataIndex: 'name',
......@@ -84,7 +47,7 @@ const MemberSettle: React.FC<{}> = () => {
return (
<div>
<EyePreview
url={`/content/columnInfo?id=${record.id}&preview=1`}
url={`/memberCenter/balance/settleRules/memberSettleList/detail?id=${record.id}&preview=1`}
>
{text}
</EyePreview>
......@@ -92,14 +55,8 @@ const MemberSettle: React.FC<{}> = () => {
)
}
},
{
title: '结算方式',
dataIndex: 'methods'
},
{
title: '结算单据',
dataIndex: 'create-at',
},
{ title: '结算方式', dataIndex: 'settlementOrderTypeName'},
{ title: '结算单据',dataIndex: 'settlementWayName'},
{
title: '状态',
dataIndex: 'status',
......@@ -114,14 +71,18 @@ const MemberSettle: React.FC<{}> = () => {
}
},
]
const goToCreate = () => {
history.push('/memberCenter/balance/settleRules/memberSettleList/add');
}
return (
<PageHeaderWrapper
title={"生产通知单查询"}
title={"会员结算策略"}
>
<Card>
<StandardTable
tableProps={{
rowKey: 'memberId',
rowKey: 'id',
}}
columns={columns}
currentRef={ref}
......@@ -132,13 +93,13 @@ const MemberSettle: React.FC<{}> = () => {
expressionScope={{
createBtn: (
<div style={{width: '112px'}}>
<Button type="primary"><PlusOutlined /> 新建</Button>
<Button type="primary" onClick={goToCreate}><PlusOutlined /> 新建</Button>
</div>
)
}}
onSubmit={values => ref.current.reload(values)}
schema={schema}
schema={indexSchema}
/>
}
/>
......
......@@ -21,34 +21,38 @@ import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import SettleMethod from '../../components/SettleMethod';
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable';
import { PublicApi } from '@/services/api';
import { usePageStatus } from '@/hooks/usePageStatus';
import { history, Prompt } from 'umi'
import { getSettleAccountsPlatformConfigGetMemberSettlementStrategyDetail } from '@/services/SettleApi';
const formActions = createFormActions();
const common_columns: any = [
{ title: 'ID', dataIndex: 'id' },
{ title: '会员名称', dataIndex: 'name' },
{ title: '会员类型', dataIndex: 'type' },
{ title: '会员角色', dataIndex: 'role' },
{ title: '会员等级', dataIndex: 'level' },
]
const columns = common_columns.concat(
[
{
title: '操作',
render: (text, record) => {
return (
<div>删除</div>
)
}
{ title: 'ID', dataIndex: 'memberId' },
{ title: '会员名称', dataIndex: 'name',
render: (text, record) => {
return record.name || record.memberName
}
]
);
},
{ title: '会员类型', dataIndex: 'memberTypeName' },
{ title: '会员角色', dataIndex: 'roleName' },
{
title: '会员等级',
dataIndex: 'levelTag',
render: (text, record) => {
return record.levelTag || record.levelName
}
},
]
const MemberSettleAdd: React.FC = () => {
const [visible, setVisible] = useState(false)
const [memberRowSelection, memberRowCtl] = useRowSelectionTable({ customKey: 'id' });
const [memberRowSelection, memberRowCtl] = useRowSelectionTable({ customKey: 'memberId' });
const [initialValue, setInitialValue] = useState({});
const isEdit = false;
const { id, preview } = usePageStatus();
const [submitLoading, setSubmitLoading ] = useState(false);
const [unsaved, setUnsaved] = useState(true);
const isEdit = id && !preview;
const isAdd = !id && !preview;
const tableAddButton = () => {
return (
<div>
......@@ -64,25 +68,46 @@ const MemberSettleAdd: React.FC = () => {
</div>
)
}
useEffect(() => {
if(isEdit) {
setInitialValue({
name: 'test',
methods: {
active: 1,
otherValues: [25, 2]
}
})
}
}, [])
const columns = common_columns.concat(
[
{
title: '操作',
render: (text, record) => {
return (
<div onClick={() => handleRemove(record.memberId)}>删除</div>
)
}
}
]
);
const handleCancelAddMember = () => {
setVisible(false);
}
// 从PAAS平台--规则配置--平台规则配置取已勾选的结算方式决定是否显示结算方式
const fetchBalancedMethods = async () => {
const { data } = await PublicApi.getManageRuleConfigurationList({platformType: '5'});
const length = data.length
return {
days: length > 0 && data[0].check,
month: length > 1 && data[1].check
};
}
// 获取适用会员
const fetchMemberData = async (params: any) => {
const { data } = await PublicApi.getManageContentInformationPage(params);
//member/manage/lower/page/bynamerole
const { data } = await PublicApi.getMemberManageLowerPageBynamerole(params);
return data
}
// 获取适用会员下拉搜索框
const fetchMemberSearchFilter = async () => {
// /member/manage/role/sub/list
const { data } = await PublicApi.postMemberManageRoleSubList({}, {method: 'GET',ctlType: "none"});
// console.log(data);
return data
}
......@@ -92,17 +117,85 @@ const MemberSettleAdd: React.FC = () => {
setVisible(false);
}
// 提交
const handleSubmit = (value) => {
console.log(value);
const memberList = value.someLists.map((item) => ({ memberId: item.memberId, roleId: item.roleId }));
const tempData = {
name: value.name,
settlementOrderType: value.settlementOrderType,
memberList: memberList,
settlementWay: value.settlementWay.active,
settlementDays: value.settlementWay.otherValues[0],
settlementDate: value.settlementWay.otherValues[1],
}
console.log("tempData", tempData)
// /settle/accounts/platform/config/addMemberSettlementStrategy
const serviceActions = isAdd
? PublicApi.postSettleAccountsPlatformConfigAddMemberSettlementStrategy
: PublicApi.postSettleAccountsPlatformConfigUpdateMemberSettlementStrategy
const postData = {...tempData, id: id || 0 }
console.log("postData", postData)
setSubmitLoading(true);
setUnsaved(false);
serviceActions(postData).then((data) => {
setSubmitLoading(false);
if(data.code === 1000) {
history.push('/memberCenter/balance/settleRules/memberSettleList')
}
})
}
// 提交
const handleClick = () => {
formActions.submit()
}
//
const handleRemove = (id: number) => {
const string = 'Tabs.memberTab.someLists';
const chooseList = formActions.getFieldValue(string);
const res = chooseList.filter((item) => item.memberId !== id);
formActions.setFieldValue(string, res);
// 必须设置key
memberRowCtl.setSelectRow(res);
memberRowCtl.setSelectedRowKeys(res.map((item) => item.memberId))
}
// 从PAAS平台--规则配置--平台规则配置取已勾选的结算方式决定是否显示结算方式
useEffect(() => {
fetchBalancedMethods().then(data => {
formActions.setFieldState('Tabs.basicTab.layout.settlementWay', (state) => {
state.props['x-component-props']['options'] = data;
})
})
}, [])
useEffect(() => {
if(id) {
async function getInfo() {
const { data } = await getSettleAccountsPlatformConfigGetMemberSettlementStrategyDetail({id})
setInitialValue({
name: data.name,
settlementOrderType: data.settlementOrderType.toString(),
memberList: data.memberList,
settlementWay: {
active: data.settlementWay,
otherValues: [data.settlementDays, data.settlementDate],
}
})
formActions.setFieldValue('Tabs.memberTab.someLists', data.memberList);
// 必须设置key
memberRowCtl.setSelectRow(data.memberList);
memberRowCtl.setSelectedRowKeys(data.memberList.map((item) => item.memberId))
}
getInfo();
}
}, [id])
return (
<PageHeaderWrapper
// onBack={() => history.goBack()}
// backIcon={<ReutrnEle description="返回" />}
extra={[
<Button key="1" type="primary" onClick={handleClick} >
保存
......@@ -131,7 +224,7 @@ const MemberSettleAdd: React.FC = () => {
rowSelection={memberRowSelection}
fetchTableData={params => fetchMemberData(params)}
tableProps={{
rowKey: 'id',
rowKey: 'memberId',
}}
formilyProps={
......@@ -147,16 +240,18 @@ const MemberSettleAdd: React.FC = () => {
'name',
FORM_FILTER_PATH,
)
// useAsyncSelect(
// 'parentMemberId',
// fetchSelectOptions,
// )
useAsyncSelect(
'roleId',
fetchMemberSearchFilter,
['roleName', 'roleId']
)
}
}
}
}
/>
</Card>
<Prompt when={unsaved} message="内容还没保存,确定离开吗?"/>
</PageHeaderWrapper>
)
}
......
import { FORM_FILTER_PATH } from '@/formSchema/const';
/**
* index.tsx schem
* 列表页搜索schema
*/
export const indexSchema = {
type: 'object',
properties: {
layout: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
grid: true,
columns: 6
},
properties: {
createBtn: {
type: 'object',
'x-component': 'Children',
'x-component-props': {
children: '{{createBtn}}'
},
"x-mega-props": {
"span": 4
},
},
name: {
type: 'string',
'x-component': 'Search',
"x-mega-props": {
"span": 2
},
'x-component-props': {
placeholder: '搜索',
advanced: false,
},
},
}
}
}
}
/**
* 新增会员结算策略schema
*
*/
export const addSchema = {
type: 'object',
properties: {
......@@ -33,29 +80,34 @@ export const addSchema = {
{required: true, message: '请填写策略名称'},
]
},
methods: {
settlementWay: {
title: '结算方式',
'x-component': 'SettleMethod',
'x-rules': [
{
required: true,
message: '请填写消息'
message: '请选择结算方式并填写信息'
},
{
settleMethodRule: true
}
],
'x-component-props': {
// options: {
// days: true,
// month: false
// },
default: {
active: 1,
otherValues: [30, 1]
}
}
},
doc: {
settlementOrderType: {
type: 'string',
enum: [
{label: '1', value: '123'}
{label: '生产通知单', value: '1'},
{label: '物流通知单', value: '2'}
],
title: '结算单据',
'x-rules': [
......@@ -80,7 +132,7 @@ export const addSchema = {
},
'x-component': 'MultTable',
'x-component-props': {
rowKey: 'id',
rowKey: 'memberId',
prefix: "{{tableAddButton}}",
columns: "{{tableColumns}}"
// columns: "{{tableColumns}}",
......@@ -119,29 +171,15 @@ export const memberSchema = {
},
},
properties: {
memberType: {
type: 'string',
enum: [],
"x-component-props": {
placeholder: '选择会员类型',
// className: 'fixed-ant-selected-down',
// fetchSearch: PublicApi.getProductSelectGetSelectCategory,
}
},
memberRole: {
roleId: {
type: 'string',
enum: [],
"x-component-props": {
placeholder: '选择会员角色',
style: {width: '200px'}
}
},
memberlevel: {
type: 'string',
enum: [],
'x-component-props': {
placeholder: '选择会员等级',
},
},
submit: {
"x-component": 'Submit',
"x-mega-props": {
......
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