hc-components
Version:
基于react的通用组件库
101 lines (91 loc) • 2.66 kB
JavaScript
import Notification from 'antd/lib/notification';
import message from 'antd/lib/message';
import {fallbackRoutes} from './fallbackRoutes';
import {crud} from 'beatle';
import {Layer} from '../layers';
export function bootstrap(app, getInitData, versionKey, inters) {
message.config({
top: 51
});
crud.console = {
success: message.success,
error: (msg, err) => {
if (err) {
if (!err.catched) {
Notification.error({message: msg, description: err.message});
}
} else {
Notification.error({message: 'ApiException', description: msg});
}
}
};
function proccessData(res) {
if (res) {
const message = res.error || res.errorMessage || res.errMsg || res.message;
if (message) {
return new Error(message && JSON.stringify(message, null, 2));
} else {
return res.data || null;
}
} else {
return null;
}
}
app
.ajax
.set('beforeRequest', (ajaxOption) => {
if (ajaxOption.getMock || ajaxOption.mock) {
return Promise.resolve(ajaxOption.getMock ? ajaxOption.getMock(ajaxOption) : ajaxOption.mock);
} else {
return ajaxOption;
}
});
app
.ajax
.set('afterResponse', (res, option, xhr) => {
xhr.catch(err => {
err.catched = true;
Notification.error({message: 'ApiException', description: err.message});
});
if (inters) {
for (let key in inters) {
res = inters[key](res, app);
if (res instanceof Error) {
return res;
}
}
} else {
res = proccessData(res, app);
}
return res;
});
// fallback路由
app.route(fallbackRoutes, false);
let promise = getInitData && getInitData() || Promise.resolve({});
promise = promise.then((ret = {}) => {
const route = app.route('/');
let childRoutes;
if (ret.scenes) {
childRoutes = Layer.createLayerRoutes(ret.scenes);
route.childRoutes = childRoutes;
app.setRoutes(childRoutes, null, route);
}
return {
versionKey: versionKey,
prefix: bootstrap.getPrefix(app),
dom: document.getElementById('main')
};
});
return function ready(callback) {
promise.then(callback);
};
}
bootstrap.getPrefix = (app, name) => {
const o = window.CONFIG || {};
const prefix = o.prefix || '';
return prefix + (name ? '/' + name : '') || ((o.root || 'oa') + '/' + (name || app.appName));
};
bootstrap.getResolvePath = (app, name) => {
const resolvePath = bootstrap.getPrefix(app, name);
return resolvePath[0] === '/' ? resolvePath : '/' + resolvePath;
};