59 lines
1.0 KiB
JavaScript
59 lines
1.0 KiB
JavaScript
import {
|
|
observable,
|
|
action,
|
|
} from 'mobx';
|
|
import {
|
|
WeaForm
|
|
} from 'comsMobx';
|
|
|
|
export default class FormStore {
|
|
constructor(api) {
|
|
this.api = api;
|
|
}
|
|
|
|
@observable form = new WeaForm();
|
|
@observable loading = false;
|
|
|
|
@action fetchForm = (params = {},callback) => {
|
|
this.loading = true;
|
|
this.form = new WeaForm();
|
|
return this.api.fetchForm(params).then(datas => {
|
|
const conditions = this.getCondition(datas);
|
|
|
|
this.form.setCondition(conditions);
|
|
this.loading = false;
|
|
|
|
callback && callback(datas);
|
|
})
|
|
}
|
|
|
|
validateForm = (form) => {
|
|
return new Promise( (resolve,reject) => {
|
|
form.validateForm().then(f => {
|
|
if (f.isValid) {
|
|
resolve(true);
|
|
} else {
|
|
f.showErrors();
|
|
resolve(false);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
getCondition=(datas)=>{
|
|
let c = [];
|
|
Object.keys(datas).forEach(key=>{
|
|
if (key.includes('condition')) {
|
|
c = datas[key];
|
|
}
|
|
})
|
|
return c;
|
|
}
|
|
|
|
setFormConfig = (config)=>{
|
|
Object.keys(config).forEach(key=>{
|
|
this[key] = config[key];
|
|
})
|
|
return this;
|
|
}
|
|
} |