You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dashboard/src/stores/DictData.js

55 lines
1.6 KiB
JavaScript

import { makeAutoObservable, runInAction, toJS } from 'mobx';
import * as req from '../utils/request';
import { isEmpty, sortBy, objectMapper } from '../utils/commons';
const modelMapper = {
'operator': {
url: '/service-web/baseinfo/operator/test',
mapper: {
op_id: [{ key: 'key' }, { key: 'value' }],
cn_name: { key: 'label' },
en_name: { key: 'label_alias' },
},
},
'vendor': {
url: '/service-web/QueryData/GetVEIName',
mapper: {
CAV_VEI_SN: [{ key: 'key' }, { key: 'value' }],
VEI2_CompanyBN: { key: 'label' },
},
},
'creditcardbilltype': {
url: '/service-web/QueryData/GetCreditCardBillType',
mapper: {
cb_billtype: [{ key: 'key' }, { key: 'value' }, { key: 'label' }],
},
},
};
class DictData {
constructor(appStore) {
this.appStore = appStore;
makeAutoObservable(this);
}
async fetchDictData(model = '') {
const mkey = model.toLowerCase();
this[mkey] = { loading: true, dataSource: [] };
const json = await req.fetchJSON(modelMapper[mkey].url);
if (json.errcode === 0) {
runInAction(() => {
this[mkey].loading = false;
this[mkey].dataSource = objectMapper(json.result, modelMapper[mkey].mapper);
console.log({ loading: false, ...json }, model, 'DictData', toJS(this[mkey]));
});
}
return this[mkey];
}
data = {};
operator = { loading: false, dataSource: [] };
vendor = { loading: false, dataSource: [] };
creditcardbilltype = { loading: false, dataSource: [] };
}
export default DictData;