/**
* 我的会员列表页面
* @邠心vbe on 2023/07/14
*/
import React, { Component } from 'react';
import { View, Text, StyleSheet, Pressable, Image } from 'react-native';
import apiMember from '../../api/apiMember';
import { ElevationObject } from '../../components/Button';
import Dialog from '../../components/Dialog';
import TextView from '../../components/TextView';
import utils from '../../utils/utils';
import VbeSkeleton from '../../components/VbeSkeleton';
export default class MembersList extends Component {
constructor(props) {
super(props);
this.state = {
loading: true,
memberList: [],
loadingList: ["", "", "", ""]
};
}
componentDidMount() {
this.props.navigation.addListener('focus', () => {
if (!this.state.loading) {
this.getMyMemberList();
}
})
setTimeout(() => {
this.getMyMemberList();
}, 500);
}
getMyMemberList() {
apiMember.getMyMemberList().then(res => {
if (res.data) {
this.setState({
memberList: res.data
});
} else {
this.setState({
memberList: []
});
}
}).catch(err => {
this.setState({
memberList: []
});
toastShort(err)
}).finally(() => {
this.setState({
loading: false
});
});
}
getMembershipStatus(status) {
switch (status) {
case "Pending":
return $t("members.statusPending");
case "Approved":
return $t("members.statusApproved");
case "Pass":
return $t("members.statusApproved");
case "Rejected":
return $t("members.statusRejected");
default:
return $t("charging.statusUnavailable");
}
}
onDeleteMember(item) {
Dialog.showDialog({
title: $t("members.deleteMember"),
message: $t("members.confirmDelete"),
ok: $t("nav.yes"),
cancel: $t("nav.no"),
callback: btn => {
if (btn == Dialog.BUTTON_OK) {
this.deleteMembers(item.membershipId)
}
}
})
}
deleteMembers(id) {
//Dialog.showProgressDialog();
apiMember.delMembers(id).then(res => {
toastShort($t("common.deleteSuccess"))
this.getMyMemberList();
}).catch(err => {
toastShort(err)
})
}
render() {
if (this.state.loading) {
return (
{ this.state.loadingList.map((item, index) =>
)}
)
}
return (
{ this.state.memberList.length > 0
? this.state.memberList.map((item, index) => (
{
if (item.membershipStatus == "Rejected") {
this.onDeleteMember(item)
}
//startPage(PageList.editVehicle, {id: item.vehiclePk});
}}>
{ utils.isNotEmpty(item.groupLogo)
?
:
}
{ utils.isEmpty(item.groupType)
? {$t('members.membership')}:
: {item.groupType}
}
{item.membership}
{$t('members.membershipNo')}:
{item.membershipNo}
{$t('members.status')}:
{ item.membershipStatus == "Rejected"
? {this.getMembershipStatus(item.membershipStatus)}
: {this.getMembershipStatus(item.membershipStatus)}
}
))
: {$t('members.noData')}
}
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: pageBackground
},
loadingView: {
padding: 16,
borderRadius: 8,
borderColor: '#F0F0F0',
borderWidth: 1,
alignItems: 'flex-end',
backgroundColor: colorLight,
flexDirection: 'row',
...$margin(16, 16, 0)
},
memberView: {
borderRadius: 8,
overflow: 'hidden',
...ElevationObject(5),
...$margin(16, 16, 0),
...$padding(16),
backgroundColor: colorLight
},
memberItem: {
paddingTop: 1,
paddingBottom: 1,
alignItems: 'center',
flexDirection: 'row'
},
textLabel: {
color: textPrimary,
fontSize: 14,
paddingRight: 6,
fontWeight: 'bold'
},
textValue: {
flex: 1,
color: textPrimary,
fontSize: 14
},
textLabel2: {
color: textPrimary,
fontSize: 16,
paddingRight: 5,
marginBottom: 2,
fontWeight: 'bold'
},
textValue2: {
flex: 1,
color: textPrimary,
fontSize: 16,
fontWeight: 'bold',
marginBottom: 2
},
statusRed: {
color: "#FF2222"
},
textType: {
color: textLight,
fontSize: 10,
marginRight: 4,
borderRadius: 2,
...$padding(1, 4),
backgroundColor: colorAccent
},
itemBackground: {
right: 0,
bottom: 0,
position: 'absolute'
},
groupIcon: {
margin: 4,
opacity: 0.08
},
groupLogo: {
width: 48,
height: 48,
margin: 8,
opacity: .8,
borderRadius: 6
},
loadingIcon: {
width: 48,
height: 48,
marginLeft: 16
}
})