@truenewx/tnxvue2
Version:
互联网技术解决方案:Vue2扩展支持
128 lines (118 loc) • 4.14 kB
JavaScript
/**
* 基于WeUI的扩展支持
*/
import tnxvue, { build } from '../tnxvue.js';
import weui from 'weui.js';
import Button from './button/Button.vue';
import Cells from './cells/Cells.vue';
import EnumPicker from './enum-picker/EnumPicker.vue';
import FormItem from './form-item/FormItem.vue';
import FormItemError from './form-item-error/FormItemError.vue';
import FormItemGroup from './form-item-group/FormItemGroup.vue';
import Input from './input/Input.vue';
import Msg from './msg/Msg.vue';
import Picker from './picker/Picker.vue';
import SubmitForm from './submit-form/SubmitForm.vue';
export { build };
export default build('tnxvw', () => {
window.weui = weui;
const tnxvw = Object.assign({}, tnxvue, {
libs: Object.assign({}, tnxvue.libs, {weui}),
components: Object.assign({}, tnxvue.components, {
Button,
Cells,
EnumPicker,
FormItem,
FormItemError,
FormItemGroup,
Input,
Msg,
Picker,
SubmitForm,
}),
icons: {
success: 'weui-icon-success',
info: 'weui-icon-info text-info',
warning: 'weui-icon-warn text-warning',
error: 'weui-icon-warn',
},
alertInstance: null,
_closeMessage() {
if (this.alertInstance) {
this.alertInstance.hide();
this.alertInstance = null;
}
this.hideLoading();
},
alert(message, title, options) {
this._closeMessage();
if (typeof title === 'object') {
options = title;
title = options.title || '提示';
}
return new Promise((resolve) => {
let iconClass;
if (options && options.type) {
iconClass = this.icons[options.type];
delete options.type;
}
iconClass = iconClass || this.icons.info;
let content = '<div class="d-flex">'
+ '<div><i class="' + iconClass + '"></i></div>'
+ '<div style="margin-left: 4px; word-break: break-all;">' + message + '</div>'
+ '</div>';
this.alertInstance = weui.alert(content, resolve, Object.assign({}, options, {
title: title,
}));
});
},
success(message, options) {
return this.alert(message, Object.assign({}, {
title: '成功'
}, options, {
type: 'success'
}));
},
error(message, options) {
return this.alert(message, Object.assign({}, {
title: '错误'
}, options, {
type: 'error'
}));
},
toast(message, options) {
this._closeMessage();
return new Promise((resolve) => {
options = Object.assign({}, options, {
callback: resolve,
});
weui.toast(message, options);
});
},
loadingInstance: null,
showLoading(message, options) {
this._closeMessage();
this.loadingInstance = weui.loading(message, options);
},
hideLoading() {
return new Promise((resolve) => {
if (this.loadingInstance) { // 确保绝对的单例
this.loadingInstance.hide(resolve);
this.loadingInstance = null;
} else {
resolve();
}
});
},
closeLoading() {
return this.hideLoading();
},
});
tnxvw.libs.Vue.use(tnxvw);
tnxvw.app.rpc.handleOtherError = function(message) {
window.tnx._closeMessage();
weui.topTips(message);
console.error(message);
}
return tnxvw;
});