Alex Cheung 1 year ago
parent
commit
3269acc87a
15 changed files with 80 additions and 51 deletions
  1. +2
    -1
      src/pages/Announcement/Search/SearchForm.js
  2. +2
    -1
      src/pages/AuditLog/AuditLogSearchForm.js
  3. +10
    -24
      src/pages/DemandNote/Search/SearchForm.js
  4. +10
    -3
      src/pages/Organization/SearchPage/OrganizationSearchForm.js
  5. +4
    -1
      src/pages/Payment/Search_GLD/SearchForm.js
  6. +2
    -0
      src/pages/Payment/Search_Public/SearchForm.js
  7. +2
    -1
      src/pages/Proof/Search_GLD/SearchForm.js
  8. +2
    -0
      src/pages/Proof/Search_Public/SearchForm.js
  9. +6
    -2
      src/pages/PublicNotice/ListPanel/SearchPublicNoticeForm.js
  10. +9
    -9
      src/pages/PublicNotice/Search_GLD/SearchForm.js
  11. +2
    -1
      src/pages/User/SearchPage/UserSearchForm.js
  12. +6
    -2
      src/pages/User/SearchPage_Individual/UserSearchForm_Individual.js
  13. +4
    -1
      src/pages/User/SearchPage_Organization/UserSearchForm_Organization.js
  14. +2
    -1
      src/pages/pnspsUserGroupSearchPage/UserGroupSearchForm.js
  15. +17
    -4
      src/utils/ComboData.js

+ 2
- 1
src/pages/Announcement/Search/SearchForm.js View File

@@ -126,9 +126,10 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria}) => {
<Grid item sx={{ ml: 3 }}> <Grid item sx={{ ml: 3 }}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 2
- 1
src/pages/AuditLog/AuditLogSearchForm.js View File

@@ -163,9 +163,10 @@ const AuditLogSearchForm = ({ applySearch, searchCriteria}) => {
<Grid item sx={{ ml: 3, mr: 3, mb: 3,}}> <Grid item sx={{ ml: 3, mr: 3, mb: 3,}}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>
<Grid item sx={{ ml: 3, mb: 3 }}> <Grid item sx={{ ml: 3, mb: 3 }}>


+ 10
- 24
src/pages/DemandNote/Search/SearchForm.js View File

@@ -21,13 +21,11 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue
}) => { }) => {


const [type, setType] = React.useState([]); const [type, setType] = React.useState([]);
// const [status, setStatus] = React.useState({ key: 0, label: 'All', type: 'all' });
const [orgSelected, setOrgSelected] = React.useState({}); const [orgSelected, setOrgSelected] = React.useState({});
const [orgCombo, setOrgCombo] = React.useState(); const [orgCombo, setOrgCombo] = React.useState();
const [issueSelected, setIssueSelected] = React.useState({}); const [issueSelected, setIssueSelected] = React.useState({});
const [issueCombo, setIssueCombo] = React.useState([]); const [issueCombo, setIssueCombo] = React.useState([]);
const [selectedStatus, setSelectedStatus] = React.useState([]);
const [selectedLabelsString, setSelectedLabelsString] = React.useState('');
const [selectedStatus, setSelectedStatus] = React.useState(ComboData.denmandNoteStatus[0]);


const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom);
const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo);
@@ -41,7 +39,7 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue


const { reset, register, handleSubmit } = useForm() const { reset, register, handleSubmit } = useForm()
const onSubmit = (data) => { const onSubmit = (data) => {
data.status = selectedLabelsString
data.status = selectedStatus?.type;
let typeArray = []; let typeArray = [];


for (let i = 0; i < type.length; i++) { for (let i = 0; i < type.length; i++) {
@@ -57,7 +55,7 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue
dateTo: data.dateTo, dateTo: data.dateTo,
dueDateFrom: data.dueDateFrom, dueDateFrom: data.dueDateFrom,
dueDateTo: data.dueDateTo, dueDateTo: data.dueDateTo,
status: (data.status === '' || data.status.includes("all")) ? "" : data.status,
status: (data?.status === '' || data?.status?.includes("all")) ? "" : data.status,
}; };
applySearch(temp); applySearch(temp);
}; };
@@ -77,9 +75,9 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue


