Commit 77c93b5c authored by XieZhiXiong's avatar XieZhiXiong

fibux、对接批量审核接口

parent 86121090
...@@ -33,15 +33,20 @@ const CustomAddArray = (props) => { ...@@ -33,15 +33,20 @@ const CustomAddArray = (props) => {
const onAdd = () => mutators.push(schema.items.getEmptyValue()) const onAdd = () => mutators.push(schema.items.getEmptyValue())
const onRemove = index => mutators.remove(index) const onRemove = index => mutators.remove(index)
return <div> return (
{ toArr(value).map((item, index, arr) => { <div>
return <RowStyleLayout {...componentProps} key={index}> {toArr(value).map((item, index, arr) => (
<RowStyleLayout {...componentProps} key={index}>
<SchemaField path={FormPath.parse(path).concat(index)} onlyRenderProperties/> <SchemaField path={FormPath.parse(path).concat(index)} onlyRenderProperties/>
<Button onClick={onAdd.bind(null, index)} type='primary'>+</Button> <Button onClick={onAdd.bind(null, index)} type='primary'>+</Button>
{ index !== 0 && <Button onClick={onRemove.bind(null, index)}>-</Button>} <Button onClick={onRemove.bind(null, index)}>-</Button>
</RowStyleLayout> </RowStyleLayout>
}) } ))}
{(!value || !value.length) && (
<Button onClick={onAdd} type='primary'>+</Button>
)}
</div> </div>
)
} }
CustomAddArray.isFieldComponent = true CustomAddArray.isFieldComponent = true
......
...@@ -191,4 +191,8 @@ ...@@ -191,4 +191,8 @@
} }
} }
.ant-badge-count {
z-index: 1;
}
} }
\ No newline at end of file
...@@ -24,20 +24,22 @@ const { ...@@ -24,20 +24,22 @@ const {
} = FormEffectHooks; } = FormEffectHooks;
const AddMember: React.FC<any> = props => { const AddMember: React.FC<any> = props => {
const areaRef = useRef<any[]>([])
const { id, validateId } = usePageStatus(); const { id, validateId } = usePageStatus();
const [memberItems, setMemberItems] = useState<any>({}); const [memberItems, setMemberItems] = useState<any>({});
const [memberInfo, setMemberInfo] = useState<GetMemberAbilitySubGetResponse>(null); const [memberInfo, setMemberInfo] = useState<GetMemberAbilitySubGetResponse>(null);
const [submitLoading, setSubmitLoading] = useState(false); const [submitLoading, setSubmitLoading] = useState(false);
const [infoLoading, setInfoLoading] = useState(false); const [infoLoading, setInfoLoading] = useState(false);
const getDetailedInfo = () => { const getDetailedInfo = async () => {
if (id && validateId) { if (id && validateId) {
setInfoLoading(true); setInfoLoading(true);
PublicApi.getMemberAbilitySubGet({ const infoRes = await PublicApi.getMemberAbilitySubGet({
memberId: id, memberId: id,
validateId, validateId,
}).then(res => { });
if (res.code !== 1000) {
if (infoRes.code !== 1000) {
return; return;
} }
const { const {
...@@ -60,10 +62,9 @@ const AddMember: React.FC<any> = props => { ...@@ -60,10 +62,9 @@ const AddMember: React.FC<any> = props => {
roleName, roleName,
verifySteps, verifySteps,
...rest ...rest
}: any = (res.data || {}); }: any = infoRes.data;
// 注册资料处理 // 注册资料处理
const detail = {}; const detail = {};
for (let i = 0; i < groups.length; i++) { for (let i = 0; i < groups.length; i++) {
const item = groups[i]; const item = groups[i];
if (item.elements) { if (item.elements) {
...@@ -74,15 +75,66 @@ const AddMember: React.FC<any> = props => { ...@@ -74,15 +75,66 @@ const AddMember: React.FC<any> = props => {
} }
} }
formActions.setFieldState('tabs', state => {
state.props['x-component-props'] =
state.props['x-component-props'] || {};
state.props['x-component-props'].hiddenKeys =
!channelLevelTag ? ['tab-2'] : [];
});
// 获取渠道信息
const channelRes = await PublicApi.getMemberAbilitySubPageitemsChannel({
memberTypeId: rest.memberTypeId,
});
if (channelRes.code !== 1000) {
return;
}
const {
areas = [],
channelTypes = [],
} = channelRes.data;
const areasOptions = areas.map(item => ({ label: item.name, value: item.code }));
const channelType = channelTypes.map(item => ({ label: item.channelTypeName, value: item.channelTypeId }));
if (areasOptions.length) {
formActions.setFieldState('areas.*.pcode', state => {
FormPath.setIn(state, 'props.enum', areasOptions);
});
areaCodes.forEach((area, index) => {
const { pcode, ccode } = area;
const province = areas.find(item => item.code === pcode);
if (province && province.children) {
const citys =
province.children.map((item: { code: string, name: string }) => ({ label: item.name, value: item.code }));
formActions.setFieldState(
`areas.${index}.ccode`,
state => {
FormPath.setIn(state, 'props.enum', citys);
}
);
}
});
}
formActions.setFieldState('channelTypeId', state => {
FormPath.setIn(state, 'props.enum', channelType);
});
areaRef.current = areas;
setMemberInfo({ setMemberInfo({
memberTypeId: memberTypeEnum, memberTypeId: memberTypeEnum,
...rest, ...rest,
areas: areaCodes, areas: areaCodes,
channelLevel: channelLevelTag,
...detail, ...detail,
}); });
}).finally(() => {
setInfoLoading(false); setInfoLoading(false);
});
} }
}; };
...@@ -102,11 +154,19 @@ const AddMember: React.FC<any> = props => { ...@@ -102,11 +154,19 @@ const AddMember: React.FC<any> = props => {
channelTypeId, channelTypeId,
areas, areas,
remark, remark,
outerStatus,
status,
statusName,
...rest ...rest
} = values; } = values;
if (!id) { if (!id) {
setSubmitLoading(true); setSubmitLoading(true);
const msg = message.loading({
content: '正在添加,请稍候...',
duration: 0,
});
PublicApi.postMemberAbilitySubAdd({ PublicApi.postMemberAbilitySubAdd({
memberTypeId, memberTypeId,
roleId, roleId,
...@@ -126,10 +186,15 @@ const AddMember: React.FC<any> = props => { ...@@ -126,10 +186,15 @@ const AddMember: React.FC<any> = props => {
history.replace('/memberCenter/memberAbility/manage/import'); history.replace('/memberCenter/memberAbility/manage/import');
}, 1000); }, 1000);
}).finally(() => { }).finally(() => {
msg();
setSubmitLoading(false); setSubmitLoading(false);
}); });
} else { } else {
setSubmitLoading(true); setSubmitLoading(true);
const msg = message.loading({
content: '正在保存,请稍候...',
duration: 0,
});
PublicApi.postMemberAbilitySubUpdate({ PublicApi.postMemberAbilitySubUpdate({
memberId: id, memberId: id,
validateId, validateId,
...@@ -151,6 +216,7 @@ const AddMember: React.FC<any> = props => { ...@@ -151,6 +216,7 @@ const AddMember: React.FC<any> = props => {
history.replace('/memberCenter/memberAbility/manage/import'); history.replace('/memberCenter/memberAbility/manage/import');
}, 1000); }, 1000);
}).finally(() => { }).finally(() => {
msg();
setSubmitLoading(false); setSubmitLoading(false);
}); });
} }
...@@ -177,21 +243,8 @@ const AddMember: React.FC<any> = props => { ...@@ -177,21 +243,8 @@ const AddMember: React.FC<any> = props => {
const useAsyncLinkageEffect = () => { const useAsyncLinkageEffect = () => {
const linkage = useLinkageUtils(); const linkage = useLinkageUtils();
let areasData = [];
onFormInitialValueChange$().subscribe(initialValues => {
console.log('1111', initialValues)
});
// 手动触发改变的话重置角色、等级下拉框 // 间接触发根据会员类型
onFieldInputChange$('memberTypeId').subscribe(() => {
linkage.value('roleId', undefined);
linkage.enum('roleId', []);
linkage.value('levelId', undefined);
linkage.enum('levelId', []);
});
// 根据会员类型
onFieldValueChange$('memberTypeId').subscribe(fieldState => { onFieldValueChange$('memberTypeId').subscribe(fieldState => {
if (!fieldState.value) { if (!fieldState.value) {
return; return;
...@@ -209,6 +262,23 @@ const AddMember: React.FC<any> = props => { ...@@ -209,6 +262,23 @@ const AddMember: React.FC<any> = props => {
}).finally(() => { }).finally(() => {
linkage.loaded('roleId'); linkage.loaded('roleId');
}); });
});
// 根据会员类型
onFieldInputChange$('memberTypeId').subscribe(fieldState => {
if (!fieldState.value) {
return;
}
linkage.value('roleId', undefined);
linkage.enum('roleId', []);
linkage.value('levelId', undefined);
linkage.enum('levelId', []);
// 清空渠道原来数据
linkage.value('channelTypeId', undefined);
linkage.value('areas', []);
linkage.value('remark', '');
// 获取渠道信息 // 获取渠道信息
PublicApi.getMemberAbilitySubPageitemsChannel({ PublicApi.getMemberAbilitySubPageitemsChannel({
...@@ -218,11 +288,10 @@ const AddMember: React.FC<any> = props => { ...@@ -218,11 +288,10 @@ const AddMember: React.FC<any> = props => {
return; return;
} }
const { const {
data: {
channelLevelTag = '', channelLevelTag = '',
areas = [], areas = [],
channelTypes = [], channelTypes = [],
} } = res; } = res.data;
formActions.setFieldState('tabs', state => { formActions.setFieldState('tabs', state => {
state.props['x-component-props'] = state.props['x-component-props'] =
state.props['x-component-props'] || {}; state.props['x-component-props'] || {};
...@@ -230,16 +299,16 @@ const AddMember: React.FC<any> = props => { ...@@ -230,16 +299,16 @@ const AddMember: React.FC<any> = props => {
state.props['x-component-props'].hiddenKeys = state.props['x-component-props'].hiddenKeys =
!channelLevelTag ? ['tab-2'] : []; !channelLevelTag ? ['tab-2'] : [];
}); });
areaRef.current = areas;
const areasOptions = areas.map(item => ({ label: item.name, value: item.code })); const areasOptions = areas.map(item => ({ label: item.name, value: item.code }));
const channelType = channelTypes.map(item => ({ label: item.channelTypeName, value: item.channelTypeId })) const channelType = channelTypes.map(item => ({ label: item.channelTypeName, value: item.channelTypeId }));
if (areasOptions.length) { if (areasOptions.length) {
formActions.setFieldState('areas.*.pcode', state => { formActions.setFieldState('areas.*.pcode', state => {
FormPath.setIn(state, 'props.enum', areasOptions); FormPath.setIn(state, 'props.enum', areasOptions);
}); });
} }
formActions.setFieldState('channelLevel', state => { formActions.setFieldState('channelLevel', state => {
FormPath.setIn(state, 'value', channelLevelTag); FormPath.setIn(state, 'value', channelLevelTag);
}); });
...@@ -247,28 +316,6 @@ const AddMember: React.FC<any> = props => { ...@@ -247,28 +316,6 @@ const AddMember: React.FC<any> = props => {
FormPath.setIn(state, 'props.enum', channelType); FormPath.setIn(state, 'props.enum', channelType);
}); });
// 如果会员信息存在渠道代理城市信息,设置一下每项的 市级数据
setTimeout(() => {
console.log('memberInfo1', memberInfo)
if (memberInfo && memberInfo.areas.length) {
memberInfo.areas.forEach((area, index) => {
const { pcode, ccode } = area;
const province = areas.find(item => item.code === pcode);
if (province && province.children) {
const city = province.children.find((item: any) => item.code === ccode);
formActions.setFieldState(
`areas.${index}.ccode`,
state => {
FormPath.setIn(state, 'props.enum', city);
}
);
}
});
}
}, 2000);
areasData = areas;
}); });
}); });
...@@ -306,6 +353,8 @@ const AddMember: React.FC<any> = props => { ...@@ -306,6 +353,8 @@ const AddMember: React.FC<any> = props => {
PublicApi.getMemberAbilitySubPageitemsLevel({ PublicApi.getMemberAbilitySubPageitemsLevel({
memberTypeId: selfName == 'memberTypeId' ? selfValue : otherValue, memberTypeId: selfName == 'memberTypeId' ? selfValue : otherValue,
roleId: selfName == 'memberTypeId' ? otherValue : selfValue, roleId: selfName == 'memberTypeId' ? otherValue : selfValue,
}, {
useCache: true,
}).then(res => { }).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
const { data = [] } = res; const { data = [] } = res;
...@@ -318,19 +367,9 @@ const AddMember: React.FC<any> = props => { ...@@ -318,19 +367,9 @@ const AddMember: React.FC<any> = props => {
} }
}); });
// 主动的渠道信息省级变化,重置市级 value
onFieldInputChange$('areas.*.pcode').subscribe(fieldState => {
formActions.setFieldState(
FormPath.transform(fieldState.name, /\d/, $1 => `areas.${$1}.ccode`),
state => {
FormPath.setIn(state, 'value', undefined);
}
);
});
// 渠道信息省级变化,筛选出对应的市级数据 // 渠道信息省级变化,筛选出对应的市级数据
onFieldValueChange$('areas.*.pcode').subscribe(fieldState => { onFieldInputChange$('areas.*.pcode').subscribe(fieldState => {
const province = areasData.find(item => item.code === fieldState.value); const province = areaRef.current.find(item => item.code === fieldState.value);
if (!province) { if (!province) {
return; return;
} }
...@@ -338,14 +377,13 @@ const AddMember: React.FC<any> = props => { ...@@ -338,14 +377,13 @@ const AddMember: React.FC<any> = props => {
formActions.setFieldState( formActions.setFieldState(
FormPath.transform(fieldState.name, /\d/, $1 => `areas.${$1}.ccode`), FormPath.transform(fieldState.name, /\d/, $1 => `areas.${$1}.ccode`),
state => { state => {
FormPath.setIn(state, 'value', undefined);
FormPath.setIn(state, 'props.enum', city); FormPath.setIn(state, 'props.enum', city);
} }
); );
}); });
} }
console.log('memberInfo2', memberInfo)
return ( return (
<Spin spinning={infoLoading}> <Spin spinning={infoLoading}>
<PageHeaderWrapper <PageHeaderWrapper
......
...@@ -322,11 +322,8 @@ export const initDetailSchema = (props: any) => { ...@@ -322,11 +322,8 @@ export const initDetailSchema = (props: any) => {
areas: { areas: {
type: 'array', type: 'array',
title: '代理城市', title: '代理城市',
required: true,
'x-component': 'CustomAddArray', 'x-component': 'CustomAddArray',
default: [ default: [],
{ pcode: undefined, ccode: undefined },
],
items: { items: {
type: 'object', type: 'object',
properties: { properties: {
......
...@@ -35,7 +35,7 @@ interface QueryProps { ...@@ -35,7 +35,7 @@ interface QueryProps {
} }
const MemberQueryDetailed: React.FC<QueryProps> = props => { const MemberQueryDetailed: React.FC<QueryProps> = props => {
const { MemberStore, children } = props; const { MemberStore, location, children } = props;
const { id, validateId } = usePageStatus(); const { id, validateId } = usePageStatus();
const [basicInfo, setBasicInfo] = useState<GetMemberAbilityMaintenanceDetailBasicResponse>(null); const [basicInfo, setBasicInfo] = useState<GetMemberAbilityMaintenanceDetailBasicResponse>(null);
const [infoLoading, setInfoLoading] = useState(false); const [infoLoading, setInfoLoading] = useState(false);
......
import React, { useState, useEffect, useRef } from 'react'; import React, { useState, useEffect, useRef } from 'react';
import { history } from 'umi'; import { history } from 'umi';
import { Card, Space, Button, Badge, Popconfirm } from 'antd'; import { Card, Space, Button, Badge, Modal, message } from 'antd';
import { ClockCircleOutlined } from '@ant-design/icons'; import { ClockCircleOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { createFormActions } from '@formily/antd'; import { createFormActions } from '@formily/antd';
...@@ -20,12 +20,12 @@ import { ...@@ -20,12 +20,12 @@ import {
import { coverColFiltersItem } from '../utils'; import { coverColFiltersItem } from '../utils';
import StatusTag from '../components/StatusTag'; import StatusTag from '../components/StatusTag';
const { confirm } = Modal;
const formActions = createFormActions(); const formActions = createFormActions();
const MemberPr1: React.FC<{}> = props => { const MemberPr1: React.FC<{}> = props => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [searchItems, setSearchItems] = useState<any>({});
const [filteredInfo, setFilteredInfo] = useState<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]); const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]);
const [selectedList, setSelectList] = useState<any>([]); const [selectedList, setSelectList] = useState<any>([]);
...@@ -122,13 +122,9 @@ const MemberPr1: React.FC<{}> = props => { ...@@ -122,13 +122,9 @@ const MemberPr1: React.FC<{}> = props => {
const [columns, setColumns] = useState<any[]>(defaultColumns); const [columns, setColumns] = useState<any[]>(defaultColumns);
const rowSelection = { const rowSelection = {
onChange: (selectedRowKeys: any, selectedRows: any) => { onChange: (keys: any, rows: {}[]) => {
let result = selectedRows.map(v => ({ setSelectedRowKeys(keys);
memberId: v.memberId, setSelectList(rows);
validateId: v.validateId,
}));
setSelectedRowKeys(selectedRowKeys);
setSelectList(result);
}, },
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
}; };
...@@ -139,7 +135,32 @@ const MemberPr1: React.FC<{}> = props => { ...@@ -139,7 +135,32 @@ const MemberPr1: React.FC<{}> = props => {
}; };
const handleBatch = () => { const handleBatch = () => {
console.log('批量') if (!selectedList.length) {
message.warning('未选择任何会员');
return;
}
confirm({
title: '提示',
icon: <QuestionCircleOutlined />,
content: '确定要审核通过选中的会员吗?',
onOk() {
const members = selectedList.map(item => ({ memberId: item.memberId, validateId: item.validateId }));
return new Promise((resolve, reject) => {
PublicApi.postMemberAbilityValidateStep1Batch(members)
.then(res => {
if (res.code === 1000) {
ref.current.reload();
setSelectedRowKeys([]);
resolve();
}
reject();
})
.catch(() => {
reject();
});
});
},
});
}; };
// 初始化高级筛选选项 // 初始化高级筛选选项
...@@ -192,17 +213,9 @@ const MemberPr1: React.FC<{}> = props => { ...@@ -192,17 +213,9 @@ const MemberPr1: React.FC<{}> = props => {
const controllerBtns = ( const controllerBtns = (
<Space> <Space>
<Popconfirm <Button onClick={handleBatch}>
title="是否继续操作 ?" 批量审核通过
placement="bottom"
onConfirm={handleBatch}
okText="是"
cancelText="否"
>
<Button>
批量提交审核
</Button> </Button>
</Popconfirm>
</Space> </Space>
); );
......
import React, { useState, useEffect, useRef } from 'react'; import React, { useState, useEffect, useRef } from 'react';
import { history } from 'umi'; import { history } from 'umi';
import { Card, Space, Button, Badge, Popconfirm } from 'antd'; import { Card, Space, Button, Badge, Modal, message } from 'antd';
import { ClockCircleOutlined } from '@ant-design/icons'; import { ClockCircleOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { createFormActions } from '@formily/antd'; import { createFormActions } from '@formily/antd';
...@@ -20,12 +20,12 @@ import { ...@@ -20,12 +20,12 @@ import {
import { coverColFiltersItem } from '../utils'; import { coverColFiltersItem } from '../utils';
import StatusTag from '../components/StatusTag'; import StatusTag from '../components/StatusTag';
const { confirm } = Modal;
const formActions = createFormActions(); const formActions = createFormActions();
const MemberPr2: React.FC<{}> = props => { const MemberPr2: React.FC<{}> = props => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [searchItems, setSearchItems] = useState<any>({});
const [filteredInfo, setFilteredInfo] = useState<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]); const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]);
const [selectedList, setSelectList] = useState<any>([]); const [selectedList, setSelectList] = useState<any>([]);
...@@ -122,13 +122,9 @@ const MemberPr2: React.FC<{}> = props => { ...@@ -122,13 +122,9 @@ const MemberPr2: React.FC<{}> = props => {
const [columns, setColumns] = useState<any[]>(defaultColumns); const [columns, setColumns] = useState<any[]>(defaultColumns);
const rowSelection = { const rowSelection = {
onChange: (selectedRowKeys: any, selectedRows: any) => { onChange: (keys: any, rows: {}[]) => {
let result = selectedRows.map(v => ({ setSelectedRowKeys(keys);
memberId: v.memberId, setSelectList(rows);
validateId: v.validateId,
}));
setSelectedRowKeys(selectedRowKeys);
setSelectList(result);
}, },
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
}; };
...@@ -139,7 +135,32 @@ const MemberPr2: React.FC<{}> = props => { ...@@ -139,7 +135,32 @@ const MemberPr2: React.FC<{}> = props => {
}; };
const handleBatch = () => { const handleBatch = () => {
console.log('批量') if (!selectedList.length) {
message.warning('未选择任何会员');
return;
}
confirm({
title: '提示',
icon: <QuestionCircleOutlined />,
content: '确定要审核通过选中的会员吗?',
onOk() {
const members = selectedList.map(item => ({ memberId: item.memberId, validateId: item.validateId }));
return new Promise((resolve, reject) => {
PublicApi.postMemberAbilityValidateStep2Batch(members)
.then(res => {
if (res.code === 1000) {
ref.current.reload();
setSelectedRowKeys([]);
resolve();
}
reject();
})
.catch(() => {
reject();
});
});
},
});
}; };
// 初始化高级筛选选项 // 初始化高级筛选选项
...@@ -192,17 +213,9 @@ const MemberPr2: React.FC<{}> = props => { ...@@ -192,17 +213,9 @@ const MemberPr2: React.FC<{}> = props => {
const controllerBtns = ( const controllerBtns = (
<Space> <Space>
<Popconfirm <Button onClick={handleBatch}>
title="是否继续操作 ?" 批量审核通过
placement="bottom"
onConfirm={handleBatch}
okText="是"
cancelText="否"
>
<Button>
批量提交审核
</Button> </Button>
</Popconfirm>
</Space> </Space>
); );
......
import React, { useState, useEffect, useRef } from 'react'; import React, { useState, useEffect, useRef } from 'react';
import { history } from 'umi'; import { history } from 'umi';
import { Card, Space, Button, Badge, Popconfirm } from 'antd'; import { Card, Space, Button, Badge, Modal, message } from 'antd';
import { ClockCircleOutlined } from '@ant-design/icons'; import { ClockCircleOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { createFormActions } from '@formily/antd'; import { createFormActions } from '@formily/antd';
...@@ -20,12 +20,12 @@ import { ...@@ -20,12 +20,12 @@ import {
import { coverColFiltersItem } from '../utils'; import { coverColFiltersItem } from '../utils';
import StatusTag from '../components/StatusTag'; import StatusTag from '../components/StatusTag';
const { confirm } = Modal;
const formActions = createFormActions(); const formActions = createFormActions();
const MemberPrConfirm: React.FC<{}> = props => { const MemberPrConfirm: React.FC<{}> = props => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [searchItems, setSearchItems] = useState<any>({});
const [filteredInfo, setFilteredInfo] = useState<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]); const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]);
const [selectedList, setSelectList] = useState<any>([]); const [selectedList, setSelectList] = useState<any>([]);
...@@ -122,13 +122,9 @@ const MemberPrConfirm: React.FC<{}> = props => { ...@@ -122,13 +122,9 @@ const MemberPrConfirm: React.FC<{}> = props => {
const [columns, setColumns] = useState<any[]>(defaultColumns); const [columns, setColumns] = useState<any[]>(defaultColumns);
const rowSelection = { const rowSelection = {
onChange: (selectedRowKeys: any, selectedRows: any) => { onChange: (keys: any, rows: {}[]) => {
let result = selectedRows.map(v => ({ setSelectedRowKeys(keys);
memberId: v.memberId, setSelectList(rows);
validateId: v.validateId,
}));
setSelectedRowKeys(selectedRowKeys);
setSelectList(result);
}, },
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
}; };
...@@ -139,7 +135,32 @@ const MemberPrConfirm: React.FC<{}> = props => { ...@@ -139,7 +135,32 @@ const MemberPrConfirm: React.FC<{}> = props => {
}; };
const handleBatch = () => { const handleBatch = () => {
console.log('批量') if (!selectedList.length) {
message.warning('未选择任何会员');
return;
}
confirm({
title: '提示',
icon: <QuestionCircleOutlined />,
content: '确定要审核通过选中的会员吗?',
onOk() {
const members = selectedList.map(item => ({ memberId: item.memberId, validateId: item.validateId }));
return new Promise((resolve, reject) => {
PublicApi.postMemberAbilityValidateConfirmBatch(members)
.then(res => {
if (res.code === 1000) {
ref.current.reload();
setSelectedRowKeys([]);
resolve();
}
reject();
})
.catch(() => {
reject();
});
});
},
});
}; };
// 初始化高级筛选选项 // 初始化高级筛选选项
...@@ -192,17 +213,9 @@ const MemberPrConfirm: React.FC<{}> = props => { ...@@ -192,17 +213,9 @@ const MemberPrConfirm: React.FC<{}> = props => {
const controllerBtns = ( const controllerBtns = (
<Space> <Space>
<Popconfirm <Button onClick={handleBatch}>
title="是否继续操作 ?" 批量确认审核通过
placement="bottom"
onConfirm={handleBatch}
okText="是"
cancelText="否"
>
<Button>
批量提交审核
</Button> </Button>
</Popconfirm>
</Space> </Space>
); );
......
import React, { useState, useEffect, useRef } from 'react'; import React, { useState, useEffect, useRef } from 'react';
import { history } from 'umi'; import { history } from 'umi';
import { Card, Space, Button, Badge, Popconfirm } from 'antd'; import { Card, Space, Button, Badge, Modal, message } from 'antd';
import { ClockCircleOutlined } from '@ant-design/icons'; import { ClockCircleOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { createFormActions } from '@formily/antd'; import { createFormActions } from '@formily/antd';
...@@ -20,12 +20,12 @@ import { ...@@ -20,12 +20,12 @@ import {
import { coverColFiltersItem } from '../utils'; import { coverColFiltersItem } from '../utils';
import StatusTag from '../components/StatusTag'; import StatusTag from '../components/StatusTag';
const { confirm } = Modal;
const formActions = createFormActions(); const formActions = createFormActions();
const MemberPrSubmit: React.FC<{}> = props => { const MemberPrSubmit: React.FC<{}> = props => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [searchItems, setSearchItems] = useState<any>({});
const [filteredInfo, setFilteredInfo] = useState<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]); const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]);
const [selectedList, setSelectList] = useState<any>([]); const [selectedList, setSelectList] = useState<any>([]);
...@@ -122,13 +122,9 @@ const MemberPrSubmit: React.FC<{}> = props => { ...@@ -122,13 +122,9 @@ const MemberPrSubmit: React.FC<{}> = props => {
const [columns, setColumns] = useState<any[]>(defaultColumns); const [columns, setColumns] = useState<any[]>(defaultColumns);
const rowSelection = { const rowSelection = {
onChange: (selectedRowKeys: any, selectedRows: any) => { onChange: (keys: any, rows: {}[]) => {
let result = selectedRows.map(v => ({ setSelectedRowKeys(keys);
memberId: v.memberId, setSelectList(rows);
validateId: v.validateId,
}));
setSelectedRowKeys(selectedRowKeys);
setSelectList(result);
}, },
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
}; };
...@@ -139,7 +135,32 @@ const MemberPrSubmit: React.FC<{}> = props => { ...@@ -139,7 +135,32 @@ const MemberPrSubmit: React.FC<{}> = props => {
}; };
const handleBatch = () => { const handleBatch = () => {
console.log('批量') if (!selectedList.length) {
message.warning('未选择任何会员');
return;
}
confirm({
title: '提示',
icon: <QuestionCircleOutlined />,
content: '确定要审核通过选中的会员吗?',
onOk() {
const members = selectedList.map(item => ({ memberId: item.memberId, validateId: item.validateId }));
return new Promise((resolve, reject) => {
PublicApi.postMemberAbilityValidateCommitBatch(members)
.then(res => {
if (res.code === 1000) {
ref.current.reload();
setSelectedRowKeys([]);
resolve();
}
reject();
})
.catch(() => {
reject();
});
});
},
});
}; };
// 初始化高级筛选选项 // 初始化高级筛选选项
...@@ -192,17 +213,9 @@ const MemberPrSubmit: React.FC<{}> = props => { ...@@ -192,17 +213,9 @@ const MemberPrSubmit: React.FC<{}> = props => {
const controllerBtns = ( const controllerBtns = (
<Space> <Space>
<Popconfirm <Button onClick={handleBatch}>
title="是否继续操作 ?" 批量审核通过
placement="bottom"
onConfirm={handleBatch}
okText="是"
cancelText="否"
>
<Button>
批量提交审核
</Button> </Button>
</Popconfirm>
</Space> </Space>
); );
......
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