function resetForm() { function resetForm() {
setType([]); setType([]);
// setStatus({ key: 0, label: 'All', type: 'all' });
setOrgSelected({}); setOrgSelected({});
setIssueSelected({}); setIssueSelected({});
setSelectedStatus(ComboData.denmandNoteStatus[0]);
reset(); reset();
} }


@@ -136,9 +134,7 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue
inputValue={(issueSelected?.id) ? getIssueLabel(issueSelected) : ""} inputValue={(issueSelected?.id) ? getIssueLabel(issueSelected) : ""}
getOptionLabel={(option) => getIssueLabel(option)} getOptionLabel={(option) => getIssueLabel(option)}
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null) {
setIssueSelected(newValue);
}
setIssueSelected(newValue);
}} }}
renderInput={(params) => ( renderInput={(params) => (
<TextField {...params} <TextField {...params}
@@ -176,9 +172,7 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue
value={orgSelected} value={orgSelected}
inputValue={(orgSelected?.label) ? orgSelected?.label : ""} inputValue={(orgSelected?.label) ? orgSelected?.label : ""}
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null) {
setOrgSelected(newValue); setOrgSelected(newValue);
}
}} }}
renderInput={(params) => ( renderInput={(params) => (
<TextField {...params} <TextField {...params}
@@ -291,25 +285,16 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue


<Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}>
<Autocomplete <Autocomplete
multiple
size="small" size="small"
{...register("status")} {...register("status")}
id="status" id="status"
options={ComboData.denmandNoteStatus} options={ComboData.denmandNoteStatus}
value={selectedStatus} value={selectedStatus}
onChange={(event, newValue) => { onChange={(event, newValue) => {
const findAllIndex = newValue.findIndex((ele) => {
return ele.type === "all"
})

if (findAllIndex > -1) {
setSelectedStatus([newValue[findAllIndex]]);
setSelectedLabelsString('all')
} else {
const selectedLabels = newValue.map(option => option.type);
const selectedLabelsString = `${selectedLabels.join(',')}`;
if(newValue==null){
setSelectedStatus(ComboData.denmandNoteStatus[0]);
}else{
setSelectedStatus(newValue); setSelectedStatus(newValue);
setSelectedLabelsString(selectedLabelsString);
} }
}} }}
getOptionLabel={(option) => option.label} getOptionLabel={(option) => option.label}
@@ -335,9 +320,10 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue
<Grid item sx={{ ml: 3, mb:3 }}> <Grid item sx={{ ml: 3, mb:3 }}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 10
- 3
src/pages/Organization/SearchPage/OrganizationSearchForm.js View File

@@ -22,7 +22,7 @@ import {ThemeProvider} from "@emotion/react";
const OrganizationSearchForm = ({ applySearch }) => { const OrganizationSearchForm = ({ applySearch }) => {


const [type, setType] = useState([]); const [type, setType] = useState([]);
const [creditorSelected, setCreditorSelected] = React.useState({ key: 0, labelCht: '全部', label: 'All', type: 'all' });
const [creditorSelected, setCreditorSelected] = React.useState(ComboData.CreditorStatus[0]);
const { reset, register, handleSubmit } = useForm() const { reset, register, handleSubmit } = useForm()
const onSubmit = (data) => { const onSubmit = (data) => {


@@ -47,6 +47,7 @@ const OrganizationSearchForm = ({ applySearch }) => {


function resetForm() { function resetForm() {
setType([]); setType([]);
setCreditorSelected(ComboData.CreditorStatus[0]);
reset(); reset();
} }


@@ -117,7 +118,12 @@ const OrganizationSearchForm = ({ applySearch }) => {
options={ComboData.CreditorStatus} options={ComboData.CreditorStatus}
value={creditorSelected} value={creditorSelected}
onChange={(event, newValue) => { onChange={(event, newValue) => {
setCreditorSelected(newValue);
if(newValue == null){
setCreditorSelected(ComboData.CreditorStatus[0]);
}else{
setCreditorSelected(newValue);
}
}} }}
getOptionLabel={(option) => option.label} getOptionLabel={(option) => option.label}
renderInput={(params) => ( renderInput={(params) => (
@@ -150,9 +156,10 @@ const OrganizationSearchForm = ({ applySearch }) => {
<Grid item sx={{ mr: 3, mb: 3}}> <Grid item sx={{ mr: 3, mb: 3}}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 4
- 1
src/pages/Payment/Search_GLD/SearchForm.js View File

@@ -36,6 +36,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => {
}; };


function resetForm() { function resetForm() {
setStatus(ComboData.paymentStatus[0]);
reset(); reset();
} }


@@ -134,7 +135,9 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => {
getOptionLabel={(option) => option.label} getOptionLabel={(option) => option.label}
inputValue={status?.label ? status?.label : ""} inputValue={status?.label ? status?.label : ""}
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null) {
if(newValue==null){
setStatus(ComboData.paymentStatus[0]);
}else{
setStatus(newValue); setStatus(newValue);
} }
}} }}


+ 2
- 0
src/pages/Payment/Search_Public/SearchForm.js View File

@@ -144,6 +144,8 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => {
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null) { if (newValue !== null) {
setStatus(newValue); setStatus(newValue);
}else{
setStatus(ComboData.paymentStatus[0]);
} }
}} }}
renderInput={(params) => ( renderInput={(params) => (


+ 2
- 1
src/pages/Proof/Search_GLD/SearchForm.js View File

@@ -315,9 +315,10 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss
<Grid item sx={{ ml: 3, mb: 3 }}> <Grid item sx={{ ml: 3, mb: 3 }}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 2
- 0
src/pages/Proof/Search_Public/SearchForm.js View File

@@ -268,6 +268,8 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, issueComboData
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null) { if (newValue !== null) {
setStatus(newValue); setStatus(newValue);
}else{
setStatus(ComboData.proofStatus[0]);
} }
}} }}
renderInput={(params) => ( renderInput={(params) => (


+ 6
- 2
src/pages/PublicNotice/ListPanel/SearchPublicNoticeForm.js View File

@@ -22,7 +22,7 @@ import {FormattedMessage, useIntl} from "react-intl";
const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => {
const intl = useIntl(); const intl = useIntl();
const [type, setType] = React.useState([]); const [type, setType] = React.useState([]);
const [status, setStatus] = React.useState({ key: 0, label: 'all', type: 'all' });
const [status, setStatus] = React.useState(localStorage.getItem('userData').creditor?ComboData.publicNoticeStatic_Creditor[0]:ComboData.publicNoticeStatic[0]);


const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom);
const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo);
@@ -52,7 +52,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => {


function resetForm() { function resetForm() {
setType([]); setType([]);
setStatus({ key: 0, label: 'All', labelCht: "全部", type: 'all' });
setStatus(localStorage.getItem('userData').creditor?ComboData.publicNoticeStatic_Creditor[0]:ComboData.publicNoticeStatic[0]);
reset(); reset();
} }


@@ -167,7 +167,11 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => {
// inputValue={status?.labelCht} // inputValue={status?.labelCht}
getOptionLabel={(option) => intl.formatMessage({id: option.label})} getOptionLabel={(option) => intl.formatMessage({id: option.label})}
onChange={(event, newValue) => { onChange={(event, newValue) => {
if(newValue ==null){
setStatus(localStorage.getItem('userData').creditor?ComboData.publicNoticeStatic_Creditor[0]:ComboData.publicNoticeStatic[0]);
}else{
setStatus(newValue); setStatus(newValue);
}
}} }}
renderInput={(params) => ( renderInput={(params) => (
<TextField {...params} <TextField {...params}


+ 9
- 9
src/pages/PublicNotice/Search_GLD/SearchForm.js View File

@@ -37,7 +37,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss
const marginBottom = 2.5; const marginBottom = 2.5;
const { reset, register, handleSubmit } = useForm() const { reset, register, handleSubmit } = useForm()
const onSubmit = (data) => { const onSubmit = (data) => {
data.status = selectedStatus.type
data.status = selectedStatus?.type
let typeArray = []; let typeArray = [];


for (let i = 0; i < type.length; i++) { for (let i = 0; i < type.length; i++) {
@@ -49,7 +49,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss
dateFrom: data.dateFrom, dateFrom: data.dateFrom,
dateTo: data.dateTo, dateTo: data.dateTo,
contact: data.contact, contact: data.contact,
status: (data.status === '' || data.status.includes("all")) ? "" : data.status,
status: (data.status === '' || data.status?.includes("all")) ? "" : data.status,
orgId: (orgSelected?.key && orgSelected?.key > 0) ? orgSelected?.key : "", orgId: (orgSelected?.key && orgSelected?.key > 0) ? orgSelected?.key : "",
issueId: issueSelected?.id, issueId: issueSelected?.id,
groupNo: data.groupNo, groupNo: data.groupNo,
@@ -194,8 +194,11 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss
options={ComboData.publicNoticeStatic_GLD} options={ComboData.publicNoticeStatic_GLD}
value={selectedStatus} value={selectedStatus}
onChange={(event, newValue) => { onChange={(event, newValue) => {
setSelectedStatus(newValue);

if(newValue==null){
setSelectedStatus(ComboData.publicNoticeStatic_GLD[0]);
}else{
setSelectedStatus(newValue);
}
}} }}
getOptionLabel={(option) => option.label} getOptionLabel={(option) => option.label}
renderInput={(params) => ( renderInput={(params) => (
@@ -255,9 +258,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss
value={orgSelected} value={orgSelected}
inputValue={(orgSelected?.label) ? orgSelected?.label : ""} inputValue={(orgSelected?.label) ? orgSelected?.label : ""}
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null) {
setOrgSelected(newValue); setOrgSelected(newValue);
}
}} }}
renderInput={(params) => ( renderInput={(params) => (
<TextField {...params} <TextField {...params}
@@ -283,9 +284,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss
inputValue={(issueSelected?.id) ? getIssueLabel(issueSelected) : ""} inputValue={(issueSelected?.id) ? getIssueLabel(issueSelected) : ""}
getOptionLabel={(option) => getIssueLabel(option)} getOptionLabel={(option) => getIssueLabel(option)}
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null) {
setIssueSelected(newValue); setIssueSelected(newValue);
}
}} }}
renderInput={(params) => ( renderInput={(params) => (
<TextField {...params} <TextField {...params}
@@ -318,9 +317,10 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss
<Grid item sx={{ ml: 3 }}> <Grid item sx={{ ml: 3 }}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 2
- 1
src/pages/User/SearchPage/UserSearchForm.js View File

@@ -171,9 +171,10 @@ const UserSearchForm = ({ applySearch }) => {
<Grid item sx={{ ml: 3, mr: 3, mb: 3,}}> <Grid item sx={{ ml: 3, mr: 3, mb: 3,}}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 6
- 2
src/pages/User/SearchPage_Individual/UserSearchForm_Individual.js View File

@@ -17,7 +17,7 @@ import {ThemeProvider} from "@emotion/react";
const UserSearchForm_Individual = ({ applySearch }) => { const UserSearchForm_Individual = ({ applySearch }) => {


const [type, setType] = useState([]); const [type, setType] = useState([]);
const [accountFilter, setAccountFilter] = useState("Active");
const [accountFilter, setAccountFilter] = useState("All");


const { reset, register, handleSubmit } = useForm() const { reset, register, handleSubmit } = useForm()
const onSubmit = (data) => { const onSubmit = (data) => {
@@ -42,6 +42,7 @@ const UserSearchForm_Individual = ({ applySearch }) => {


function resetForm() { function resetForm() {
setType([]); setType([]);
setAccountFilter("All");
reset(); reset();
} }


@@ -120,6 +121,8 @@ const UserSearchForm_Individual = ({ applySearch }) => {
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null) { if (newValue !== null) {
setAccountFilter(newValue); setAccountFilter(newValue);
}else{
setAccountFilter("All");
} }
}} }}
renderInput={(params) => ( renderInput={(params) => (
@@ -150,9 +153,10 @@ const UserSearchForm_Individual = ({ applySearch }) => {
<Grid item sx={{ ml: 3, mr: 3, mb: 3 }}> <Grid item sx={{ ml: 3, mr: 3, mb: 3 }}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 4
- 1
src/pages/User/SearchPage_Organization/UserSearchForm_Organization.js View File

@@ -147,6 +147,8 @@ const UserSearchForm_Organization = ({applySearch}) => {
onChange={(event, newValue) => { onChange={(event, newValue) => {
if (newValue !== null){ if (newValue !== null){
setAccountFilter(newValue); setAccountFilter(newValue);
}else{
setAccountFilter("All");
} }
}} }}
renderInput={(params) => ( renderInput={(params) => (
@@ -177,9 +179,10 @@ const UserSearchForm_Organization = ({applySearch}) => {
<Grid item sx={{ml:3, mr:3, mb:3}}> <Grid item sx={{ml:3, mr:3, mb:3}}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 2
- 1
src/pages/pnspsUserGroupSearchPage/UserGroupSearchForm.js View File

@@ -94,9 +94,10 @@ const UserGroupSearchForm = ({ applySearch }) => {
<Grid item sx={{mr:3}}> <Grid item sx={{mr:3}}>
<Button <Button
variant="contained" variant="contained"
color="cancel"
onClick={resetForm} onClick={resetForm}
> >
Clear
Reset
</Button> </Button>
</Grid> </Grid>




+ 17
- 4
src/utils/ComboData.js View File

@@ -61,14 +61,12 @@ export const publicNoticeStatic_Creditor = [
{ key: 8, label: 'withdrawn', type: 'withdrawn' }, { key: 8, label: 'withdrawn', type: 'withdrawn' },
]; ];



export const publicNoticeStatic_GLD = [ export const publicNoticeStatic_GLD = [
{ key: 0, label: 'All', type: 'all' }, { key: 0, label: 'All', type: 'all' },
{ key: 1, label: 'Submitted', type: 'submitted' }, { key: 1, label: 'Submitted', type: 'submitted' },
{ key: 2, label: 'Reviewed', type: 'reviewed' }, { key: 2, label: 'Reviewed', type: 'reviewed' },
{ key: 3, label: 'Confirmed', type: 'confirmed' },
{ key: 3, label: 'Paid', type: 'paid' },
{ key: 4, label: 'Published', type: 'published' },
{ key: 3, label: 'Pending Publish', type: 'pendingPublish' },
{ key: 4, label: 'Pending Payment', type: 'pendingPayment' },
{ key: 5, label: 'Completed', type: 'completed' }, { key: 5, label: 'Completed', type: 'completed' },
{ key: 6, label: 'Not Accepted', type: 'notAccepted' }, { key: 6, label: 'Not Accepted', type: 'notAccepted' },
{ key: 7, label: 'Re-Submit Required', type: 'resubmit' }, { key: 7, label: 'Re-Submit Required', type: 'resubmit' },
@@ -77,6 +75,21 @@ export const publicNoticeStatic_GLD = [
]; ];




// export const publicNoticeStatic_GLD = [
// { key: 0, label: 'All', type: 'all' },
// { key: 1, label: 'Submitted', type: 'submitted' },
// { key: 2, label: 'Reviewed', type: 'reviewed' },
// { key: 3, label: 'Confirmed', type: 'confirmed' },
// { key: 3, label: 'Paid', type: 'paid' },
// { key: 4, label: 'Published', type: 'published' },
// { key: 5, label: 'Completed', type: 'completed' },
// { key: 6, label: 'Not Accepted', type: 'notAccepted' },
// { key: 7, label: 'Re-Submit Required', type: 'resubmit' },
// { key: 8, label: 'Cancelled', type: 'cancelled' },
// { key: 9, label: 'Withdrawn', type: 'withdrawn' },
// ];


export const groupTitle = [ export const groupTitle = [
{ key: 1, labelCht: 'A1 - 私人帳單', label: 'A1 - Private Bill', title: 'Private Bill', type: 'A'}, { key: 1, labelCht: 'A1 - 私人帳單', label: 'A1 - Private Bill', title: 'Private Bill', type: 'A'},
{ key: 2, labelCht: 'A2 - ???', label: 'A2 - Stock Shares', title: 'Stock Shares', type: 'A'}, { key: 2, labelCht: 'A2 - ???', label: 'A2 - Stock Shares', title: 'Stock Shares', type: 'A'},


Loading…
Cancel
Save